分布式服務框架 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命令輸入
編譯及測試步驟:(以下步驟全在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
