1. 程式人生 > >dubbo 和 zokeeper 是分別用來做什麼的?他們的關係到底是怎麼樣的?

dubbo 和 zokeeper 是分別用來做什麼的?他們的關係到底是怎麼樣的?

之前在因公司產品專案做微服務拆分時使用了dubbo和zokeeper但感覺對他們的認知還是不太清楚。所以最近重新複習看了一下。用通俗的方式些事一下(如有錯誤請指正)

zokeeper (註冊中心)主要功能是服務註冊與發現的註冊中心。是用於分散式中一致性處理的框架(建議理解為資料庫,集中儲存其他系統可呼叫),以下為zokeeper主要工作:

  1. 資料釋出訂閱,即註冊中心。

  2. 負載均衡

  3. 命名服務。zookeeper的節點結構天然支援命名服務,即把資訊集中儲存,並以樹狀管理,方便統一查閱。

  4. 分散式協調通知。協調通知實際上與釋出訂閱類似,由於引入的第三方的zookeeper,實際上對很多種協調通知做了解耦。

  5. 叢集管理與master選舉。通過上面的第二點特性,可以輕易得知叢集機器存活狀況,從而輕鬆管理叢集;通過上面第一點特性,可以做出master爭搶。

  6. 分散式鎖。實際上就是第一點特性的應用。

  7. 分散式佇列。實際上就是第三點特性的應用。

  8. 分散式的併發等待。類似於多執行緒的join問題,主任務的執行依賴於其他子任務全部執行完畢,在單機多執行緒裡可以用join,但是分散式環境下如何實現呢。利用zookeeper,可以建立一個主任務節點,旗下子任務一旦執行完畢,則在主任務節點下掛一個子任務節點,等節點數量足夠,則認為主任務可以開始執行。

 

dubbo

(遠端服務呼叫的分散式框架)主要實現應用與zokeeper等註冊中心連結呼叫的工具(類jdbc工具類),dubbo為你實現了低層中的註冊、訂閱、呼叫等功能,讓使用者專注於業務。以下為dubbo的主要工作:

0 服務容器負責啟動,載入,執行服務提供者。

1. 服務提供者(生產者)在啟動時,向註冊中心註冊自己提供的服務。

2. 服務消費者在啟動時,向註冊中心訂閱自己所需的服務。

3. 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者。

4. 服務消費者,從提供者地址列表中,基於軟負載均衡演算法,選一臺提供者進行呼叫,如果呼叫失敗,再選另一臺呼叫。

5. 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心

 

 

這麼理解的話比較簡單,把zokeeper理解為資料庫、dubbo理解為連結資料庫的jdbc ,那麼就可以理解他們的關係。

 

以上是我對dubbo與zokeeper他們關係的理解,如有不正確的希望指正。