ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Dubbo学习笔记2:使用Zookeeper搭建服务治理中心

2020-01-13 13:53:31  阅读:356  来源: 互联网

标签:Dubbo 服务 Zookeeper 服务提供者 test com UserServiceBo 搭建


Zookeeper是Apache Hadoop的子项目,是一个树形的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,推荐生成环境使用。

下面结合上图介绍Zookeeper在服务注册与发现里面的应用:

如上图整体Zookeeper的树根Root是Dubbo,说明建立的Zookeeper分组为Dubbo,树的第二层为Service层用来表示具体的接口服务,这里为com.test.UserServiceBo接口服务,树的第三层为Type层用来区分是服务提供者,还是服务消费者,还是路由规则等,树的第四层URL是具体服务提供者或者消费者对应的机器列表或者具体的路由规则。

假设服务提供者对外提供com.test.UserServiceBo的实现类的服务,那么当服务提供者启动时候,Provider会通过ZKClient在Zookeeper服务端的/dubbo/com.test.UserServiceBo/providers目录下写入自己的URL地址。如果服务提供者有多个,那么providers下就会有多个地址,这里需要注意的是这里的树形目录不一定是二叉树,假如服务提供者有100个机器,那么providers下就会有100个节点的。

假设服务消费者需要使用com.test.UserServiceBo接口的服务,那么当服务消费者启动时候,Consumer会通过ZKClient订阅Zookeeper服务端的/dubbo/com.test.UserServiceBo/providers目录下提供的服务提供方的URL地址列表。并且在/dubbo/com.test.UserServiceBo/consumers目录下写下自己的URL地址,这里要记录服务消费者的地址是为了当服务提供者地址列表变化时候(比如新增了机器,减少了机器)时候,Zookeeper可以通知订阅该服务的订阅者。

监控中心和管理控制台在启动时候会通过ZKClient订阅Zookeeper服务端的/dubbo/com.test.UserServiceBo/目录下的内容,并通过providers和consumers子目录区分哪些是服务提供者列表,哪些是服务消费者列表,另外管理控制台还可以写入路由规则到/dubbo/com.test.UserServiceBo/routers目录,这些路由规则也会被推送到服务消费端。

当服务提供者集群中有一台机器挂了后,Zookeeper能及时通过长链断开发现该机器挂了,并会从Zookeeper注册中心服务提供者的providers目录下删除该机器,然后会通知服务消费者更新可用的服务提供者地址列表。由于zookeeper支持持久化存储,所以当zookeeper重启后,可以自动恢复服务注册信息。

Zookeeper的安装

下面使用Apache Zookeeper作为服务注册中心,首先要进行Zookeeper的搭建。

首先需要到Apache官网上下载安装包,地址为http://zookeeper.apache.org/releases.html,本文使用的是zookeeper-3.4.11版本,如下图:

 

解压该包后,如下图:

然后修改zookeeper-3.4.11/conf文件夹里面的zoo.cfg文件。

  • 设置配置项dataDir为一个存在的以data结尾的目录;
  • 设置Zookeeper的监听端口clientPort=2181
  • 设置Zookeeper心跳检查间隔tickTime=2000
  • 设置Follower服务器启动时候从Leader同步完毕数据能忍受多少个心跳时间间隔数initLimit=5

设置运行过程中Leader同步数据到Follower后,Follower回复信息到Leader的超时时间syncLimit=2,如果Leader超过syncLimit个tickTime的时间长度,还没有收到Follower响应,那么就认为这个Follower已经不在线了,如下图:

最后在zookeeper-3.4.11/bin下运行sh zkServer.sh start-foreground就会启动Zookeeper,会有下面输出:

可知Zookeeper在2181端口进行监听,至此服务注册中心搭建完毕。

Zookeeper的使用

服务提供方和调用方需要引入ZKClient的jar包才能使用访问Zookeeper服务器,需要在pom里面添加下面依赖。

<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>

Zookeeper单机配置:指定一个Zookeeper的ip作为服务注册中心。

<dubbo:registry address="zookeeper://12.22.123.101:2181" />

或者:

<dubbo:registry protocol="zookeeper" address="12.22.123.101:2181" />

其中Zookeeper指明使用Zookeeper作为服务注册中心,12.22.123.101:2181是Zookeeper的服务器地址和服务监听端口号。

Zookeeper集群配置:指定多个ip作为服务注册中心:

<dubbo:registry address="zookeeper://11.10.13.10:2181?backup=11.20.153.111:2181,11.30.
133.112:2181" />

或者:

<dubbo:registry protocol="zookeeper" address="11.10.13.10:2181,11.20.153.111:2181,11.30.
133.112:2181" /> 

另外你还可以在同一个Zookeeper服务器上划分多个分组,例如下面:

<dubbo:registry id="registry1" protocol="zookeeper" address="10.20.153.10:2181" gr
oup="registry1" />
<dubbo:registry id="registry2" protocol="zookeeper" address="10.20.153.10:2181" gro
up="registry2" />

如上代码,在同一个Zookeeper服务器上划分了两个分组,也就是会有两棵树目录,树根分别为registry1和registry2。

标签:Dubbo,服务,Zookeeper,服务提供者,test,com,UserServiceBo,搭建
来源: https://www.cnblogs.com/cnndevelop/p/12186904.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有