导语:Dubbo是阿里巴巴的一个分布式服务的开源框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

  参考网站:http://dubbo.io/
1.dubbo-admin管理平台搭建(对消费者和生产者进行管理) zookeeper---服务注册中心
部署dubbo-admin:
软件下载:链接: http://pan.baidu.com/s/1midNOMk 密码: f2yy
1.安装jdk
2.安装tomcat
3.将dubbo-admin工程在tomcat上运行起来(要先运行zookeeper)
下载dubbo-admin包(dubbo-admin-2.5.4-SNAPSHOT.war)
找到 tomcat安装路径下的 .\webapps\ROOT目录,然后清空里面的所有文件
将dubbo-admin包(dubbo-admin-2.5.4-SNAPSHOT.war)解压到此文件中
在解压的文件中找到\WEB-INF文件夹下的dubbo.properties文件,然后进行配置,默认属性配置如下:
  1. dubbo.registry.address=zookeeper://127.0.0.1:2181
  2. dubbo.admin.root.password=root
  3. dubbo.admin.guest.password=guest
然后启动tomcat(zookeeper已启动,此步tomcat要访问zookeeper,如果zk没有启动,tomcat会一直等待其启动)。在浏览器中输入localhost:8080,进入监控中心的管理界面(默认管理员账户密码为:root,root)
linux命令:
#清空ROOT里面的所有文件
yum install –y unzip
rm –rf /usr/local/tomcat/webapp/ROOT/* unzip dubbo-admin-2.5.4.war –d /usr/local/tomcat/webapp/ROOT
启动tomcat:./usr/local/tomcat/bin/startup.sh
安装zookeeper:(注意:zookeeper集群超过半数以上的机器挂掉,集群不可以,如:2n+1台server,只要有n+1台就可以使用。也就是你说的少于一半集群就无效了)
mkdir /home/lgp :创建包用于存放 zookeeper cp –rf zookeeper-3.4.6.tar.gz /home/lgp cd /home/lgp tar -xzvf zookeeper-3.4.6.tar.gz cd zookeeper-3.4.6/conf/ mv zoo_sample.cfg zoo.cfg vi zoo.cfg :参考详情
server.X=A:B:C # 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 这里的x是一个数字,与myid文件中的id是一致的。
单机版可以不用配置server.X=A:B:C
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/xudan/zookeeper-3.4.6/data #myid文件存放的路径
dataLogDir=/home/xudan/zookeeper-3.4.6/logs #日志存放路径
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=Master:2555:3555
server.2=Slave1:2556:3556
server.3=Slave2:2557:3557
 
cd ..
mkdir data
mkdir logs
touch /data/myid
echo 1 > /home/lgp/ zookeeper-3.4.6/data/myid //设置myid的值为1
   vi /etc/hosts //设置host

 
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 root
127.0.0.1 localhost
192.168.1.63 Master
192.168.1.53 Slave1
192.168.1.54 Slave2

 
b、集群(把单台zookeeper的配置copy到其他机器上,改下hosts和对应的myid,根据zoo.cfg的配置)
复制:对应的机器创建 /home/lgp
yum -y install openssh-clients

修改对应 myid ,etc/hosts

scp /home/lgp/zookeeper-3.4.6 192.168.1.81:/home/lgp //跨机器复制

启动服务:
service iptables stop:分别关闭对应机器的 iptables
cd /home/lgp/zookeeper-3.4.6/bin
./bin/zkServer.sh start :开启zookeeper
./bin/zkServer.sh status :状态查询
./bin/zkServer.sh stop :关闭zookeeper

2、dubbo整合Zookeeper
cd /usr/local/tomcat/webapp/ROOT/WEB-INF
vi dubbo.properties

dubbo.registry.address=zookeeper://192.168.1.63:2181?backup=192.168.1.53:2181,192.168.1.54:2181 //backup是配合zookeeper挂掉后的替代
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest

 
最后,先起zookeeper在启动tomcat
4.登录dubbo(账号密码都是:root)
 
2.zookeeper注册中心的配置安装(service在zookeeper上注册运行)
 
3.dubbo项目整合SpringMVC(maven)
1、下载jar:
maven导入所需jar包:dubbo、zookeeper、zkclient
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>

<!-- Zookeeper 用于分布式服务管理 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.3</version>
</dependency>
<!-- Zookeeper 用于分布式服务管理 end -->

2、eclipse配置dubbo.xsd,解决标签不识别的问题
    百度云盘:https://pan.baidu.com/s/1nuIKgMd
3、在.properties配置zookeeper的注册地址
dubbo.registry.address=192.168.1.72:2181\,192.168.1.73:2182\,192.168.1.74:2183
4、service提供服务:spring-dubbo-provider.xml(生产者)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns: dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<dubbo:application name="guduo-service-user" />

<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" />
  <!—本机 -->
<dubbo:protocol name="dubbo" port="20823" />
<!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 -->
<dubbo:monitor protocol="registry"/>
<!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 -->
<dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" />
<!-- 服务接口 -->
<dubbo:service retries="0" interface="com.guduo.service.system.UserReportService" ref="userReportService" />
<dubbo:service retries="0" interface="com.guduo.service.system.UserSuggestionService" ref="userSuggestionService" />
</beans>

  spring-context.xml引入spring-dubbo-provider.xml
5、consumer注册服务:dubbo-consumer.xml(消费者)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="guduo-web-publish" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<!-- 注册中心地址 -->
<dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" />
<!-- 用户服务接口 -->
<dubbo:reference interface="com.guduo.service.user.PmsActionService" id="pmsActionService" check="false"/>
<dubbo:reference interface="com.guduo.service.user.PmsMenuService" id="pmsMenuService" check="false"/>
</beans>

 
4、开发阶段,启动Dubbo服务
  建议放在"src/test"目录下面
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
*
* @描述: 启动Dubbo服务用的MainClass.
* @作者: 刘广平
* @创建时间: 2016-9-5,下午9:47:55 .
* @版本: 1.0 .
*/
public class DubboProvider {

private static final Log log = LogFactory.getLog(DubboProvider.class);

public static void main(String[] args) {
try {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
context.start();
} catch (Exception e) {
log.error("== DubboProvider context start error:",e);
}
synchronized (DubboProvider.class) {
while (true) {
try {
DubboProvider.class.wait();
} catch (InterruptedException e) {
log.error("== synchronized error:",e);
}
}
}
}
}

