javascript
Spring Boot 2.x(十五):Dubbo + Zookeeper + Dubbo Admin
Dubbo 簡介
Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的RPC實現服務的輸出和輸入功能,可以和Spring框架無縫集成。
它提供了三大核心能力:
面向接口的遠程方法調用
智能容錯和負載均衡
服務自動注冊和發現。
可以看出圖中存在著五種角色:
Provider:服務提供者
Consumer:服務消費者
Registry:服務注冊中心
Monitor:服務監控中心
Container:服務運行的容器
圖上的過程可以這么來解釋:
在容器(Container)啟動服務的提供者(Provider)
服務的提供者(Provider)將服務以接口的形式注冊到注冊中心(Registry)
服務的消費者(Consumer)向注冊中心訂閱服務
注冊中心向服務的消費者返回服務的提供者提供的服務接口(異步)
服務的消費者去調用服務的提供者(同步)
監控中心負責統計服務的調用次數和調用時間的日志服務。
這里我們采用 zookeeper 作為服務注冊中心,這里我查閱官方文檔發現 Redis 也可以作為Dubbo的注冊中心,只不過在應用中比較少見,而且官方文檔中也說明了:
如果我們想用的話,只需要把dubbo.registry.addrss的值改為redis://127.0.0.1:6379即可使用。
理論到這里,下面就讓我們來進入實戰吧~
zookeeper的安裝
這里我是在 Mac OS 環境下進行安裝,你可以在本地安裝虛擬機來完成這個操作。
首先我們需要前往官網下載安裝包。
#?0.?解壓tar?-zxvf?zookeeper-3.4.13.tar.gz
#?1.?切換到解壓后的目錄下
cd?zookeeper-3.4.13/
#?2.?建立data和logs目錄
mkdir?data
mkdir?logs
#?3.?復制zoo_sample.cfg?為?zoo.cfg
cd?conf/
cp?zoo_sample.cfg?zoo.cfg
#?4.?修改配置
vi?zoo.cfg
dataDir=剛剛新建的data目錄的絕對路徑
logDir=剛剛新建的data目錄的絕對路徑
#?5.?啟動
cd?../bin
./zkServer.sh?start
#?6.?檢測是否啟動成功
./zkServer.sh?status
實例
編寫Provider
引入我們項目需要的Maven依賴:
<!?--這里的包不要寫錯了,我試了一下阿里的starter,發現有很多問題,并沒有這個好用?--><dependency>
????<groupId>io.dubbo.springboot</groupId>
????<artifactId>spring-boot-starter-dubbo</artifactId>
????<version>1.0.0</version>
</dependency>
然后對注冊中心以及服務接口包的暴露的配置
spring.dubbo.application.name=providerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=27899
spring.dubbo.scan=indi.viyoung.dubbo.provider.service
編寫Service接口和實現類:
public?interface?TestService?{????String?test();
}
@Service
public?class?TestServiceImpl?implements?TestService?{
????@Override
????public?String?test()?{
????????return?"Hello?Wolrd";
????}
}
需要注意的是這里的Service注解必須是dubbo包下的喲,可千萬別寫錯了!
編寫Consumer
同樣要引入依賴:
<dependency>????<groupId>io.dubbo.springboot</groupId>
????<artifactId>spring-boot-starter-dubbo</artifactId>
????<version>1.0.0</version>
</dependency>
Consumer的配置的話比較少:
spring.dubbo.application.name=consumerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181
直接在Controller中引用
public?class?TestController?{????@Reference
????private?TestService?testService;
????@RequestMapping()
????public?String?hello()?{
????????return?testService.test();
????}
}
注意這里的@Reference注解不要寫錯,應該是Dubbo包下的!
然后把項目啟動后,我們訪問一下:
Nice,訪問成功!
下面,我們來學習一下Dubbo-Admin的使用
Dubbo-Admin
Dubbo-Admin之前給我的感覺就是沒有UI的樣子:
大概就長這個樣子,賊丑,但是不知道啥時候悄悄摸摸的更新了一波,變得讓顏值控也是非常滿意,而且支持jar包啟動,不用再去單獨的安裝Tomcat~
git?clone?https://github.com/apache/incubator-dubbo-ops.git
首先從Git上把這個項目拉下來,用IDEA打開:
只需要添加一個端口號的配置,然后使用左側的maven打包工具打包:
然后去dubbo-admin-server的target的目錄下使用以下命令:
?java?-jar?dubbo-admin-server-0.1.jar?>run.log?&然后打開瀏覽器,輸入localhost:7070
對比之前的UI簡直強了無數倍,而且賊方便!
具體的功能大家可以跟著操作之后去探討,這里就不再展開來說了。
今天的文章就到這里,下面宣布一個好消息:
活動通知
原定于粉絲達到一定數量后做送書活動回饋大家,由于本公號博主真愛技術佛系漲粉,無運營無套路,所以增粉速度超~級~慢~,原定目標短時間內無法達成,因此決定清明小長假過后就開啟送書活動,大家久等了!感謝大家的信任支持與相伴,順便偷個懶,下周小長假就不更新了,也祝大家假期愉快~筆芯~
掃碼關注即可參加活動。
我從沒見過一個不孤獨的人會發出耀眼的光芒
純原創技術公號
作者:Vi.Young
掃碼獲取更多干貨
?博客園:Vi的技術博客
總結
以上是生活随笔為你收集整理的Spring Boot 2.x(十五):Dubbo + Zookeeper + Dubbo Admin的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 箭头函数详解()=>{}
- 下一篇: Spring Boot 最流行的 16