dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架。

官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm上面的几张图画得不错,完全可以当做SOA架构的学习资料

淘宝将这个项目开源出来以后,得到了不少同行的支持,包括:

当当网的扩展版本dubbox :https://github.com/dangdangdotcom/dubbox

京东的扩展版本jd-hydra: http://www.oschina.net/p/jd-hydra

不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散(参见http://www.oschina.net/news/55059/druid-1-0-9 中的评论),反到是当当网的扩展版本仍在持续发展,墙内开花墙外香。

不管如何,能在阿里、当当、京东这些大型网站正式使用的框架,总不至于差到哪里去。

本文下面的示例均基于当当的dubbox版本,由于dubbox并没向maven提交编译后的jar包,所以只能从github clone代码到本地编译得到jar包。

编译及测试步骤:(以下步骤全在windows环境中完成)

1. 本机先安装github on Windows的客户端,将在path路径中,把git.exe加进去

2. 命令行下 git clone https://github.com/dangdangdotcom/dubbox 把代码拉到本地

3. mvn install -Dmaven.test.skip=true 跳过测试编译

4. 在本机安装一个zookeeper,参考zoo.cfg如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/java/zookeeper-3.4.6/data
dataLogDir=D:/java/zookeeper-3.4.6/log
clientPort=2181
server.1=localhost:2287:3387

然后输入 bin/zkServer.cmd 启用zookeeper

5. intellij Idea中导入源码

6. 运行 \dubbox\dubbo-demo\dubbo-demo-provider\src\test\java\com\alibaba\dubbo\demo\provider\DemoProvider.java

把服务提供方跑起来,成功后,可以在ZK里,用 ls / 看下,会发现zk里多出了一个dubbo的节点,所有服务全注册在这里了

7. 运行\dubbox\dubbo-demo\dubbo-demo-consumer\src\test\java\com\alibaba\dubbo\demo\consumer\DemoConsumer.java

服务消费方调用测试,可以看console里的输出

8. 运行\dubbox\dubbo-demo\dubbo-demo-consumer\src\test\java\com\alibaba\dubbo\demo\consumer\RestClient.java

跑一下rest调用

9. 浏览器访问 http://localhost:8888/services/users/100.xml 或 http://localhost:8888/services/users/100.json

dubbox官方的示例,虽然已经很简单了,但是对于初次接触的人来讲,仍然略显复杂,下面的代码在其基础上简化了一下:

一、先定义服务接口及传输对象DTO

项目结构如下

代码:

User.java

+ View Code

UserService.java

+ View Code

UserRestService.java

+ View Code

pom.xml

 View Code

二、定义服务生产者(即:服务接口的实现方)

UserServiceImpl.java

+ View Code

UserRestServiceImpl.java

+ View Code

DemoProvider.java

+ View Code

配置文件:resources\META-INF\spring\dubbo-demo-provider.xml

 View Code

pom.xml

 View Code

测试时,运行DemoProvider中的main方法即可启动服务,所有服务注册在ZooKeeper,层次结构类似下面这样:

/dubbo/dubbo/yjmyzz.dubbo.demo.api.UserRestService/dubbo/yjmyzz.dubbo.demo.api.UserRestService/providers/dubbo/yjmyzz.dubbo.demo.api.UserRestService/configurators/dubbo/yjmyzz.dubbo.demo.api.UserService/dubbo/yjmyzz.dubbo.demo.api.UserService/providers/dubbo/yjmyzz.dubbo.demo.api.UserService/configurators

三、服务消费方

DemoConsumer.java

+ View Code

配置文件:resources\META-INF\spring\dubbo-hello-consumer.xml

 View Code

pom.xml

 View Code

其它注意事项:

dubbo构架中,zk充着“服务注册中心”的角色,所以生产者与消费者的xml配置文件中,都要配置zk地址,如果zk采用集群部署时,配置写法参考下面这样:

<dubbo:registry address="zookeeper://172.28.*.102:2181?backup=172.28.*.102:2182,172.28.*.102:2183"/>

dubbo还有一个管理界面,用于服务治理,包括启用/禁用服务,设置服务的路由规则(即:A地址的Consumer直接调用B机器的Provider,而不是由负载均衡算法分配)等等。

使用方法:将dubbo-admin这个项目编译成war包后,部署到jetty或其它兼容web server即可(当然要修改\WEB-INF\dubbo.properties里zk的地址)

部署完成后,访问管理界面时,默认用户名,密码均是root。

另外dubbo-monitor项目用于性能监控,结合监控产生的数据,再套上一些图表展示的框架,可以用图表方式直观展示各种指标。

注:官网给出的dubbo-admin采用的webx架构有点老,而且除了淘宝之外,几乎没人在用,dubbo-monitor-simple界面也比较古朴,所以社区也人对其做了扩展,详情参考另一篇博客dubbox 的各种管理和监管

2016-02-25:dubbox依赖的spring虽然升级成3.x了,但版本还是有点低,spring都已经4.x了,为了方便我fork了一份,升级成spring 4.x 同时增加了log4j2的日志组件支持,详情见:dubbox升级spring到4.x及添加log4j2支持

参考文章:

http://shiyanjun.cn/archives/341.html

http://blog.csdn.net/wilsonke/article/details/39896595

http://www.dataguru.cn/thread-464197-1-1.html

http://www.iteye.com/magazines/103

http://dangdangdotcom.github.io/dubbox/rest.html

http://dangdangdotcom.github.io/dubbox/demo.html

http://blog.csdn.net/hzzhoushaoyu/article/details/43273099

作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com

from: http://www.cnblogs.com/yjmyzz/p/dubbox-demo.html

分布式服务框架 dubbo/dubbox 入门示例相关推荐

  1. 分布式服务框架 dubbo/dubbox 入门示例(转)

    dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...

  2. 分布式服务框架Dubbo/Dubbox入门示例

    本文为转载 作者:菩提树下的杨过 出处:http://yjmyzz.cnblogs.com dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo ...

  3. 分布式服务框架 dubbo/dubbox 入门示例(2)

    dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...

  4. 分布式服务框架 dubbo/dubbox 的搭建

    安装github on Windows的客户端,即安装Github,并将在path路径中,把git.exe加进去.比如安装Github的路径为D:\Program Files\Git,则在path路径 ...

  5. 11月15日云栖精选夜读:分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?

    最近,开源社区发生了一件大事--使用最广的开源服务框架之一Dubbo低调重启维护,并且3个月连续发布了3个维护版本.这3个维护版本不仅解决了社区关心的一系列问题和需求,还让整个社区的活跃度得到了大幅提 ...

  6. 分布式服务框架Dubbo使用小结

    介绍: Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA 服务治理方案,每天为2,000+个服务提供3,000,000,0 ...

  7. 分布式服务框架——Dubbo

    1. Dubbo 概述 1.1 什么是分布式系统 <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统" 分布式系 ...

  8. 阿里分布式服务框架Dubbo的架构总结

    Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合).从服务模型的角度来看,Dubbo采用的是一种非常简单的模 ...

  9. 阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访

    专家访谈 目录(?)[-] 先来个自我介绍吧! Dubbo是什么?能做什么? Dubbo适用于哪些场景? Dubbo的设计思路是什么? Dubbo的需求和依赖情况? Dubbo的性能如何? 和淘宝HS ...

