Dubbo+Zookeeper+SpringMVC整合实现分布式服务治理框架

Dubbo+Zookeeper+SpringMVC整合实现分布式服务治理框架 
  
目录 
Dubbo+Zookeeper+SpringMVC整合实现分布式服务治理框架 1 
一、分布式服务治理架构原理分析 3 
二、先决条件 5 
三、Zookeeper安装与配置 6 
3.1  Zookeeper下载与解压 6 
3.2 复制和编辑配置文件 6 
3.3 创建myid文件 7 
3.4 Zookeeper启动与停止 7 
3.5 Zookeeper命令行基本操作 8 
四、Dubbo管理界面安装与配置 10 
4.1 Dubbo管理界面下载与解压 10 
4.2 修改配置文件 10 
4.3 运行 10 
4.4 访问Dubbo管理界面 10 
五、Dubbo、Zookeeper与SpringMVC集成测试 12 
5.1 创建提供者及服务注册 12 
5.2 创建消费者及服务调用 16 



一、分布式服务治理架构原理分析 
Dubbo是主流的采用RPC方式的分布式服务治理架构之一,实现了分布式服务注册、服务治理和服务监控等功能。通常需结合开源的Zookeeper、Redis或阿里数据库来完成注册中心的功能。其基本架构及原理如图1-1所示:


 

图1-1 Dubbo实现微服务架构原理图 
节点角色说明: 
● Provider: 暴露服务的服务一个或多个提供方。 
● Consumer: 调用远程服务的服务消费方。 
● Registry: 服务注册与发现的注册中心,本文采用开源Zookeeper作为服务注册中心。 
● Monitor: 统计服务的调用次调和调用时间的监控中心。 
● Container: 服务运行容器。 
调用关系说明: 
(0)服务容器负责启动,加载,运行服务提供者。 
(1)服务提供者在启动时,向注册中心注册自己提供的服务。 
(2)服务消费者在启动时,向注册中心订阅自己所需的服务。 
(3)注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 
(4)服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 
(5)服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 
二、先决条件 
操作系统:CentOS 7.2 
JAVA环境:jdk1.7.0_67 
Web应用服务器:tomcat v7.0(自行解压安装) 
三、Zookeeper安装与配置 
本文Zookeeper部署采用由3台机器组成的集群模式,以下操作步骤在每台机器上均需执行,请注意不同机器间配置稍有变化。 
3.1  Zookeeper下载与解压 
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz 
tar –zxvf zookeeper-3.4.8.tar.gz –C . 
cd  zookeeper-3.4.8 

3.2 复制和编辑配置文件 
cp conf/zoo_sample.cfg zoo.cfg 
vi conf/zoo.cfg 

 

图3-1 
(1) 修改数据文件目录,也可采用默认值; 
(2)"server.id=host:port:port"中的第一个port是从机器(follower)连接到主机器(leader)的端口号,第二个port是进行leadership选举的端口号。本文采用集群方式部署,添加机器时增加相应新记录即可,由于Zookeeper内部存在仲裁机制,机器数最好是奇数。 
3.3 创建myid文件 
dataDir所指定的目录下创建一个文件名为myid的文件,文件中的内容只有一行,为本主机对应的id值,也就是图3-1中server.id中的id。例如:在服务器1中的myid的内容应该写入1。Zookeeper集群模式不同机器上配置的id值一定要正确,如图3-2所示。 

 

图3-2 
3.4 Zookeeper启动与停止 
①Zookeeper启动 
启动Zookeeeper,启动成功使用jps可看到名为“QuorumPeerMain”的进程,如图3-3所示。注意,与Hadoop和Spark等集群方式启动不同,Zookeeper集群启动需要在每台机器上都运行该命令: 
./bin/zkServer.sh start 

 

图3-3 
②Zookeeeper停止 
./bin/zkServer.sh stop 
3.5 Zookeeper命令行基本操作 
①连接Zookeeper命令行终端 
./bin/zkCli.sh –server 172.16.24.160:2181 

 

图3-4 
②Zookeeper增删改查基本命令 
创建命令: 
create /test ‘test’ 
查询命令: 
get /test 
修改命令: 
set /test test_new 
删除命令: 
delete /test 

 

