Zookeeper使用場景

2021-09-07 04:36:05 字數 1261 閱讀 3596

分布式系統的執行是很複雜的,因為涉及到了網路通訊還有節點失效等不可控的情況。下面介紹在最傳統的master-workers模型,主要可以會遇到什麼問題,傳統方法是怎麼解決以及怎麼用zookeeper解決。

master節點管理

集群當中最重要的是master,所以一般都會設定一台master的backup。

backup會定期向master獲取meta資訊並且檢測master的存活性,一旦master掛了,backup立馬啟動,接替master的工作自己成為master,分布式的情況多種多樣,因為涉及到了網路通訊的抖動,針對下面的情況:

解決問題:

zookeeper master選舉

zookeeper會分配給註冊到它上 面的客戶端乙個編號,並且zk自己會保證這個編號的唯一性和遞增性,n多機器中只需選出編號最小的client作為master就行,並且保證這些機器的 都維護乙個一樣的meta資訊檢視,一旦master掛了,那麼這n機器中編號最小的勝任master,meta資訊是一致的。

配置檔案管理

集 群中配置檔案的更新和同步是很頻繁的,傳統的配置檔案分發都是需要把配置檔案資料分發到每台worker上,然後進行worker的reload,這種方 式是最笨的方式,結構很難維護,因為如果集群當中有可能很多種應用的配置檔案要同步,而且效率很低,集群規模一大負載很高。還有一種就是每次更新把配置文 件單獨儲存到乙個資料庫裡面,然後worker端定期pull資料,這種方式就是資料及時性得不到同步。

解決問題:

zookeeper發布與訂閱模型

發布與訂閱模型,即所謂的配置中心,顧名思義就是發布者將資料發布到zk節點上,供訂閱者動態獲取資料,實現配置資訊的集中式管理和動態更新。例如全域性的配置資訊,服務式服務框架的服務位址列表等就非常適合使用。

分布式鎖

在 一台機器上要多個程序或者多個執行緒操作同一資源比較簡單,因為可以有大量的狀態資訊或者日誌資訊提供保證,比如兩個a和b程序同時寫乙個檔案,加鎖就可以 實現。但是分布式系統怎麼辦?需要乙個三方的分配鎖的機制,幾百台worker都對同乙個網路中的檔案寫操作,怎麼協同?還有怎麼保證高效的執行?

解決問題:

zookeeper命令列工具類似於linux的shell環境,不過功能肯定不及shell啦,但是使用它我們可以簡單的對zookeeper進行訪問,資料建立,資料修改等操作.  使用 zkcli.sh -server 127.0.0.1:2181 連線到 zookeeper 服務,連線成功後,系統會輸出 zookeeper 的相關環境以及配置資訊。

命令列工具的一些簡單操作如下:

zookeeper 使用場景

比如像dubbo就是用的zookeeper的命名服務,利用的是樹形的目錄結構可以統一對配置進行動態的調整,利用的是節點變更的監聽可以在多個機器中選出leader,利用的是臨時順序編號目錄節點 ephemeral sequential 在集群重需要某個操作保持一致性和時序性的時候,利用建立節點來做獨佔...

ZooKeeper典型使用場景

zookeeper是乙個高可用的分布式資料管理與系統協調框架。基於對paxos演算法的實現,使該框架保證了分布式環境中資料的強一致性,也正是 基於這樣的特性,使得zookeeper能夠應用於很多場景。網上對zk的使用場景也有不少介紹,本文將結合作者身邊的專案例子,系統的對zk的使用場景 進行歸類介紹...

Zookeeper應用場景

zookeeper是乙個高可用的分布式資料管理與系統協調框架。基於對paxos演算法的實現,使該框架保證了分布式環境中資料的強一致性,也正是基於這樣的特性,使得zookeeper能夠應用於很多場景。網上對zk的使用場景也有不少介紹,本文將結合作者身邊的專案例子,系統的對zk的使用場景進行歸類介紹。值...