Zookeeper的簡單理解
zookeeper介紹
Zookeeper主要用於解決分散式資料一致性。
分散式資料一致性的相關理論,詳情見 : https://www.cnblogs.com/expiator/p/9760231.html
zookeeper構成
1.會話(Session):
zookeeper的服務埠是2181。客戶端啟動時,首先會與伺服器建立一個TCP長連線,連線建立後,會話開始。
通過這個連線,客戶端能夠通過心跳機制與伺服器保持有效會話,也能夠向zookeeper伺服器傳送請求並接受響應,同時還能接收來自zookeeper伺服器的Watch(監聽)事件通知 。
2.zookeeper具有樹型結構的資料模型,具有很多資料節點。
3.資料節點(Znode):
zookeeper每個資料節點都可以儲存資料,節點還可以建立子節點。
資料節點分為持久節點和臨時節點。每個資料節點都有版本記錄。
4.事件監聽器(Watcher):
zk允許使用者在指定資料節點註冊一些Watcher,在節點或儲存的資料發生變化時,客戶端可以收到通知 。
5.ACL(Access Control Lists):
zk採用ACL策略來進行許可權控制。許可權包括對節點的增刪改查。
6.zookeeper並沒直接採用Paxos演算法 。而是基於ZAB的一致性協議。
zookeeper應用
.1.在分散式服務框架Dubbo中,zookeeper可以作為註冊中心。這是最常見的用法。
2.分散式訊息中介軟體kafka,藉助zookeeper,kafka能夠建立生產者和消費者之間的訂閱關係,並實現負載均衡。
3.在大資料生態圈Hadoop、Hbase中都有應用zookeeper。
zookeeper叢集
1.zk可以構建叢集。一個zk叢集由多臺伺服器上的zk組成。
Leader選舉
1..zk叢集並沒有使用常見的Master/Slave模式(主從模式),而是引入Leader、Follower、Observer角色。
- Leader:提供讀和寫功能。
- Follower:提供讀服務。
- Observer:提供讀服務。不參考Leader選舉。
2.多臺伺服器通過Leader選舉選出Leader。