最新文章

  1. Py之gensim:gensim的简介、安装、使用方法之详细攻略
  2. 【深度学习】RetinaNet 代码完全解析
  3. 机器学习与数学分析(一)
  4. C++ vector容器中用erase函数和迭代器删除重复元素问题分析
  5. 在命令行下对ntfs分区文件夹权限的设置
  6. 中国官方要求进一步加强中资商业银行境外机构合规管理
  7. linux 内核文件操作,Linux 内核文件操作
  8. Java基础之写文件——通过缓冲流写文件(StreamOutputToFile)
  9. 拖拽图片到另一个div里
  10. 比较完整的熊猫烧香解决方案
  11. java Double去掉科学计数E
  12. HCIE课程笔记18-局域网二层技术
  13. java多线程12:阻塞队列Queue
  14. /etc/profile文件简单介绍
  15. c语言益智程序,100个经典C语言程序(益智类)(71---80)
  16. repo下载安卓源码记录
  17. 2021万向区块链黑客马拉松圆满收官
  18. html+css+js实现的图片轮播图下方配文字可变图片可点击
  19. 电化学发光分析仪常用分析方法
  20. stream.allMatch

热门文章

  1. 【Python】简单的最优算法函数创建
  2. 【Python】ime series:时间序列
  3. 华为,15万大军孤独行走在世界上
  4. 转载:谢谢原作者:块设备驱动实战基础篇一 (170行代码构建一个逻辑块设备驱动)
  5. Spring-AOP @AspectJ进阶之绑定类注解对象
  6. Oracle存储过程和自定义函数
  7. Android Design Support Library初探-更新中
  8. 杜克大学计算机科学专业,杜克大学计算机科学专业研究生留学申请条件高不高?...
  9. linux内核的中断上下文,Linux操作系统中中断上下文中的互斥
  10. java当前月份减一个月_在java编程中怎样用%表示当前月份的上一个月和下一个月...