Dubbo注册中心Registry之Zookeeper

Zookeeper

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

以服务接口为例:

<dubbo:service interface="top.guoj.api.HelloService" ref="helloService" />

启动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 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]

客户端

支持zkclientcurator两种客户端实现。从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" />