Dubbo簡介以及Zookeeper做爲註冊中心時的狀況

  • Dubbo是一個分佈式服務框架,以及SOA治理方案。(SOA只是一種架構設計模式,SOA粗暴理解:把系統按照實際業務,拆分紅剛恰好大小的、合適的、獨立部署的模塊,每一個模塊之間相互獨立。算法

  • 其功能主要包括:高性能NIO通信及多協議集成,服務動態尋址與路由,軟負載均衡與容錯,依賴分析與降級等。 它有5個節點,分別是Provider, Consumer, Registry, Monitor, Container。設計模式

    • Provider是服務提供者,
    • Consumer是服務消費者
    • Registry是服務進行註冊和被發現的註冊中心
    • Monitor是統計服務的調用次數和調用時間的監控中心
    • Container是服務運行容器。
  • 它們之間的調用關係是:緩存

    • Container負責啓動,加載而後運行Provider。
    • Provider在啓動時會向註冊中心註冊本身提供的服務。
    • Consumer在啓動時會向Registry訂閱本身所需服務,此時Registry會返回Provider地址列表給Consumer。若是地址有變動,Registry會基於長鏈接推送變動數據給Consumer。
    • Consumer會基於軟負載均衡算法選一臺提供者進行調用,若是調用失敗,則再選一臺。
    • Provider和Consumer在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到Monitor。
  • Dubbo具備4個特色,分別是連通性、j健壯性、伸縮性、以及向將來架構的升級性。架構

  • 連通性說明他們之間都存在着關係,好比說Provider,Consumer和Registry三者之間都是長鏈接;Provider,Consumer向Registry註冊服務以及訂閱服務的時間都得向Monitor彙報。負載均衡

  • 健壯性說明具備穩定性,好比說註冊中心對等集羣中的任意一臺宕掉後,將自動切換到另外一臺。就算註冊中心所有宕掉,服務者和消費者仍能夠經過本地緩存進行通信。框架

  • 伸縮性就是能夠經過增長機器部署實例進行添加新的註冊中心和服務提供者。分佈式

  • 升級性是文檔中提到的對將來架構的設想,比起目前框架它的特色是能夠實現自動部署服務的本地代理以及能夠經過訪問壓力來自動增減服務提供者。ide

Zookeeper做爲Dubbo的註冊中心時:性能

  • 服務提供者在初始化啓動時,會在Zookeeper下的Dubbo節點下的服務節點下的providers節點下的節點建立一個子節點並寫入URL,路徑爲 /dubbo/servicename/providers/ 。架構設計

  • 該路徑下的全部子節點均爲服務提供者。此時這些子節點都爲臨時節點,由於臨時節點的生命週期與客戶端會話相關,因此一旦提供者所在的機器出現故障致使提供者沒法提供服務,該臨時節點就會自動從Zookeeper刪除。

  • 此時由於服務者,註冊中心,消費者之間是長鏈接,註冊中心能感知服務者宕機,會告知消費者。而監控中心是Dubbo服務治理體系中重要的一部分,它須要知道全部的服務提供者和消費者的變化狀況 。

  • 因此它在啓動時會在服務節點上註冊一個watcher來監聽子節點變化,路徑爲 /dubbo/servicename/ ,因此它也能感知服務提供者的宕機。服務消費者的節點建立過程和提供者是同樣的,並且也是臨時結點。

  • Zookeeper的節點結構設計,它以服務名和類型,也就是 /dubbo/servicename/類型 做爲節點路徑,符合Dubbo訂閱和通知的需求,保證了以服務爲粒度的變動通知,通知範圍易於控制。因此即便服務提供者和消費者頻繁變動,對Zookeeper的性能也不會形成多大影響。

相關文章
相關標籤/搜索