理解Zookeeper
為什么需要Zookeeper?
用一句話概括就是:用起來像單機但是又比單機更可靠
1、集群、可靠
2、當資訊還沒同步完成時,不對外提供服務
3、同步的時間壓縮的更短
主要解決了兩個問題:
(1)、避免了單機的不可靠
(2)、在多節點的情況下,盡可能的壓縮同步的時間,
Zookeeper誕生歷史:
ZooKeeper最早誕生在雅虎研究院的一個研究小組,最開始研究人員發現,在雅虎內部很多大型系統,都需要一個類似的系統,來進行分布式的協調,而這些系統往往都存在單點問題,也就是說一個寫在記憶體里的keyvalue的形式,用它做分布式協調器,一旦蕩機,整個系統就掛了,所以雅虎的開發人員就希望開發出這樣一種東西:無單點問題的分布式協調框架,精力集中在處理業務邏輯,
Zookeeper對于自己比較官方的定義:
A Distributed Coordination Service for Distributed Applications
通俗的說就是:
Zookeeper是開源的共性能的分布式應用協調系統,一個高性能的分布式資料一致性解決方案,
Zookeeper背后是依賴Java運行的,所以會依賴我們的jdk,眾所周知協調服務是比較難做的,因為我們去協調的時候設計到多個節點的配合,就容易出現通信和并發的問題,可能會出現死鎖的問題,而Zookeeper背后的動機就是減輕程式員在這部分開發時候的負擔,
1、Zookeeper
5大特點(使Zookeeper脫穎而出,和Zookeeper相同或者類似功能的軟體也是存在的但是他們沒有這5大特點,或者說使沒有我們的ZooKeeper高效,這樣以來使得我們的Zookeeper在競爭中勝出了)
1、順序一致性(Zookeeper是分為客戶端的和服務端的,我們作為客戶端而言,我們有一些訊息發給服務端,我們發出去是什么順序,他就會以順序一條一條的執行,
2、原子性(有一個請求過來更新內容,這個內容會被立刻同步到所有的節點上去,這個同步是一致的,要么全部同步成功,要么全部都不成功)
3、單一視圖(無論我們客戶端連接的是哪個Zookeeper,看到的內容都是一致的)
4、可靠性(給節點寫一個資料,那么這個資料會一直保留,直到有另外的操作把這個資料寫掉,才可能發成變化)
5、及時性(Zookeeper能保證在一定時間段內,而且這個時間段不會很長,一定能保證客戶端在這個時間段內能從服務器上讀到最新的資料狀態)
正是有了這5大特點后,使得Zookeeper簡單易用性能卓越
2、集群架構

3、Zookeeper和CAP關系
CP:一致性+磁區容錯性
能得到一致的資料結果,同時系統對網路具備容錯性
但是它不能保證每次服務請求的可用性
Zookeeper為什么選擇CP而不選擇AP,就是和它的作用是息息相關的,Zookeeper它本身最大的作用就是分布式協調服務,它的職責就是保證資料,在所有服務之間保持同步和一致,所以c出于它的目的而言,就成了必選項,如果說Zookeeper選擇AP而放棄C的話,那就使得它的各各節點可能不一致,這會造成非常恐怖的后果,因為本身就是對外提供一些非常重要的一致的資訊的,但是現在一旦發生一些小問題,就會導致不同的人找我請求,我會返給它不同的結果,
4、zookeeper的作用(五種)(Zookeeper是一個中間件,主要是用于分布式系統的)
1、分布式服務注冊與訂閱
2、統一組態檔
3、生成分布式唯一id
4、Master節點選舉
5、分布式鎖
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/226916.html
標籤:其他
上一篇:【資料結構與演算法基礎】哈夫曼樹與哈夫曼編碼(C++)
下一篇:[STL]空間配置器的原理
