天天看點

Dubbo 架構介紹

Dubbo 架構介紹

官網

Dubbo 官網位址:

http://dubbo.apache.org

Dubbo 官方文檔位址:

http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
Apache Dubbo 是一款高性能、輕量級的開源Java RPC架構,它提供了三大核心能力:面向接口的遠端方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。      

Dubbo 架構介紹

節點角色說明

Dubbo 架構介紹

調用關系說明

  • 服務容器負責啟動,加載,運作服務提供者。
  • 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
  • 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
  • 注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推送變更資料給消費者。
  • 服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。
  • 服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計資料到監控中心。

Dubbo 架構特點

連通性

  • 注冊中心負責服務位址的注冊與查找,相當于目錄服務,服務提供者和消費者隻在啟動時與注冊中心互動,注冊中心不轉發請求,壓力較小
  • 監控中心負責統計各服務調用次數,調用時間等,統計先在記憶體彙總後每分鐘一次發送到監控中心伺服器,并以報表展示
  • 服務提供者向注冊中心注冊其提供的服務,并彙報調用時間到監控中心,此時間不包含網絡開銷
  • 服務消費者向注冊中心擷取服務提供者位址清單,并根據負載算法直接調用提供者,同時彙報調用時間到監控中心,此時間包含網絡開銷
  • 注冊中心,服務提供者,服務消費者三者之間均為長連接配接,監控中心除外
  • 注冊中心通過長連接配接感覺服務提供者的存在,服務提供者當機,注冊中心将立即推送事件通知消費者
  • 注冊中心和監控中心全部當機,不影響已運作的提供者和消費者,消費者在本地緩存了提供者清單
  • 注冊中心和監控中心都是可選的,服務消費者可以直連服務提供者

健壯性

  • 監控中心宕掉不影響使用,隻是丢失部分采樣資料
  • 資料庫宕掉後,注冊中心仍能通過緩存提供服務清單查詢,但不能注冊新服務
  • 注冊中心對等叢集,任意一台宕掉後,将自動切換到另一台
  • 注冊中心全部宕掉後,服務提供者和服務消費者仍能通過本地緩存通訊
  • 服務提供者無狀态,任意一台宕掉後,不影響使用
  • 服務提供者全部宕掉後,服務消費者應用将無法使用,并無限次重連等待服務提供者恢複

伸縮性

  • 注冊中心為對等叢集,可動态增加機器部署執行個體,所有用戶端将自動發現新的注冊中心
  • 服務提供者無狀态,可動态增加機器部署執行個體,注冊中心将推送新的服務提供者資訊給消費者

更新性

當服務叢集規模進一步擴大,帶動 IT 治理結構進一步更新,需要實作動态部署,進行流動計算,現有分布式服務架構不會帶來阻力。下圖是未來可能的一種架構:

Dubbo 架構介紹

Dubbo 架構介紹

特性

  • 面向接口代理的高性能 RPC 調用 :提供高性能的基于代理的遠端調用能力,服務以接口為粒度,為開發者屏蔽遠端調用底層細節。
  • 服務自動注冊與發現 :支援多種注冊中心服務,服務執行個體上下線實時感覺
  • 運作期流量排程 :内置條件、腳本等路由政策,通過配置不同的路由規則,輕松實作灰階釋出,同機房優先等功能
  • 負載均衡 :内置多種負載均衡政策,智能感覺下遊節點健康狀況,顯著減少調用延遲,提高系統吞吐量
  • 高度可擴充能力 :遵循微核心 + 插件的設計原則,所有核心能力入 Protocol、Transport、Serialization 被設計為擴充點,平等對待内置實作和第三方實作
  • 可視化的服務治理與運維 :提供豐富服務治理、運維工具:随時查詢服務中繼資料、服務健康狀态及調用統計,實時下發路由政策、調整配置參數

支援四種注冊中心

  • Zookeeper(官方推薦)
  • Redis
  • Simple
  • Multicast

繼續閱讀