Dubbo入門
Dubbo的架構如下圖:
01.dubbo-architecture.png
節(jié)點角色說明
節(jié)點 | 角色說明 |
---|---|
Provider |
暴露服務的服務提供方 |
Consumer |
調用遠程服務的服務消費方 |
Registry |
服務注冊與發(fā)現(xiàn)的注冊中心 |
Monitor |
統(tǒng)計服務的調用次數(shù)和調用時間的監(jiān)控中心 |
Container |
服務運行容器 |
調用關系說明
- 服務容器負責啟動猜憎,加載贴彼,運行服務提供者。
- 服務提供者在啟動時窍育,向注冊中心注冊自己提供的服務卡睦。
- 服務消費者在啟動時,向注冊中心訂閱自己所需的服務漱抓。
- 注冊中心返回服務提供者地址列表給消費者表锻,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者乞娄。
- 服務消費者瞬逊,從提供者地址列表中,基于軟負載均衡算法仪或,選一臺提供者進行調用确镊,如果調用失敗,再選另一臺調用范删。
- 服務消費者和提供者蕾域,在內存中累計調用次數(shù)和調用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心到旦。
連通性
- <u>注冊中心負責服務地址的注冊與查找旨巷,相當于目錄服務</u>,服務提供者和消費者只在啟動時與注冊中心交互添忘,注冊中心不轉發(fā)請求采呐,壓力較小昔汉;
- 監(jiān)控中心負責統(tǒng)計各服務調用次數(shù)懈万,調用時間等,統(tǒng)計先在內存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務器靶病,并以報表展示会通;
- 服務提供者向注冊中心注冊其提供的服務,并匯報調用時間到監(jiān)控中心娄周,此時間不包含網(wǎng)絡開銷涕侈;
- 服務消費者向注冊中心獲取服務提供者地址列表,并根據(jù)負載算法直接調用提供者煤辨,同時匯報調用時間到監(jiān)控中心裳涛,此時間包含網(wǎng)絡開銷木张;
- <u>注冊中心,服務提供者端三,服務消費者三者之間均為長連接</u>舷礼,監(jiān)控中心除外;
- 注冊中心通過長連接感知服務提供者的存在郊闯,服務提供者宕機妻献,注冊中心將立即推送事件通知消費者;
- <u>注冊中心和監(jiān)控中心全部宕機团赁,不影響已運行的提供者和消費者</u>育拨,消費者在本地緩存了提供者列表;
- 注冊中心和監(jiān)控中心都是可選的欢摄,服務消費者可以直連服務提供者熬丧。
健壯性
- 監(jiān)控中心宕掉不影響使用,只是丟失部分采樣數(shù)據(jù)怀挠;
- 數(shù)據(jù)庫宕掉后析蝴,注冊中心仍能通過緩存提供服務列表查詢,但不能注冊新服務唆香;
- 注冊中心對等集群嫌变,任意一臺宕掉后,將自動切換到另一臺躬它;
- 注冊中心全部宕掉后腾啥,服務提供者和服務消費者仍能通過本地緩存通訊;
- 服務提供者無狀態(tài)冯吓,任意一臺宕掉后倘待,不影響使用;
- 服務提供者全部宕掉后组贺,服務消費者應用將無法使用凸舵,并無限次重連等待服務提供者恢復。
伸縮性
- 注冊中心為對等集群失尖,可動態(tài)增加機器部署實例啊奄,所有客戶端將自動發(fā)現(xiàn)新的注冊中心;
- 服務提供者無狀態(tài)掀潮,可動態(tài)增加機器部署實例菇夸,注冊中心將推送新的服務提供者信息給消費者。
配置
Dubbo的配置有四種:XML配置仪吧、Java API配置庄新、注解配置、動態(tài)配置中心。
Dubbo注冊中心
Dubbo支持四種注冊中心:
Dubbo支持四種注冊中心:
-
Multicast
注冊中心择诈。Multicast
注冊中心不需要啟動任何中心節(jié)點械蹋,只要廣播地址一樣,就可以互相發(fā)現(xiàn)羞芍。 -
Zookeeper
注冊中心哗戈。Zookeeper
是一個樹型的目錄服務,支持變更推送涩金,適合作為 Dubbo服務的注冊中心谱醇,工業(yè)強度較高暇仲,推薦用于生產(chǎn)環(huán)境步做。
使用Zookeeper
注冊中心的流程:
服務提供者啟動時: 向/dubbo/com.foo.BarService/providers
目錄下寫入自己的URL地址;
服務消費者啟動時: 訂閱/dubbo/com.foo.BarService/providers
目錄下的提供者URL地址奈附。并向/dubbo/com.foo.BarService/consumers
目錄下寫入自己的URL地址全度;
監(jiān)控中心啟動時: 訂閱/dubbo/com.foo.BarService目錄下的所有提供者和消費者URL地址。 -
Redis
注冊中心斥滤。主Key為服務名和類型将鸵,Map中的Key為URL地址,Map中的Value為過期時間佑颇。 - Simple注冊中心顶掉。Simple注冊中心本身就是一個普通的Dubbo服務,可以減少第三方依賴挑胸,使整體通訊方式一致痒筒。