1.美图
官网:http://dubbo.apache.org/#!/docs/user/preface/background.md?lang=zh-cn
1.准备Zookeeper
zookeeper伪集群模式
2.dubbo安装
git clone https://github.com/apache/incubator-dubbo.git
cd incubator-dubbo
运行 dubbo-demo-provider中的com.alibaba.dubbo.demo.provider.Provider
如果使用Intellij Idea 请加上-Djava.net.preferIPv4Stack=true
Idea下
2.1 配置
2.1.1 首先要添加Zookeeper的依赖
/Users/lcc/IdeaProjects/incubator-dubbo-master/dubbo-demo/dubbo-demo-provider/pom.xml
添加
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
2.1.2 然后配置高可用zookeeper
/Users/lcc/IdeaProjects/incubator-dubbo-master/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
修改
<!-- 配置zookeeper的地址,集群地址用逗号隔开 -->
<dubbo:registry protocol="zookeeper" address="lcc:2888,lcc:4888,lcc:6888" />
这一点我入坑了,配置错误了,应该是clientPort
端口,所以配置应该是如下,不然会报错
org.apache.curator.CuratorConnectionLossException: KeeperErrorCode = Connect
正确配置
<!-- 配置zookeeper的地址,集群地址用逗号隔开 -->
<dubbo:registry protocol="zookeeper" address="lcc:2181,lcc:2182,lcc:2183" />
然后直接运行org.apache.dubbo.demo.provider.Provider#main
方法,不报错
3. 查看
lcc@lcc zookeeper$ zookeeper1/zookeeper-3.4.12/bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[cluster, controller_epoch, brokers, zookeeper, admin, isr_change_notification, dubbo, consumers, log_dir_event_notification, latest_producer_id_block, config]
[zk: localhost:2181(CONNECTED) 2] ls /dubbo
[org.apache.dubbo.demo.DemoService]
[zk: localhost:2181(CONNECTED) 3] ls /dubbo/org.apache.dubbo.demo.DemoService
[configurators, providers]
[zk: localhost:2181(CONNECTED) 4] ls /dubbo/org.apache.dubbo.demo.DemoService/configurators
[]
[zk: localhost:2181(CONNECTED) 5] ls /dubbo/org.apache.dubbo.demo.DemoService/providers
[dubbo%3A%2F%2F192.168.1.47%3A20880%2Forg.apache.dubbo.demo.DemoService%3Fanyhost%3Dtrue%26application%3Ddemo-provider%26dubbo%3D2.0.2%26generic%3Dfalse%26interface%3Dorg.apache.dubbo.demo.DemoService%26methods%3DsayHello%26pid%3D3812%26side%3Dprovider%26timestamp%3D1531798607317]
[zk: localhost:2181(CONNECTED) 6]
然后可以看到恰好是我们配置的服务
<!-- use dubbo protocol to export service on port 20880 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- service implementation, as same as regular local bean -->
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
<!-- declare the service interface to be exported -->
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/>