本文參考「如何給老婆解釋RPC」一文進行的。。。java
1.首先了解下dubbo:網絡
dubbo是一款高性能、輕量級的開源java RPC服務框架(RPC即遠程過程調用,具體解釋見:https://www.jianshu.com/p/2accc2840a1b)。它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。負載均衡
搭建簡單的RPC,及其工做原理能夠參考:https://www.jianshu.com/p/5b90a4e70783,框架
dubbo的主要核心部件:運維
Remoting: 網絡通訊框架,實現了 sync-over-async 和request-response 消息機制.async
RPC: 一個遠程過程調用的抽象,支持負載均衡、容災和集羣功能ide
Registry: 服務目錄框架用於服務的註冊和服務事件發佈和訂閱,使用Zookeeper實現服務註冊中心工具
2.dubbo的原理:性能
Provider:
暴露服務方稱之爲「服務提供者」。
Consumer:
調用遠程服務方稱之爲「服務消費者」。
Registry:
服務註冊與發現的中心目錄服務稱之爲「服務註冊中心」。
Monitor:
統計服務的調用次數和調用時間的日誌服務稱之爲「服務監控中心」。
3.
dubbo的特性:
-
面向接口代理的高性能RPC調用
提供高性能的基於代理的遠程調用能力,服務以接口爲粒度,爲開發者屏蔽遠程調用底層細節。
-
智能負載均衡
內置多種負載均衡策略,智能感知下游節點健康情況,顯著減小調用延遲,提升系統吞吐量。
-
服務自動註冊與發現
支持多種註冊中心服務,服務實例上下線實時感知。
-
高度可擴展能力
遵循微內核+插件的設計原則,全部核心能力如Protocol、Transport、Serialization被設計爲擴展點,平等對待內置實現和第三方實現。
-
運行期流量調度
內置條件、腳本等路由策略,經過配置不一樣的路由規則,輕鬆實現灰度發佈,同機房優先等功能。
-
可視化的服務治理與運維
提供豐富服務治理、運維工具:隨時查詢服務元數據、服務健康狀態及調用統計,實時下發路由策略、調整配置參數。