linuxx 发表于 2015-11-21 13:42:07

Dubbo zookeeper 初探

  转:http://blog.iyunv.com/u011270461/article/details/12144623
  建议参考资料:
  
  http://blog.iyunv.com/lin_fs/article/details/7395307
  http://blog.iyunv.com/goliathray/article/details/8565801
  http://zy116494718.iyunv.com/blog/1830138
  http://agapple.iyunv.com/blog/1292473
  http://www.open-open.com/news/view/1442a5c
  http://code.alibabatech.com/wiki/display/dubbo/Home
  http://code.alibabatech.com/wiki/display/dubbo/User+Guide-zh

先把zookeeper在本地给安装好,  安装方法参考:http://blog.iyunv.com/wxwzy738/article/details/16330253
  这里的话讲述了两个工程一个工程是提供服务的,一个工程是调用服务的,因为dubbo是跟spring进行无缝连接的,故功能配置在spring的配置文件中,跟spring进行整合开发
  1、工程是以maven进行构建的,使用的jar包如下:



  2、服务提供者的工程
  a、dubbo-demo-api定义接口
  

public interface IProcessData {
public String deal(String data);
}
b、dubbo-demo-provider 服务提供者  
  

public class ProcessDataImpl implements IProcessData {
/*
* @see com.xxx.bubbo.provider.IProcessData#deal(java.lang.String)
*/
@Override
public String deal(String data) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Finished:" + data;
}
}

c、applicationProvider.xml配置  
  

<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
<beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:dubbo=&quot;http://code.alibabatech.com/schema/dubbo&quot;
xsi:schemaLocation=&quot;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
&quot;>
<!-- Application name -->
<dubbo:application name=&quot;hello-world-app&quot; />
<!-- registry address, used for service to register itself -->
<dubbo:registry address=&quot;zookeeper://127.0.0.1:2181&quot; />
<!-- expose this service through dubbo protocol, through port 20880 -->
<!--
<dubbo:protocol name=&quot;dubbo&quot; port=&quot;20880&quot; />
<dubbo:protocol name=&quot;dubbo&quot; port=&quot;9090&quot; server=&quot;netty&quot;
client=&quot;netty&quot; codec=&quot;dubbo&quot; serialization=&quot;hessian2&quot; charset=&quot;UTF-8&quot;
threadpool=&quot;fixed&quot; threads=&quot;100&quot; queues=&quot;0&quot; iothreads=&quot;9&quot; buffer=&quot;8192&quot;
accepts=&quot;1000&quot; payload=&quot;8388608&quot; />
-->
<!-- Service interface   Concurrent Control-->
<dubbo:service interface=&quot;com.huangjie.dubbo_Service.service.IProcessData&quot;
ref=&quot;demoService&quot; executes=&quot;10&quot; />
<!-- Default Protocol -->
<!--
<dubbo:protocol server=&quot;netty&quot; />
-->
<!-- designate implementation -->
<bean id=&quot;demoService&quot; class=&quot;com.huangjie.dubbo_Service.service.impl.ProcessDataImpl&quot; />
</beans>

d、启动服务  
  

public class DubboProviderMain {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{&quot;applicationProvider.xml&quot;});
context.start();
System.out.println(&quot;Press any key to exit.&quot;);
System.in.read();
}
}

3、服务调用者的工程  
  a、调用类
  

public class ConsumerThd implements Runnable {
/*
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{&quot;applicationConsumer.xml&quot;});
context.start();
IProcessData demoService = (IProcessData) context.getBean(&quot;demoService&quot;); // get
// service
// invocation
// proxy
String hello = demoService.deal(&quot;nihao&quot;); // do invoke!
System.out.println(Thread.currentThread().getName() + &quot; &quot;+hello);
}
public static void main(String[] args) {
new Thread(new ConsumerThd()).start();
/**
* 输出结果:
* Thread-0 Finished:nihao
*/
}
}

b、applicationConsumer.xml配置  
  

<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
<beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:dubbo=&quot;http://code.alibabatech.com/schema/dubbo&quot;
xsi:schemaLocation=&quot;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
&quot;>
<!-- consumer application name -->
<dubbo:application name=&quot;consumer-of-helloworld-app&quot; />
<!-- registry address, used for consumer to discover services -->
<dubbo:registry address=&quot;zookeeper://127.0.0.1:2181&quot; />
<dubbo:consumer timeout=&quot;5000&quot;/>
<!-- which service to consume? -->
<dubbo:reference id=&quot;demoService&quot; interface=&quot;com.huangjie.dubbo_Service.service.IProcessData&quot; />
</beans> 4、最后需要把zookeeper的服务给启动,在zookeeper安装文件夹下面的bin目录里面的zkServer.cmd给点击运行。不要关闭窗口,保持服务运行  


这样整个调用就完成了,这样的好处是只要远程提供ip地址及端口号,以及对外调用的类,客户端就可以调用,客户端不必知道服务端的地址之类的
  而且服务端可以开多个zookeeper服务,这样如果其中一个zookeeper 服务死掉了,其他服务还能正常运行
  


  工程下载路径:http://download.iyunv.com/detail/wxwzy738/6553431
  
页: [1]
查看完整版本: Dubbo zookeeper 初探