最新文章

  1. c#操作MangoDB 之MangoDB CSharp Driver驱动详解
  2. DB2数据库中SQL语句中使用or和and的关键字的时候注意事项
  3. 简单的将内容加入到drupal的主页面
  4. 跟我学 NHibernate (二)
  5. USACO Section 2.3 奶牛家谱 Cow Pedigrees
  6. Semi-definite programming优化工具
  7. Android 自定义控件 EditText输入框两边加减按钮Button
  8. SQL学习笔记——SQL中的数据查询语句汇总
  9. vmware重装系统后虚拟机实例文件*.vmdk重用
  10. Cocoapod安装使用
  11. 一篇入门的php Class 文章
  12. Python 显示LinkedIn用户作业
  13. android Instrumentoation 问答
  14. TransactionTemplate编程式事务管理方式的进阶使用---自定义拓展模板类
  15. Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
  16. 从外面更新unity需要用的题库
  17. WPF触发器(Trigger) - DataTrigger
  18. Codeforces 269C Flawed Flow (看题解)
  19. JS中的的&quot;闭包&quot;?深入Javascript之this
  20. [SoapUI] How to create a random UUID in each Request&#39;s Headers

热门文章

  1. PHP array_unique
  2. 不吹不黑也不撕,我们就简简单单谈谈Vue
  3. [NOIp2017] luogu P3952 时间复杂度
  4. [BZOJ2724] 蒲公英
  5. 利用window10的Linux子系统实现docker的安装使用
  6. 如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
  7. .Net Core 3.0 IdentityServer4 快速入门02
  8. Uipath 浏览器页面最大化和最小化
  9. 后缀数组(SA)
  10. 模块基础 day15