dubbo是一個遠程服務調用的分佈式框架,用於提供高性能和透明化的RPC遠程服務調用方案,以及SOA方案。dubbo是一個服務框架。算法
核心部分包括:負載均衡
1:遠程通信:提供對多種基於長鏈接的NIO框架抽象封裝,包括多種線程模型,序列化,以及「請求-相應」模式的信息交換方式。框架
2:集羣容錯:提供基於接口方法的透明遠程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集羣支持。 分佈式
3:自動發現: 基於註冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方能夠平滑增長或減小機器。ide
Dubbo的做用:性能
1:透明化的遠程方法調用,就像調用本地方法同樣調用遠程方法,只需簡單配置,沒有任何API侵入。
2:軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,下降成本,減小單點。
3:服務自動註冊與發現,再也不須要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,而且可以平滑添加或刪除服務提供者。線程
圖示說明:blog
Provider:暴露服務的服務提供方。接口
Consumer:調用遠程服務的消費方。內存
Registry:服務註冊與發現的註冊中心。
Monitor:統計服務的調用次數和調用耗時的監控中心。
Container:服務運行容器。
調用關係說明:
0、服務容器負責啓動,加載,運行服務提供者。
一、服務提供者在啓動時,向註冊中心註冊本身提供的服務。
二、服務消費者在啓動時,向註冊中心訂閱本身所需的服務。
三、註冊中心返回服務提供者列表給消費者,若是有變動,註冊中心將基於長鏈接推送變動數據給消費者。
四、服務消費者,從提供者地址列表中基於軟負載均衡算法,選一臺提供者進行調用,若是調用失敗,再選另外一臺調用。
五、服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。