Dubbo注册中心Registry之Zookeeper
Zookeeper
在dubbo提供的4种注册方式中,官方推荐使用apache开源项目 Zookeeper


以服务接口为例:
<dubbo:service interface="top.guoj.api.HelloService" ref="helloService" />
- Provider启动:在zookeeper路径/dubbo/top.guoj.api.HelloService/providers写入自己的URL地址。
- Consumer启动:订阅/dubbo/top.guoj.api.HelloService/providers目录下的URL地址,并在/dubbo/com.foo.BarService/consumers目录写入自己的URL地址。
- Monitor Center启动:订阅/dubbo/top.guoj.api.HelloService/consumers和/dubbo/top.guoj.api.HelloService/providers下的所有URL地址。
启动Provider
[zk: localhost:2181(CONNECTED) 46] ls /
[dubbo, zookeeper]
[zk: localhost:2181(CONNECTED) 47] ls /dubbo
[top.guoj.api.HelloService]
[zk: localhost:2181(CONNECTED) 48] ls /dubbo/top.guoj.api.HelloService
[configurators, providers]
[zk: localhost:2181(CONNECTED) 51] ls /dubbo/top.guoj.api.HelloService/providers
[dubbo%3A%2F%2F192.168.100.61%3A20880%2Ftop.guoj.api.HelloService%3Fanyhost%3Dtrue%26application%3Ddemo-provider%26dubbo%3D2.6.2%26generic%3Dfalse%26interface%3Dtop.guoj.api.HelloService%26methods%3DsayHello%26pid%3D8140%26side%3Dprovider%26timestamp%3D1533023619863]
启动Consumer
[zk: localhost:2181(CONNECTED) 49] ls /dubbo/top.guoj.api.HelloService
[consumers, configurators, routers, providers]
[zk: localhost:2181(CONNECTED) 50] ls /dubbo/top.guoj.api.HelloService/consumers
[consumer%3A%2F%2F192.168.100.61%2Ftop.guoj.api.HelloService%3Fapplication%3Ddubbo-consumer%26category%3Dconsumers%26check%3Dfalse%26dubbo%3D2.6.2%26interface%3Dtop.guoj.api.HelloService%26methods%3DsayHello%26pid%3D11136%26side%3Dconsumer%26timestamp%3D1533023700514]
- 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息。
- 当注册中心重启时,能自动恢复注册数据,以及订阅请求。
- 当会话过期时,能自动恢复注册数据,以及订阅请求。
- 当设置<dubbo:registry check=“false”/>时,记录失败注册和订阅请求,后台定时重试。
- 可通过<dubbo:registry username=“admin” password=“1234”/>设置zookeeper登录信息。
- 可通过<dubbo:registry group=“dubbo”/>设置zookeeper的根节点,默认是dubbo。
- 支持*号通配符<dubbo:reference group="" version=""/>,可订阅服务的所有分组和所有版本的提供者。
<dubbo:registry address="zookeeper://192.168.100.61:2181" group="test1" />
<dubbo:registry address="zookeeper://192.168.100.61:2181" group="test2" />
<bean id="helloService" class="top.guoj.provider.HelloServiceImpl" />
<dubbo:service interface="top.guoj.api.HelloService" ref="helloService" />
启动上面配置的Provider:
[zk: localhost:2181(CONNECTED) 36] ls /
[test2, zookeeper, test1]
[zk: localhost:2181(CONNECTED) 37] ls /test1/top.guoj.api.HelloService
[configurators, providers]
[zk: localhost:2181(CONNECTED) 38] ls /test2/top.guoj.api.HelloService
[configurators, providers]
[zk: localhost:2181(CONNECTED) 39] ls /test1/top.guoj.api.HelloService/providers
[dubbo%3A%2F%2F192.168.100.61%3A20880%2Ftop.guoj.api.HelloService%3Fanyhost%3Dtrue%26application%3Ddemo-provider%26dubbo%3D2.6.2%26generic%3Dfalse%26interface%3Dtop.guoj.api.HelloService%26methods%3DsayHello%26pid%3D7492%26side%3Dprovider%26timestamp%3D1533023167412]
[zk: localhost:2181(CONNECTED) 40] ls /test2/top.guoj.api.HelloService/providers
[dubbo%3A%2F%2F192.168.100.61%3A20880%2Ftop.guoj.api.HelloService%3Fanyhost%3Dtrue%26application%3Ddemo-provider%26dubbo%3D2.6.2%26generic%3Dfalse%26interface%3Dtop.guoj.api.HelloService%26methods%3DsayHello%26pid%3D7492%26side%3Dprovider%26timestamp%3D1533023167412]
客户端
支持zkclient和curator两种客户端实现。从2.2.0起默认使用zkclient。2.3.0后支持curator。
zkclient
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
dubbo.registry.client=zkclient
<dubbo:registry address="zookeeper://192.168.100.61:2181" client="zkclient" />
<dubbo:registry address="zookeeper://192.168.100.61:2181?client=zkclient"/>
curator
<dependency>
<groupId>com.netflix.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>1.1.10</version>
</dependency>
<dubbo:registry address="zookeeper://192.168.100.61:2181" client="curator" />
dubbo.registry.client=curator
<dubbo:registry address="zookeeper://192.168.100.61:2181?client=curator"/>
zookeeper单机配置
<dubbo:registry address="zookeeper://10.20.153.10:2181" />
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
zookeeper集群配置
<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />