Dubbo zookeeper 初探

时间:2022-09-04 23:20:32

先把zookeeper在本地给安装好,

安装方法参考:http://blog.csdn.net/wxwzy738/article/details/16330253

这里的话讲述了两个工程一个工程是提供服务的,一个工程是调用服务的,因为dubbo是跟spring进行无缝连接的,故功能配置在spring的配置文件中,跟spring进行整合开发

1、工程是以maven进行构建的,使用的jar包如下:

Dubbo zookeeper 初探

2、服务提供者的工程

a、dubbo-demo-api  定义接口

  1. public interface IProcessData {
  2. public String deal(String data);
  3. }

b、dubbo-demo-provider 服务提供者

  1. public class ProcessDataImpl implements IProcessData {
  2. /*
  3. * @see com.xxx.bubbo.provider.IProcessData#deal(java.lang.String)
  4. */
  5. @Override
  6. public String deal(String data) {
  7. try {
  8. Thread.sleep(1000);
  9. } catch (InterruptedException e) {
  10. e.printStackTrace();
  11. }
  12. return "Finished:" + data;
  13. }
  14. }

c、applicationProvider.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" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  8. ">
  9. <!-- Application name -->
  10. <dubbo:application name="hello-world-app" />
  11. <!-- registry address, used for service to register itself -->
  12. <dubbo:registry address="zookeeper://127.0.0.1:2181" />
  13. <!-- expose this service through dubbo protocol, through port 20880 -->
  14. <!--
  15. <dubbo:protocol name="dubbo" port="20880" />
  16. <dubbo:protocol name="dubbo" port="9090" server="netty"
  17. client="netty" codec="dubbo" serialization="hessian2" charset="UTF-8"
  18. threadpool="fixed" threads="100" queues="0" iothreads="9" buffer="8192"
  19. accepts="1000" payload="8388608" />
  20. -->
  21. <!-- Service interface   Concurrent Control  -->
  22. <dubbo:service interface="com.huangjie.dubbo_Service.service.IProcessData"
  23. ref="demoService" executes="10" />
  24. <!-- Default Protocol -->
  25. <!--
  26. <dubbo:protocol server="netty" />
  27. -->
  28. <!-- designate implementation -->
  29. <bean id="demoService" class="com.huangjie.dubbo_Service.service.impl.ProcessDataImpl" />
  30. </beans>

d、启动服务

  1. public class DubboProviderMain {
  2. public static void main(String[] args) throws Exception {
  3. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
  4. new String[]{"applicationProvider.xml"});
  5. context.start();
  6. System.out.println("Press any key to exit.");
  7. System.in.read();
  8. }
  9. }

3、服务调用者的工程

a、调用类

  1. public class ConsumerThd implements Runnable {
  2. /*
  3. * @see java.lang.Runnable#run()
  4. */
  5. @Override
  6. public void run() {
  7. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
  8. new String[]{"applicationConsumer.xml"});
  9. context.start();
  10. IProcessData demoService = (IProcessData) context.getBean("demoService"); // get
  11. // service
  12. // invocation
  13. // proxy
  14. String hello = demoService.deal("nihao"); // do invoke!
  15. System.out.println(Thread.currentThread().getName() + " "+hello);
  16. }
  17. public static void main(String[] args) {
  18. new Thread(new ConsumerThd()).start();
  19. /**
  20. * 输出结果:
  21. * Thread-0 Finished:nihao
  22. */
  23. }
  24. }

b、applicationConsumer.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" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd
  8. ">
  9. <!-- consumer application name -->
  10. <dubbo:application name="consumer-of-helloworld-app" />
  11. <!-- registry address, used for consumer to discover services -->
  12. <dubbo:registry address="zookeeper://127.0.0.1:2181" />
  13. <dubbo:consumer timeout="5000"/>
  14. <!-- which service to consume? -->
  15. <dubbo:reference id="demoService" interface="com.huangjie.dubbo_Service.service.IProcessData" />
  16. </beans>

4、最后需要把zookeeper的服务给启动,在zookeeper安装文件夹下面的bin目录里面的zkServer.cmd给点击运行。不要关闭窗口,保持服务运行

Dubbo zookeeper 初探
这样整个调用就完成了,这样的好处是只要远程提供ip地址及端口号,以及对外调用的类,客户端就可以调用,客户端不必知道服务端的地址之类的

而且服务端可以开多个zookeeper服务,这样如果其中一个zookeeper 服务死掉了,其他服务还能正常运行

Dubbo zookeeper 初探的更多相关文章

  1. 从头开始搭建一个dubbo&plus;zookeeper平台

    本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...

  2. 通过单元测试理解spring容器以及dubbo&plus;zookeeper单元测试异常处理

    一.先说一个结论:单元测试与主项目的spring容器是隔离的,也就是说,单元测试无法访问主项目spring容器,需要自己加载spring容器. 接下来是代码实例,WEB主项目出于运行状态,单元测试中可 ...

  3. 用dubbo&plus;zookeeper&plus;spring搭建一个简单的http接口程序

    dubbo是一个分布式服务框架,是阿里巴巴开发的一个解决RPC远程调用优化的核心框架,包含负载均衡算法,能提高分布式系统的性能. zookeeper是hadoop的一个子项目,主要用来解决分布式系统的 ...

  4. Springboot 整合 Dubbo&sol;ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!   “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...

  5. 精华【分布式、微服务、云架构、dubbo&plus;zookeeper&plus;springmvc&plus;mybatis&plus;shiro&plus;redis】分布式大型互联网企业架构!

    平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis ...

  6. 分布式服务:Dubbo&plus;Zookeeper&plus;Proxy&plus;Restful 分布式架构

    分布式 分布式服务:Dubbo+Zookeeper+Proxy+Restful 分布式消息中间件:KafKa+Flume+Zookeeper 分布式缓存:Redis    分布式文件:FastDFS ...

  7. 分布式架构真正适用于大型互联网项目的架构! dubbo&plus;zookeeper&plus;springmvc&plus;mybatis&plus;shiro&plus;redis

     分类: 分布式技术(3)    目录(?)[+]   平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成D ...

  8. dubbo&plus;zookeeper&plus;jenkins从打包开始

    一.jenkins中maven构建 有如下图构建设置 解释说明: pom.xml 此处jenkins打包依赖的主要配置文件(规则) settings.xml 全局配置文件,主要用于配置maven的运行 ...

  9. Dubbo&plus;zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

随机推荐

  1. zz Must read

    http://www.opengpu.org/forum.php?mod=viewthread&tid=965&extra=page%3D1 游戏引擎剖析(Game Engine An ...

  2. 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码

     响应编码 产生原因以及解决办法: 示例: package cn.yzu; import java.io.IOException; import javax.servlet.ServletExcept ...

  3. 给ListView视图添加行号

    最后的效果如下: 更新,集成一个独立的模块而不改变源文件的方式更为稳妥. 购买地址:https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-26531 ...

  4. html5,表单与label标签的用法2

    <form action="" autocomplete="on">    <input type="submit" va ...

  5. POJ3691DNA repair

    题解: 构建出trie图,令f[i][j]表示到第i个字符走到j号节点最少需要修改的字符数,然后枚举后继节点转移即可. 代码:没写caseWA了n发... #include<cstdio> ...

  6. 关于Parse库的配置问题

    在使用Parse的一些相关服务时候,需要下载Parse的SDK,除了需要添加相应的系统框架和库的支持 AudioToolbox.framework CFNetwork.framework CoreGr ...

  7. form表单数据封装成json格式并提交给服务器

    1.jsp代码,form表单: <form action="#" id="costForm"> <input type="hidde ...

  8. linux --&gt&semi; Linux变量之&dollar;&num;&comma; &dollar;&ast;&comma; &dollar;&commat;含义

    Linux变量之$#, $*, $@含义 一.介绍 $# //是传给脚本的参数个数 $ //是脚本本身的名字 $1 //是传递给该shell脚本的第一个参数 $ //是传递给该shell脚本的第二个参 ...

  9. c&num; IPC实现本机进程之间的通信

    IPC可以实现本地进程之间通信.这种用法不是太常见,常见的替代方案是使用wcf,remoting,web service,socket(tcp/pipe/...)等其他分布式部署方案来替代进程之间的通 ...

  10. 小程序引入百度api天气预报

    先看下最终的效果(默认可以获得未来三天数据): 第一:首先准备条件(必须): 1.小程序已认证,有appID 2.必须把https://api.map.baidu.com 添加到小程序的合法域名列表中 ...