分布式系統之zookeeper
概念zookeeper是乙個分布式的,開放原始碼的分布式應用程式協調服務,是google的chubby乙個開源的實現,它是集群的管理者,監視著集群中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者
zookeeper提供了什麼?
1)檔案系統
2)通知機制
zookeeper檔案系統
每個子目錄項如 nameservice 都被稱作為znode,和檔案系統一樣,我們能夠自由的增加、刪除znode,在乙個znode下增加、刪除子znode,唯一的不同在於znode是可以儲存資料的。
zookeper應用
zookeeper 下 server工作狀態
每個server在工作過程中有三種狀態:
looking:當前server不知道leader是誰,正在搜尋
leading:當前server即為選舉出來的leader
following:leader已經選舉出來,當前server與之同步
資料發布/訂閱 配置管理所謂的配置中心,顧名思義就是發布者將資料發布到 zookeeper 的乙個或一系列節點上,供訂閱者進行資料訂閱,進而達到動態獲取資料的目的,實現配置資訊的集中式管理和資料的動態更新。
發布/訂閱系統一般有兩種設計模式,分別是推(push)模式和拉(pull)模式
6.zookeeper 特點
zookeeper 有哪些特點呢?具體如下:
• 順序一致性:從同一客戶端發起的事務請求,最終將會嚴格地按照順序被應用到 zookeeper 中去。
• 原子性:所有事務請求的處理結果在整個集群中所有機器上的應用情況是一致的,也就是說,要麼整個集群中所有的機器都成功應用了某乙個事務,要麼都沒有應用。
• 單一系統映像:無論客戶端連到哪乙個 zookeeper 伺服器上,其看到的服務端資料模型都是一致的。
• 可靠性:一旦一次更改請求被應用,更改的結果就會被持久化,直到被下一次更改覆蓋。
8.簡單的資料模型
zookeeper 允許分布式程序通過共享的層次結構命名空間進行相互協調,這與標準檔案系統類似。
命名空間由 zookeeper 中的資料暫存器組成,稱為 znode,這些類似於檔案和目錄。
與為儲存設計的典型檔案系統不同,zookeeper 資料儲存在記憶體中,這意味著 zookeeper 可以實現高吞吐量和低延遲。
9.可構建集群
為了保證高可用,最好是以集群形態來部署 zookeeper,這樣只要集群中大部分機器是可用的(能夠容忍一定的機器故障),那麼 zookeeper 本身仍然是可用的。
客戶端在使用 zookeeper 時,需要知道集群機器列表,通過與集群中的某一台機器建立 tcp 連線來使用服務。
客戶端使用這個 tcp 鏈結來傳送請求、獲取結果、獲取監聽事件以及傳送心跳包。如果這個連線異常斷開了,客戶端可以連線到另外的機器上。
zookeeper 官方提供的架構圖:
上圖中每乙個 server 代表乙個安裝 zookeeper 服務的伺服器。組成 zookeeper 服務的伺服器都會在記憶體中維護當前的伺服器狀態,並且每台伺服器之間都互相保持著通訊。
集群間通過 zab 協議(zookeeper atomic broadcast)來保持資料的一致性。
10.zookeeper佇列管理
兩種型別的佇列:
1、同步佇列,當乙個佇列的成員都聚齊時,這個佇列才可用,否則一直等待所有成員到達。
2、佇列按照 fifo 方式進行入隊和出隊操作。
第一類,在約定目錄下建立臨時目錄節點,監聽節點數目是否是我們要求的數目。
第二類,和分布式鎖服務中的控制時序場景基本原理一致,入列有編號,出列按編號。
11 .分布式與資料複製
zookeeper作為乙個集群提供一致的資料服務,自然,它要在所有機器間做資料複製。資料複製的好處:
1、容錯:乙個節點出錯,不致於讓整個系統停止工作,別的節點可以接管它的工作;
2、提高系統的擴充套件能力 :把負載分布到多個節點上,或者增加節點來提高系統的負載能力;
3、提高效能:讓客戶端本地訪問就近的節點,提高使用者訪問速度。
從客戶端讀寫訪問的透明度來看,資料複製集群系統分下面兩種:
分布式系統協調zookeeper
zookeeper是hadoop的正式子專案,它是乙個針對大型分布式系統的可靠協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效 功能穩定的系統提供給使用者。zookeeper是google的chub...
分布式系統協調 ZooKeeper
zookeeper是hadoop的正式子專案,它是乙個針對大型分布式系統的可靠協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效 功能穩定的系統提供給使用者。zookeeper是google的chub...
分布式系統協調 ZooKeeper
zookeeper是hadoop的正式子專案,它是乙個針對大型分布式系統的可靠協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效 功能穩定的系統提供給使用者。zookeeper是google的chub...