dubbo对zookeeper依赖版本的问题
dubbo的2.6以前的版本引入zkclient操作zookeeper
dubbo的2.6以后的版本引入curator操作zookeeper
1.zookeeper安装
解压zookeeper之后,修conf里面的zoo_example.cfg文件名为zoo.cfg
启动bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
检查zookeeper 启动状态
[root@localhost zookeeper-3.4.14]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: standalone
dubbo版本为2.5.3时的maven配置的文件为:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!-- 源文件编码格式 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- jdk编译源码版本 -->
<jdk.compile.source.version>1.7</jdk.compile.source.version>
<!-- jdk编译目标版本 -->
<jdk.compile.target.version>1.7</jdk.compile.target.version>
<!-- springframework版本 -->
<springframe.version>4.1.6.RELEASE</springframe.version>
<!-- junit版本 -->
<junit.version>4.12</junit.version>
<!-- log4j版本 -->
<log4j.version>1.2.17</log4j.version>
<!-- dubbo版本 -->
<dubbo.version>2.5.3</dubbo.version>
<!-- zookeeper版本 -->
<zookeeper.version>3.4.6</zookeeper.version>
<!-- zkclient版本 -->
<zkclient.version>0.1</zkclient.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<!-- zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframe.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
provider.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
<dubbo:application name="demo-provider"/>
<!-- use multicast registry center to export service -->
<dubbo:registry address="zookeeper://192.168.3.20:2181"/>
<!-- 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="com.jeff.provider.DemoServiceImpl"/>
<!-- declare the service interface to be exported -->
<dubbo:service interface="com.jeff.api.DemoService" ref="demoService"/>
</beans>
提供者测试启动类
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) throws Exception {
System.setProperty("java.net.preferIPv4Stack", "true");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:provider.xml"});
context.start();
System.out.println("Provider started.");
System.in.read(); // press any key to exit
}
}
在zookeeper端可以看到注册上去的文件
[zk: localhost:2181(CONNECTED) 12] ls /dubbo
[com.jeff.api.DemoService]
dubbo消费者
comsumer.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
<dubbo:application name="demo-provider"/>
<!-- use multicast registry center to export service -->
<dubbo:registry address="zookeeper://192.168.3.20:2181"/>
<!-- use dubbo protocol to export service on port 20880 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- service implementation, as same as regular local bean -->
<!-- declare the service interface to be exported -->
<dubbo:reference interface="com.jeff.api.DemoService" id="demoService"/>
</beans>
消费者测试类
import com.jeff.api.DemoService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Consumer {
public static void main(String[] args) throws Exception {
System.setProperty("java.net.preferIPv4Stack", "true");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:consumer.xml"});
DemoService demoService = (DemoService)context.getBean("demoService");
String result = demoService.sayHello("jeff");
System.out.println("result = " + result);
context.start();
System.out.println("consumer started.");
System.in.read(); // press any key to exit
}
}