dubbo环境搭建测试

现在在搞dubbo调研,过程记录下来,备忘。

Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。这是一个开源项目,项目地址:https://github.com/alibaba/dubbo,中文文档地址目前是:http://alibaba.github.io/dubbo-doc-static/Home-zh.htm

现在搭建一个基于zookeeper为注册中心的例子,需要提前安装zookeeper。

1. 新建一个maven项目dubboTest,修改pom文件,增加以下依赖

 1     <dependencies>
 2         <dependency>
 3             <groupId>org.springframework</groupId>
 4             <artifactId>spring-context</artifactId>
 5             <version>3.2.5.RELEASE</version>
 6         </dependency>
 7 
 8         <dependency>
 9             <groupId>com.alibaba</groupId>
10             <artifactId>dubbo</artifactId>
11             <version>2.4.9</version>
12         </dependency>
13 
14         <dependency>
15             <groupId>org.apache.zookeeper</groupId>
16             <artifactId>zookeeper</artifactId>
17             <version>3.3.3</version>
18             <exclusions>
19                 <exclusion>
20                     <groupId>com.sun.jmx</groupId>
21                     <artifactId>jmxri</artifactId>
22                 </exclusion>
23                 <exclusion>
24                     <groupId>com.sun.jdmk</groupId>
25                     <artifactId>jmxtools</artifactId>
26                 </exclusion>
27                 <exclusion>
28                     <groupId>javax.jms</groupId>
29                     <artifactId>jms</artifactId>
30                 </exclusion>
31             </exclusions>
32         </dependency>
33 
34         <dependency>
35             <groupId>com.github.sgroschupf</groupId>
36             <artifactId>zkclient</artifactId>
37             <version>0.1</version>
38         </dependency>
39 
40         <dependency>
41             <groupId>com.netflix.curator</groupId>
42             <artifactId>curator-framework</artifactId>
43             <version>1.1.16</version>
44         </dependency>
45     </dependencies>

2. xml配置

在resources下创建provider.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 5        xsi:schemaLocation="http://www.springframework.org/schema/beans
 6         http://www.springframework.org/schema/beans/spring-beans.xsd
 7         http://code.alibabatech.com/schema/dubbo
 8         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 9 
10     <!-- 提供方应用信息,用于计算依赖关系 -->
11     <dubbo:application name="dubbo-test-service"  />
12 
13     <!-- 使用multicast广播注册中心暴露服务地址 -->
14     <!--  <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
15     <dubbo:registry address="zookeeper://127.0.0.1:2181" client="zkclient" />
16 
17     <!-- 用dubbo协议在20880端口暴露服务 -->
18     <dubbo:protocol name="dubbo" port="20880" />
19 
20     <!-- 声明需要暴露的服务接口 -->
21     <dubbo:service interface="com.sogou.dubbo.demo.DemoService" ref="demoService" version="1.0" />
22 
23     <!-- 和本地bean一样实现服务 -->
24     <bean id="demoService" class="com.sogou.dubbo.demo.provider.DemoServiceImpl" />
25 
26 </beans>

在resources下创建consumer.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 5        xsi:schemaLocation="http://www.springframework.org/schema/beans
 6         http://www.springframework.org/schema/beans/spring-beans.xsd
 7         http://code.alibabatech.com/schema/dubbo
 8         http://code.alibabatech.com/schema/dubbo/dubbo.xsd
 9         ">
10 
11     <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
12     <dubbo:application name="dubbo-test-consumer"  />
13 
14     <!-- 使用multicast广播注册中心暴露发现服务地址 -->
15     <!--   <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
16     <dubbo:registry address="zookeeper://127.0.0.1:2181" />
17 
18     <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
19     <dubbo:reference id="demoService" interface="com.sogou.dubbo.demo.DemoService" version="1.0" />
20 
21 </beans>

每个接口都应定义版本号version,为后续不兼容升级提供可能

3. 创建相关服务接口

新建一个DemoService接口

1 package com.sogou.dubbo.demo;
2 
3 public interface DemoService {
4 
5     String sayHello(String name);
6 }

4. 实现相关服务

实现DemoService接口

 1 package com.sogou.dubbo.demo.provider;
 2 
 3 import com.sogou.dubbo.demo.DemoService;
 4 
 5 public class DemoServiceImpl implements DemoService {
 6 
 7     @Override
 8     public String sayHello(String name) {
 9         return "Hello " + name;
10     }
11 }

5. 创建测试服务提供者和消费者

创建服务提供者:

 1 package com.sogou.dubbo.demo;
 2 
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 import java.io.IOException;
 6 
 7 public class Provider {
 8 
 9     public static void main(String[] args) throws IOException {
10         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"provider.xml"});
11         context.start();
12         System.out.println("回车键结束...");
13         System.in.read();
14     }
15 
16 }

创建消费者

 1 package com.sogou.dubbo.demo;
 2 
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 public class Consumer {
 6 
 7     public static void main(String[] args) {
 8         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"consumer.xml"});
 9         context.start();
10 
11         DemoService demoService = (DemoService) context.getBean("demoService");
12         String res = demoService.sayHello("world");
13 
14         System.out.println(res);
15     }
16     
17 }

6.测试

先启动zookeeper,然后运行provider.java启动服务,最后运行consumer.java来测试。

posted @ 2014-10-08 16:04  午后微醺  阅读(4131)  评论(0编辑  收藏  举报