【Dubbo】Dubbo框架簡介
1.Dubbo是什麼 Dubbo是一個分散式服務框架,以及阿里巴巴內部的SOA服務化治理方案的核心框架。其功能主要包括:高效能NIO通訊及多協議整合,服務動態定址與路由,軟負載均衡與容錯,依賴分析與降級等。
Dubbo核心部分包含: ● 遠端通訊: 提供對多種基於長連線的NIO框架抽象封裝,包括多種執行緒模型,序列化,以及“請求-響應”模式的資訊交換方式。 ● 叢集容錯: 提供基於介面方法的透明遠端過程呼叫,包括多協議支援,以及軟負載均衡,失敗容錯,地址路由,動態配置等叢集支援。 ● 自動發現: 基於註冊中心目錄服務,使服務消費方能動態的查詢服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器。 特色1:服務註冊與發現的註冊中心Registry 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者。 這個功能是應有之義 服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果呼叫失敗,再選另一臺呼叫。這個就很好很強大了, 註冊中心的這兩個特性大大提高了系統的可用性和擴充套件性。註冊中心既可以採用Multicast註冊中心,也可以整合Zookeeper,也可以採用Redis,非生產環境也可以使用一個Dubbo自己實現的Simple註冊中心,非常靈活。 特色2:統計服務的呼叫次調和呼叫時間的監控中心Monitor 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心。 監控負載,排查效能瓶頸就方便多了。簡易監控中心的安裝,請參考這裡。 特色3:使用上,採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring載入Dubbo的配置即可,Dubbo基於Spring的Schema擴充套件進行載入。 特色4:開源部分中,還包含有一個管理控制檯的實現(內部裁剪版本,開源部分主要包含:路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等管理功能) 3.Dubbo原理
(1)Provider暴露服務方稱之為“服務提供者”。 服務提供者向註冊中心註冊其提供的服務,並彙報呼叫時間到監控中心,此時間不包含網路開銷 (2)Consumer呼叫遠端服務方稱之為“服務消費者”。 服務消費者向註冊中心獲取服務提供者地址列表 , 並根據負載演算法直接呼叫提供者,同時彙報呼叫時間到監控中心,此時間包含網路開銷 (3)Registry服務註冊與發現的中心目錄服務稱之為“服務註冊中心” 註冊中心負責服務地址的註冊與查詢,相當於目錄服務,服務提供者和消費者只在啟動時與註冊中心互動,註冊中心不轉發請求,壓力較小 (4)Monitor統計服務的呼叫次調和呼叫時間的日誌服務稱之為“服務監控中心” 監控中心負責統計各服務呼叫次數,呼叫時間等,統計先在記憶體彙總後每分鐘一次傳送到監控中心伺服器,並以報表展示
呼叫關係說明: 0. 服務容器負責啟動,載入,執行服務提供者。
- 服務提供者在啟動時,向註冊中心註冊自己提供的服務。
- 服務消費者在啟動時,向註冊中心訂閱自己所需的服務。
- 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者。
- 服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果呼叫失敗,再選另一臺呼叫。
- 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心。 dubbo健壯性
(1)監控中心宕掉不影響使用,只是丟失部分取樣資料 (2)資料庫宕掉後,註冊中心仍能通過快取提供服務列表查詢,但不能註冊新服務 (3)註冊中心對等叢集,任意一臺宕掉後,將自動切換到另一臺 (4)註冊中心全部宕掉後,服務提供者和服務消費者仍能通過本地快取通訊 (5)服務提供者無狀態,任意一臺宕掉後,不影響使用 (6)服務提供者全部宕掉後,服務消費者應用將無法使用,並無限次重連等待服務提供者恢復 dubbo伸縮性
(1)註冊中心為對等叢集,可動態增加機器部署例項,所有客戶端將自動發現新的註冊中心 (2)服務提供者無狀態,可動態增加機器部署例項,註冊中心將推送新的服務提供者資訊給消費者