Dubbo概念
- Dubbo是一個高性能,輕量級的RPC分布式服務架構
- 提供了三核心能力:
- 面向接口的遠端方法調用(@Reference)
- 智能容錯
- 負載均衡
- Dubbo特點: 按照分層的方式來架構,可以使各個層之間解耦合
- Dubbo的角色:
- 提供方:Provider
- 消費方:Consumer
- Dubbo的提供非常簡單的服務模型,要麼是提供方提供服務,要麼是消費方消費服務
Dubbo的服務治理
- 透明遠端調用: 調用遠端方法就像調用本地方法一樣,隻需簡單配置,沒有任何API侵入
- 負載均衡機制: Client端LB,在内網替代F5等硬體負載均衡器
- 容錯重試機制: 服務Mock資料,重試次數,逾時機制
- 自動注冊發現: 注冊中心基于接口名查詢服務提供者的IP位址,可以添加和删除服務提供者
- 性能日志監控: Monitor,統計服務的調用次數和調用時間的監控中心
- 服務治理中心: 路由規則,動态配置,服務降級,通路控制,權重調整,負載均衡
Dubbo的核心功能
- Remoting: 遠端通訊,提供對多種NIO架構抽象封裝,包括"同步轉異步"和"請求-響應"模式的資訊交換方式
- Cluster: 服務架構,提供基于接口方法的透明遠端過程調用,包括:多協定支援,軟負載均衡,容錯重試,路由規則,動态配置等叢集支援
- Registry: 服務注冊中心,服務自動發現.基于注冊中心目錄服務,使服務消費方能動态地查找服務提供方,使位址透明,使服務提供方可以平滑地增加和減少機器
通信模型:
BIO : 同步并阻塞
NIO : 異步并阻塞
AIO : 異步非阻塞
通信架構 : netty
Dubbo元件角色
元件角色 | 說明 |
Provider | 暴露服務的服務提供方 |
Consumer | 調用遠端服務的服務消費方 |
Registry | 服務注冊與發現的注冊中心 |
Monitor | 統計服務調用次數和調用時間的監控中心 |
Container | 服務運作容器 |
元件調用關系說明
- 服務容器Container負責啟動,加載,運作服務提供者
- 服務提供者Provider在啟動時,向注冊中心注冊自己提供的服務
- 服務消費者Consumer在啟動時,向注冊中心訂閱自己所需的服務
- 注冊中心Registry傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推送變更資料給消費者
- 服務消費者Consumer從提供者位址清單中,基于負載均衡算法,選擇一台提供者進行調用,如果調用失敗,再選另一台進行調用
- 服務消費者Consumer和服務提供者Provider,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計資料到監控中心
Dubbo Admin管理控制台