以前在因公司產品項目作微服務拆分時使用了dubbo和zokeeper但感受對他們的認知仍是不太清楚。因此最近從新複習看了一下。用通俗的方式些事一下(若有錯誤請指正)算法
zokeeper (註冊中心)主要功能是服務註冊與發現的註冊中心。是用於分佈式中一致性處理的框架(能夠把註冊中心比喻成一個信息網站,像58同城),如下爲zokeeper主要工做:多線程
數據發佈訂閱,即註冊中心。 (如發佈租房信息、查看租房信息)併發
負載均衡負載均衡
命名服務。zookeeper的節點結構自然支持命名服務,即把信息集中存儲,並以樹狀管理,方便統一查閱。框架
分佈式協調通知。協調通知實際上與發佈訂閱相似,因爲引入的第三方的zookeeper,實際上對不少種協調通知作了解耦。分佈式
集羣管理與master選舉。經過上面的第二點特性,能夠輕易得知集羣機器存活情況,從而輕鬆管理集羣;經過上面第一點特性,能夠作出master爭搶。微服務
分佈式鎖。實際上就是第一點特性的應用。工具
分佈式隊列。實際上就是第三點特性的應用。網站
分佈式的併發等待。相似於多線程的join問題,主任務的執行依賴於其餘子任務所有執行完畢,在單機多線程裏能夠用join,可是分佈式環境下如何實現呢。利用zookeeper,能夠建立一個主任務節點,旗下子任務一旦執行完畢,則在主任務節點下掛一個子任務節點,等節點數量足夠,則認爲主任務能夠開始執行。線程
dubbo (遠程服務調用的分佈式框架)主要實現應用與zokeeper等註冊中心連接調用的工具(類jdbc工具類),dubbo爲你實現了低層中的註冊、訂閱、調用等功能,讓使用者專一於業務。(能夠比喻爲信息的用戶,發佈租房信息《提供服務》,查看租房信息《服務消費者》)
如下爲dubbo的主要工做:
0 服務容器負責啓動,加載,運行服務提供者。
1. 服務提供者(生產者)在啓動時,向註冊中心註冊本身提供的服務。(發佈本身的租房信息)
2. 服務消費者在啓動時,向註冊中心訂閱本身所需的服務。(找租房信息)
3. 註冊中心返回服務提供者地址列表給消費者,若是有變動,註冊中心將基於長鏈接推送變動數據給消費者。(信息網站提供租房的地址詳情)
4. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,若是調用失敗,再選另外一臺調用。(到租房地實際看房)
5. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心(記錄看房等監控信息)
這麼理解的話比較簡單,把zokeeper理解爲信息網站、dubbo理解爲信息發佈者和消費者 ,那麼就能夠理解他們的關係。
以上是我對dubbo與zokeeper他們關係的理解,若有不正確的但願指正。