整體架構
節點角色說明
節點 | 角色說明 |
---|---|
提供者 (Provider) | 暴露服務的服務提供方 |
消費者 (Consumer) | 呼叫遠端服務的服務消費方 |
註冊中心 | 用於服務註冊與發現的註冊中心 (Registry) |
監控中心 (Monitor) | 統計服務呼叫次數和呼叫時間的監控中心 |
容器 (Container) | 服務執行容器 |
呼叫關係說明
- 服務容器負責啟動、載入和執行服務提供者。
- 服務提供者啟動時,向註冊中心註冊其提供的服務。
- 服務消費者啟動時,向註冊中心訂閱其需要的服務。
- 註冊中心將服務提供者地址列表返回給消費者。如果有變更,註冊中心將基於長連線推送變更數據給消費者。
- 服務消費者,根據軟負載均衡演算法,從提供者地址列表中選取一個提供者進行呼叫,如果呼叫失敗,再選另一個提供者進行呼叫。
- 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘發送一次統計數據到監控中心。
Dubbo 架構具有以下特性,即連通性、健壯性、可伸縮性和向未來架構的升級性。
連通性
- 註冊中心負責服務地址的註冊與查找,相當於目錄服務。服務提供者和消費者只在啟動時與註冊中心互動,註冊中心不轉發請求,壓力較小。
- 監控中心負責統計服務調用次數、調用時間等,統計數據先在記憶體彙總,每分鐘發送到監控中心伺服器,並以報表形式展現。
- 服務提供者向註冊中心註冊其提供的服務,並向監控中心回報調用時間,此時間不包含網路開銷。
- 服務消費者從註冊中心獲取服務提供者的地址列表,並根據負載均衡演算法直接調用提供者,同時向監控中心回報調用時間,此時間包含網路開銷。
- 註冊中心、服務提供者和服務消費者之間均為長連接,監控中心除外。
- 註冊中心通過長連接感知服務提供者的存在,如果服務提供者宕機,註冊中心會立即推送事件通知消費者。
- 註冊中心和監控中心均宕機,不影響正在運行的提供者和消費者。消費者會在本地快取提供者列表。
- 註冊中心和監控中心均為可選,服務消費者可以直接連接服務提供者。
穩健性 (Robustness)
- 監控中心宕機不影響使用,但會損失部分採樣數據。
- 資料庫宕機後,註冊中心仍可通過快取提供服務列表查詢,但無法註冊新服務。
- 註冊中心採對等叢集架構,任一個節點宕機,會自動切換到其他節點。
- 註冊中心完全宕機後,服務提供者和服務消費者仍然可以通过本地快取進行通訊。
- 服務提供者是無狀態的,任一個節點宕機,不影響使用。
- 服務提供者全部宕機後,服務消費者應用將不可用,並會無限重連等待服務提供者恢復。
可擴展性 (Scalability)
- 註冊中心是對等叢集,可動態增加機器部署實例,所有客戶端會自動發現新的註冊中心。
- 服務提供者是無狀態的,可動態增加機器部署實例,註冊中心會將新的服務提供者資訊推送給消費者。
可升級性 (Upgradability)
當服務叢集規模進一步擴大,IT治理架構進一步升級時,需要實現動態部署,並進行流量計算,現有的分散式服務架構不會帶來阻礙。下圖是未來可能的架構。
節點角色說明
節點 | 角色說明 |
---|---|
部署器 (Deployer) | 自動部署服務的本地代理。 |
儲存庫 (Repository) | 儲存庫用於存放服務應用程式發佈套件。 |
排程器 (Scheduler) | 排程中心根據存取壓力自動增減服務提供者。 |
管理員 (Admin) | 統一管理控制台。 |
註冊中心 | 用於服務註冊與發現的註冊中心 (Registry) |
監控中心 (Monitor) | 統計服務呼叫次數和呼叫時間的監控中心 |
最後修改日期:2023 年 1 月 2 日:增強英文文件 (#1798) (95a9f4f6c1c)