日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

apache开源项目--ZooKeeper

發(fā)布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache开源项目--ZooKeeper 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ZooKeeper是Hadoop的正式子項目,它是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護、名字服務(wù)、分布式同步、組服務(wù)等。ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。

Zookeeper是Google的Chubby一個開源的實現(xiàn).是高有效和可靠的協(xié)同工作系統(tǒng).Zookeeper能夠用來leader選舉,配置信息維護等.在一個分布式的環(huán)境中,我們需要一個Master實例或存儲一些配置信息,確保文件寫入的一致性等.Zookeeper能夠保證如下3點:

  • Watches are ordered with respect to other events, other watches, and
    asynchronous replies. The ZooKeeper client libraries ensures that
    everything is dispatched in order.

  • A client will see a watch event for a znode it is watching before seeing the new data that corresponds to that znode.

  • The order of watch events from ZooKeeper corresponds to the order of the updates as seen by the ZooKeeper service.

?

在Zookeeper中,znode是一個跟Unix文件系統(tǒng)路徑相似的節(jié)點,可以往這個節(jié)點存儲或獲取數(shù)據(jù).如果在創(chuàng)建znode時Flag設(shè)置 為EPHEMERAL,那么當(dāng)這個創(chuàng)建這個znode的節(jié)點和Zookeeper失去連接后,這個znode將不再存在在Zookeeper 里.Zookeeper使用Watcher察覺事件信息,當(dāng)客戶端接收到事件信息,比如連接超時,節(jié)點數(shù)據(jù)改變,子節(jié)點改變,可以調(diào)用相應(yīng)的行為來處理數(shù) 據(jù).Zookeeper的Wiki頁面展示了如何使用Zookeeper來處理事件通知,隊列,優(yōu)先隊列,鎖,共享鎖,可撤銷的共享鎖,兩階段提交.

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

  • ?提供搜索引擎的服務(wù)器都在Zookeeper中創(chuàng)建znode,zk.create("/search/nodes/node1",
    "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

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

  • 總服務(wù)器遍歷這些子節(jié)點,并獲取子節(jié)點的數(shù)據(jù)生成提供搜索引擎的服務(wù)器列表.

  • 當(dāng)總服務(wù)器接收到子節(jié)點改變的事件信息,重新返回第二步.

  • 總服務(wù)器在Zookeeper中創(chuàng)建節(jié)點,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);

  • 備用的總服務(wù)器監(jiān)控Zookeeper中的"/search/master"節(jié)點.當(dāng)這個znode的節(jié)點數(shù)據(jù)改變時,把自己啟動變成總服務(wù)器,并把自己的網(wǎng)絡(luò)地址數(shù)據(jù)放進這個節(jié)點.

  • web的cgi從Zookeeper中"/search/master"節(jié)點獲取總服務(wù)器的網(wǎng)絡(luò)地址數(shù)據(jù)并向其發(fā)送搜索請求.

  • web的cgi監(jiān)控Zookeeper中的"/search/master"節(jié)點,當(dāng)這個znode的節(jié)點數(shù)據(jù)改變時,從這個節(jié)點獲取總服務(wù)器的網(wǎng)絡(luò)地址數(shù)據(jù),并改變當(dāng)前的總服務(wù)器的網(wǎng)絡(luò)地址.

  • 轉(zhuǎn)載于:https://www.cnblogs.com/haore147/p/5103079.html

    總結(jié)

    以上是生活随笔為你收集整理的apache开源项目--ZooKeeper的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。