图3-5 
四、Dubbo管理界面安装与配置 
4.1 Dubbo管理界面下载与解压 
下载Dubbo管理界面dubbo-admin-2.5.4并解压出来,见附件。 
4.2 修改配置文件 
解压后进入dubbo-admin-2.5.4\WEB-INF目录中,打开dubbo.properties文件如下配置,如图4-1所示: 

 

图4-1 
4.3 运行 
将修改好配置的dubbo-admin-2.5.4整个目标复制到Tomcat根目录的webapps下,进入Tomcat根目录执行如下命令进行启动,如图4-2所示: 

 

图4-2 
4.4 访问Dubbo管理界面 
打开浏览器,输入地址:http://172.16.24.160:8080/dubbo-admin-2.5.4/,用户名和密码均为root,参考前面dubbo.properties配置,如图4-3所示。 

 

图4-3 
五、Dubbo、Zookeeper与SpringMVC集成测试 
Dubbo、Zookeeper与SpringMVC集成测试需要编写提供者和消费者程序进行验证,下文只简述关键步骤,程序开发的细节请参考附件源代码。 
5.1 创建提供者及服务注册 
①创建Maven项目 
先开发服务提供者程序,新建Maven项目,配置pom.xml文件加入dubbo、zookeeper等jar包,如图5-1所示: 

 

图5-1 
②创建接口 
编写提供者的服务接口,如图5-2所示: 

 

图5-2 
③创建实现类 
编写服务接口的具体实现类,如图5-3所示: 

 

图5-3 
④暴露服务配置 
新建dubbo-provider.xml暴露服务配置文件,配置Zookeeper服务注册中心的IP、端口号、服务接口和接口实现类等信息,如图5-4所示: 

 

图5-4 
具体配置说明: 
● dubbo:application 标签一些属性的说明: 
(1) name 必填,当前应用名称,用于注册中心计算应用间依赖关系,注意:消费者和提供者应用名不要一样,此参数不是匹配条件,你当前项目叫什么名字就填什么,和提供者消费者角色无关。 
● dubbo:registry 标签一些属性的说明: 
(1)address必填,可以Zookeeper集群配置,地址可以多个以逗号隔开等。 
(2)check可选,注册中心不存在时,是否报错。 
(3)subscribe可选,是否向此注册中心订阅服务,如果设为false,将只注册,不订阅。 
(4)register可选,是否向此注册中心注册服务,如果设为false,将只订阅,不注册。 
(5) dynamic 可选,服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。 
● dubbo: protocol标签的一些属性说明: 
(1)name 必填,协议名称,缺省值dubbo。 
(2)port 可选,dubbo协议缺省端口为20880,rmi协议缺省端口为1099,http和hessian协议缺省端口为80 。 
● dubbo:service标签的一些属性说明: 
(1)interface必填,服务接口的路径 
(2)ref必填,引用对应的实现类的Bean的ID 
(3)registry可选,向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A。 
● bean 标签一些属性的说明: 
(1) id 是实现类的Bean的ID。 
(2)class 是实现类的引用路径。 
⑤注册服务 
编写注册服务主类Provider.java,如图5-5所示,读取并解释显露服务的配置文件dubbo-provider.xml,运行Main函数即可将上述写好的服务注册到Zookeeper注册中心上,如图5-6所示。 

 

图5-5 

 

图5-6 
5.2 创建消费者及服务调用 
①调用服务配置 
新建dubbo- consumer.xml调用服务配置文件,配置调用Zookeeper注册中心IP、端口号和提供商服务接口等信息,如图5-7所示: 

 

图5-7 
具体配置说明: 
● dubbo:application 和dubbo:registry标签属性说明同上: 
● dubbo:reference标签属性说明: 
(1)id 必填, 服务引用BeanId。 
(2)interface,必填,服务接口名,由于dubbo服务治理方式属于RPC方式,因而消费者需要明确知道服务的完整接口名方可调用。 
②调用服务 
编写调用服务主类Consumer.java,如图5-8所示,读取并解释调用服务的配置文件dubbo-consumer.xml,运行Main函数即可完成服务调用,如图5-9所示。 

 

图5-8 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值