為什么要使用Dubbo
隨著業(yè)務(wù)不斷增長蛇尚,為了追求更高的性能支撐業(yè)務(wù),集群的引入使得服務(wù)架構(gòu)的復(fù)雜度大大提升。龐大的集群容易出現(xiàn)各種各樣的問題:
1.過多的服務(wù)URL配置困難
2.負(fù)載均衡分配節(jié)點(diǎn)壓力過大的情況下也需要部署集群
3.服務(wù)依賴混亂糯俗,啟動順序不清晰
4.過多服務(wù)導(dǎo)致性能指標(biāo)分析難度較大饶唤,需要監(jiān)控
Dubbo是一個高性能服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案光绕,以及SOA服務(wù)治理方案女嘲,使得應(yīng)用可通過高性能RPC實(shí)現(xiàn)服務(wù)的輸出和輸入功能,和Spring框架可以無縫集成诞帐。
Dubbo的架構(gòu)
節(jié)點(diǎn)角色說明
Provider????暴露服務(wù)的服務(wù)提供方
Consumer????調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方
Registry????服務(wù)注冊與發(fā)現(xiàn)的注冊中心
Monitor????統(tǒng)計(jì)服務(wù)的調(diào)用次數(shù)和調(diào)用時間的監(jiān)控中心
Container????服務(wù)運(yùn)行容器
調(diào)用關(guān)系說明
0.服務(wù)容器負(fù)責(zé)啟動欣尼,加載,運(yùn)行服務(wù)提供者停蕉。
1.服務(wù)提供者在啟動時愕鼓,向注冊中心注冊自己提供的服務(wù)。
2.服務(wù)消費(fèi)者在啟動時慧起,向注冊中心訂閱自己所需的服務(wù)菇晃。
3.注冊中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更蚓挤,注冊中心將基于長連接推送變更數(shù)據(jù)給消費(fèi)者磺送。
4.服務(wù)消費(fèi)者驻子,從提供者地址列表中,基于軟負(fù)載均衡算法册着,選一臺提供者進(jìn)行調(diào)用拴孤,如果調(diào)用失敗,再選另一臺調(diào)用甲捏。
5.服務(wù)消費(fèi)者和提供者演熟,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心司顿。
參考:quick-start
搭建Dubbo項(xiàng)目
創(chuàng)建dubbo-server和dubbo-client Project
GitHub - yxktiming/dubbo-server
GitHub - yxktiming/dubbo-client
服務(wù)注冊緩存
多種服務(wù)
同一個服務(wù)多種協(xié)議
多注冊中心
集群負(fù)載均衡
對server進(jìn)行水平擴(kuò)容
dubbo-cluster1
dubbo-cluster2
實(shí)現(xiàn)類
yxkHelloImpl
yxkHelloImpl2
啟動
BootstrapCluster1
BootstrapCluster2