分布式服务框架 dubbo/dubbox 入门示例

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包,之后操作如下:

cmd命令输入

mvn install:install-file -Dfile=你的dubbo-2.8.4.jar路径\dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar

编译及测试步骤:(以下步骤全在windows环境中完成)
1.dubbo-admin控制台的安装
1.1打开dubbox的官网https://github.com/dangdangdotcom/dubbox
点击Clone or download 我们选择最原始的Download ZIP,当前的stable版本是2.8.4

1.2下载到某个文件夹下,解压文件夹

1.3解压dubbox-master.zip

1.4按住键盘shift 鼠标右击,选择命令窗口,进入maven编译 :

2.输入mvn install -Dmaven.test.skip=true

编译安装大概需要好几分钟,编译安装成功之后显示如下:

好了,到此为止,dubbox2.8.4就算是编译成功了,接下来我们要先搭建dubbox的控制台,因为可视化是我们最喜欢的模式了,

进入刚下载解压的文件夹dubbox-master\dubbo-admin\target下

找到dubbo-admin-2.8.4.war文件,因为这是一个war文件,所以我们就使用tomcat启动,没下载tomcat的请自行下载,

将刚才的dubbo-admin-2.8.4.war复制到tomcat的webapps文件夹下,

3.因为dubbo的注册中心和管理控制台是依赖zookeeper,

所以我们在测试环境下,需要启动一个zookeeper的实例,关于zookeeperwindow环境下的搭建就不赘述了,

zookeeper下载地址:  https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3-beta.tar.gz

把下载的zookeeper的文件解压到指定目录,修改conf下增加一个zoo.cfg,内容如下:

tickTime=2000
initLimit=10
syncLimit=5

#例如:D:/java/zookeeper-3.4.6/data,没data文件夹的可新建
dataDir=你的zookeeper路径/data
dataLogDir=你的zookeeper路径/log  
clientPort=2181
server.1=localhost:2287:3387

然后进入zookeeper的bin目录下,双击zkServer.cmd 启用zookeeper

4.eclipse导入:选择已经存在的maven工程(即解压的dobbox-master),导入完成后,可能你会看到很多子包一起显示了出来,这样看着不爽,改变包的显示形式,

选择package presentation,再选择第二个,刚开始可能没效果,我是在这两个不停选择才出现下面树形效果:

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

记得是选择运行java application(下面也是,运行后)所有服务全注册在这里了

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

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

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

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

  当出现下面内容,表示ok:

  

<?xml version="1.0" encoding="UTF-8" standalone="true"?>

-<user>

  <id>100</id>

  <username>username100</username>

</user>

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

<dubbo:registry address="zookeeper://172.28.*.102:2181?backup=172.28.*.102:2182,172.28.*.102:2183"/>
172.28.*.102:这里改成自己的ip地址,改成127.0.0.1即可

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支持

10.将dobbox-master部署到tomcat,然后部署运行,运行时可能会超过45秒,需要把时间调大,双击tomcat

双击Timeouts,修改Timeouts:

11.浏览器输入http://localhost:端口号/dubbo-admin/,默认用户名,密码均是root,

参考文章:

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

Dubbox 环境搭建-新(Windows下)的更多相关文章

  1. Jmeter学习一:Jmeter性能测试环境搭建(Windows下)

    最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...

  2. Jmeter性能测试环境搭建(Windows下)

    最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...

  3. 转】Nginx+tomcat集群环境搭建(Windows下)

    原博文出自于:    http://blog.csdn.net/clj198606061111/article/details/22621003       感谢! 实验环境 windows xp s ...

  4. Nginx+tomcat集群环境搭建(Windows下)

    实验环境 windows xp sp3 Nginx版本:1.5.12: 下载地址:http://nginx.org/en/download.html Tomcat版本:6.0.39 下载地址:http ...

  5. PHP.6-PHP环境搭建(Windows环境下)-LAMP

    PHP环境搭建(Windows环境下)-LAMP Windows系统上分别独立安装Apache2.PHP5.MySQL5和phpMyAdmin等几个软件.独立安装的好处是可以自由选择这些组件的具体版本 ...

  6. Python环境搭建(Windows)

    ·Python环境搭建(Windows) @ 下载Python  Python官网:https://www.python.org/  Python帮助文档下载地址:https://www.python ...

  7. Nginx 环境搭建 (windows)

    Nginx 环境搭建 (windows) 资源 # nginx在线文档和支持 For online documentation and support please refer to nginx.or ...

  8. 环境变量(windows下tomcat问题);shh连接虚拟机网络配置

    环境变量(windows下tomcat问题) 有tomcat有jdk 再配置环境变量:参考 提示:若选择“用户变量”,则本次配置的变量只对该用户有效          若选择“系统变量”,则对所有用户 ...

  9. 新公司,环境搭建,windows上的坑

    1 在windows上安装nodejs环境,node -v 后可以看到版本号 2 在windows上安装nvm管理node的版本,可以对node版本自由切换,使用5.3.0版本的node 3 在win ...

随机推荐

  1. Spring Boot 配置文件中使用变量、使用随机数

    参数引用 在application.properties中的各个参数之间可以直接通过是使用placeHolder的方式进行引用,如: book.author=Clark book.name=C++ b ...

  2. 1077 互评成绩计算 (20 分)C语言

    在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平 ...

  3. nginx配置项。

      一,用于调试进程,定位问题的配置项. (1)是否以守护进程方式运行nginx语法:daemon on | off:默认是on,daemon是脱离终端并且在后台运行的进程,off是关闭守护进程的模式 ...

  4. C语言之枚举数据类型

    枚举数据类型概述:1.枚举类型是C语言的一种构造类型.它用于声明一组命名的常数,2.当一个变量有几种可能的取值时,可以将它定义为枚举类型.3.枚举类型是由用户自定义的由多个命名枚举常量构成的类型,其声 ...

  5. Linux普通用户如何获取root权限 sudo -i

    从下图中可以知道,xiaolai这个用户连接到服务器后它没有权限,更新代码都更新不了 那么我们作为一个普通用户要获取管理员权限,怎么办呢? 输入 sudo -i 然后再输入普通用户的这个密码 获取成功 ...

  6. cogs 1440. [NOIP2013]积木大赛 贪心水题

    1440. [NOIP2013]积木大赛 ★★   输入文件:BlockNOIP2013.in   输出文件:BlockNOIP2013.out   简单对比时间限制:1 s   内存限制:128 M ...

  7. 数字金字塔 动态规划(优化版) USACO 一维dp压缩版

    1016: 1.5.1 Number Triangles 数字金字塔 时间限制: 1 Sec  内存限制: 128 MB提交: 9  解决: 8[提交] [状态] [讨论版] [命题人:外部导入] 题 ...

  8. 引用类型(C# 参考)

    C# 中有两种类型:引用类型和值类型. 引用类型的变量存储对其数据(对象)的引用,而值类型的变量直接包含其数据. 对于引用类型,两种变量可引用同一对象:因此,对一个变量执行的操作会影响另一个变量所引用 ...

  9. 前端笔记5-js1

    一.在JS中一共有6种数据类型1. String 字符串2. Number 数值3. Boolean 布尔值4. Null 空值5. Undefined 未定义6. Object 对象 其中 Stri ...

  10. html+css 知识点总结 day1(01-08)

    01  初步认识浏览器 02 浏览器内核 IE   内核:Trident,                 win10 Edge  内核:EdgeHTML Firefox(火狐浏览器)   内核:Ge ...