Zookeeper實現注冊與發現


1.Zookeeper的數據模型

      (1) Zookeeper的數據模型,類似於樹形結構:

                                        

     (2) Zookeeper的每一個節點成為稱為Znode,主要用來存儲數據。

           

  1. data : 存儲數據信息。
  2. acl   : 記錄Znode的訪問權限。
  3. child : 當前節點的子節點引用。
  4. stat :包含Znode的各種元數據,事物Id,版本號等。 

     (3) Znode的引用方式是路徑引用,例如:

           /core/UserCoreService

2.Zookeeper的事件通知

      Watch相當於注冊在特定Znode上的觸發器,當該Znode中執行寫操作時,服務端會異步通知客戶端。

      具體的交互過程:

  • 客戶端調用 getData() 方法,watch參數是true。服務器接收到請求,返回節點數據,並且在對應的哈希表里插入被 Watch的Znode路徑,以及Watcher列表。
  • 當被Watch的Znode已刪除,服務端會查找哈希表,找到該Znode對應的所有Watcher,異步通知客戶端,並且刪除哈希表中對應的key-value;

3.實現注冊與發現

      (1)注冊

            提供者將自身信息(ip,port,權重等)注冊到zookeeper上。zookeeper為其創建一個Znode,該節點的data中保存提供者的信息。

      (2)發現

            消費者根據路徑參數去zookeeper中getData()自己需要調用的提供者信息,將服務注冊信息緩存到本地。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM