分布式進階(十六)Zookeeper入門基礎

AudreyDumon 9年前發布 | 13K 次閱讀 分布式/云計算/大數據

來自: http://blog.csdn.net/sunhuaqiang1/article/details/50804334


Zookeeper入門基礎

前言

       在Zookeeper中,znode是一個跟Unix文件系統路徑相似的節點,可以往這個節點存儲或獲取數據。如果在創建znodeFlag設置為EPHEMERAL,那么當創建這個znode的節點和Zookeeper失去連接后,這個znode將不再存在在Zookeeper里,Zookeeper使用Watcher察覺事件信息。當客戶端接收到事件信息,比如連接超時、節點數據改變、子節點改變,可以調用相應的行為來處理數據。ZookeeperWiki頁面展示了如何使用Zookeeper來處理事件通知,隊列,優先隊列,鎖,共享鎖,可撤銷的共享鎖,兩階段提交。

      那么Zookeeper能作什么事情呢,簡單的例子:假設我們有20個搜索引擎的服務器(每個負責總索引中的一部分的搜索任務)和一個總服務器(負責向這20個搜索引擎的服務器發出搜索請求并合并結果集),一個備用的總服務器(負責當總服務器宕機時替換總服務器),一個webcgi(向總服務器發出搜索請求)。搜索引擎的服務器中的15個服務器提供搜索服務,5個服務器正在生成索引。這20個搜索引擎的服務器經常要讓正在提供搜索服務的服務器停止提供服務開始生成索引,或生成索引的服務器已經把索引生成完成可以搜索提供服務了。使用Zookeeper可以保證總服務器自動感知有多少提供搜索引擎的服務器并向這些服務器發出搜索請求,當總服務器宕機時自動啟用備用的總服務器。webcgi能夠自動地獲知總服務器的網絡地址變化.這些又如何做到呢?

       1.提供搜索引擎的服務器都在Zookeeper中創建znode,zk.create("/search/nodes/node1",

"hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

      2.總服務器可以從Zookeeper中獲取一個znode的子節點的列表,zk.getChildren("/search/nodes", true);

      3.總服務器遍歷這些子節點,并獲取子節點的數據生成提供搜索引擎的服務器列表.

      4.當總服務器接收到子節點改變的事件信息,重新返回第二步.

      5.總服務器在Zookeeper中創建節點,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

     6.備用的總服務器監控Zookeeper中的"/search/master"節點.當這個znode的節點數據改變時,把自己啟動變成總服務器,并把自己的網絡地址數據放進這個節點.

     7.webcgiZookeeper"/search/master"節點獲取總服務器的網絡地址數據并向其發送搜索請求.

     8.webcgi監控Zookeeper中的"/search/master"節點,當這個znode的節點數據改變時,從這個節點獲取總服務器的網絡地址數據,并改變當前的總服務器的網絡地址.

 

 

我需要運行幾個ZooKeeper?

      你運行一個zookeeper也是可以的,但是在生產環境中,你最好部署357個節點。部署的越多,可靠性就越高,當然最好是部署奇數個,偶數個不是不可以的,但是zookeeper集群是以宕機個數過半才會讓整個集群宕機的,所以奇數個集群更佳。你需要給每個zookeeper 1G左右的內存,如果可能的話,最好有獨立的磁盤。 (獨立磁盤可以確保zookeeper是高性能的。).如果你的集群負載很重,不要把ZookeeperRegionServer運行在同一臺機器上面。就像DataNodes 和 TaskTrackers一樣。

 Apache ZooKeeper入門

http://www.huomo.cn/sysapp/article-19c2e.html

 

zookeeper-web - 在線 zookeeper管理工具

http://git.oschina.net/crystony/zookeeper-web

 

ZooKeeper開發手冊中文翻譯

http://my.oschina.net/sundiontheway/blog/346498

 

使用 RMI + ZooKeeper 實現遠程調用框架

http://my.oschina.net/huangyong/blog/345164

 

zookeeper 簡單的代碼demo

http://my.oschina.net/hejiula/blog/358097

美文美圖


 本文由用戶 AudreyDumon 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!