分布式服务框架 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包。
?
編譯及測試步驟:(以下步驟全在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 入门示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dubbo入门示例
- 下一篇: SqlServer基础之(触发器)