一、前言
隨著阿里巴巴開源的分布式RPC框架Dubbo成為Apache開源卵化器項(xiàng)目,Dubbo有火了一把。在接下來的一段時(shí)間本公眾號 '技術(shù)原始積累' 將會時(shí)不時(shí)的發(fā)布一些dubbo使用與原理剖析的文章。
dubbo架構(gòu)如上圖,本文作為一個(gè)開始先講講使用dubbo搭建一個(gè)簡單的含有服務(wù)提供(Provider)挨约,服務(wù)注冊中心(Registry),服務(wù)消費(fèi)(Consumer)的分布式系統(tǒng)产雹。
二诫惭、服務(wù)注冊中心
服務(wù)注冊中心常見的有下面幾種實(shí)現(xiàn)
本文講解使用zookeeper實(shí)現(xiàn)服務(wù)注冊中心。
首先你需要在 http://zookeeper.apache.org/releases.html 下載一個(gè)zk的包洽故,并解壓贝攒,本文作者使用的是zookeeper-3.4.11這個(gè)版本
-
然后修改zookeeper-3.4.11/conf文件夾里面的zoo.cfg文件里面的dataDir為一個(gè)存在的以data結(jié)尾的文
件
image.png -
然后在zookeeper-3.4.11/bin 下運(yùn)行sh zkServer.sh start-foreground 就會啟動zk,會有下面輸出image.png
可知zk在端口2181進(jìn)行監(jiān)聽时甚。
至此服務(wù)注冊中心搭建完畢
三隘弊、服務(wù)提供與消費(fèi)
本demo使用maven聚合功能,demo目錄如下
- 其中Consumer模塊為服務(wù)消費(fèi)者
- 其中Provider模塊為服務(wù)提供者
- 其中SDK模塊是一個(gè)二方包荒适,用來存放服務(wù)提供者所有的接口梨熙,是為了代碼復(fù)用使用。
3.1 SDK模塊
里面就定義了一個(gè)接口刀诬,代碼如下:
在該模塊執(zhí)行mvn clean install 命令會按照該模塊的jar到本地倉庫咽扇。
3.2 服務(wù)提供模塊
在該模塊引入SDK模塊,其實(shí)是為了使用UserServiceBo這個(gè)接口陕壹。
然后UserServiceImpl實(shí)現(xiàn)代碼如下:
配置文件provider.xml內(nèi)容如下:
日志文件log4j.properties內(nèi)容如下:
測試類TestProvider代碼如下:
運(yùn)行上面代碼质欲,在控制臺會輸出如下:
說明該服務(wù)已經(jīng)注冊到了zk.
3.2 服務(wù)消費(fèi)模塊
首先引入SDK 二方包
配置文件consumer.xml內(nèi)如如下:
測試類代碼如下:
執(zhí)行代碼輸出如下:
說明已經(jīng)消費(fèi)到了服務(wù)提供者的服務(wù)了。
四糠馆、總結(jié)
本節(jié)作為一個(gè)引子嘶伟,簡單介紹了Dubbo架構(gòu)里面的服務(wù)提供者,消費(fèi)者又碌,服務(wù)注冊中心的簡單使用九昧。后期會在本公眾號 '技術(shù)原始積累' 的精品區(qū)下分析dubbo實(shí)現(xiàn)原理绊袋,敬請期待。