1,什麼是Dubbo
Dubbo是阿裡巴巴在2011年開源的分布式服務架構,是服務化治理的核心架構。 Dubbo主要提供3個功能,遠端接口調用,負載均衡和容錯,服務注冊和服務發現
目前,已經是Apache的開源項目
官網:
http://dubbo.apache.org
2,Dubbo的架構
點選并拖拽以移動
3,工作細節說明(來自dubbo官網)
節點角色說明(掌握)
Provider 暴露服務的服務提供方
Consumer 調用遠端服務的服務消費方
Registry 服務注冊與發現的注冊中心
Monitor 統計服務的調用次數和調用時間的監控中心
Container 服務運作容器
調用關系說明
- 服務容器負責啟動,加載,運作服務提供者。
- 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
- 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
- 注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推送變更資料給消費者。
- 服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。
- 服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計資料到監控中心。
Dubbo 架構具有以下幾個特點
連通性
· 注冊中心負責服務位址的注冊與查找,相當于目錄服務,服務提供者和消費者隻在啟動時與注冊中心互動,注冊中心不轉發請求,壓力較小
· 監控中心負責統計各服務調用次數,調用時間等,統計先在記憶體彙總後每分鐘一次發送到監控中心伺服器,并以報表展示
· 服務提供者向注冊中心注冊其提供的服務,并彙報調用時間到監控中心,此時間不包含網絡開銷
· 服務消費者向注冊中心擷取服務提供者位址清單,并根據負載算法直接調用提供者,同時彙報調用時間到監控中心,此時間包含網絡開銷
· 注冊中心,服務提供者,服務消費者三者之間均為長連接配接,監控中心除外
· 注冊中心通過長連接配接感覺服務提供者的存在,服務提供者當機,注冊中心将立即推送事件通知消費者
· 注冊中心和監控中心全部當機,不影響已運作的提供者和消費者,消費者在本地緩存了提供者清單
· 注冊中心和監控中心都是可選的,服務消費者可以直連服務提供者
健狀性
· 監控中心宕掉不影響使用,隻是丢失部分采樣資料
· 資料庫宕掉後,注冊中心仍能通過緩存提供服務清單查詢,但不能注冊新服務
· 注冊中心對等叢集,任意一台宕掉後,将自動切換到另一台
· 注冊中心全部宕掉後,服務提供者和服務消費者仍能通過本地緩存通訊
· 服務提供者無狀态,任意一台宕掉後,不影響使用
· 服務提供者全部宕掉後,服務消費者應用将無法使用,并無限次重連等待服務提供者恢複
伸縮性
注冊中心為對等叢集,可動态增加機器部署執行個體,所有用戶端将自動發現新的注冊中心
服務提供者無狀态,可動态增加機器部署執行個體,注冊中心将推送新的服務提供者資訊給消費者