Zookeeper知識梳理

1.Zookeeper工作機制

1.1 工作機制Zookeeper

基於觀察者模式的分佈式管理框架,它負責存儲和管理數據,然後接受觀察者的的註冊,一旦這些數據發生改變,Zookeeper就負責通知已在Zookeeper上註冊的那些觀察者做出相應反應

1.2 Zookeeper的特點
  1. Zookeeper:一個領導者(Leader),多個更隨着(Follower)組成的集羣
  2. Zookeeper集羣羣只有在半數以上節點存活,才能正常服務
  3. 全局數據一致性:每個Server保存一份相同的副本,Client無論連接那個Server,數據都是一致的
  4. 更新請求順序進行,來自一個Client的請求按照其發送順序依次進行
  5. 數據原子性,一次更新要麼成功要麼失敗
  6. 實時性,在一定時間內,Client能讀到最新數據
1.2 Zookeeper內部原理
1.2.1 選舉機制:
  1. 半數機制:Zookeeper集羣半數機器存活,集羣可用。所以適合安裝奇數臺服務器
  2. Zookeeper雖然沒有指定Master和Slave,但是Zookeeper工作時,會有一個Leader節點,其他節點爲Follower,Leader是通過內部選舉機制產生
1.2.2 節點類型:
  1. 持久化目錄節點:客戶端斷開連接後,創建的節點不刪除
  2. 持久化順序編號目錄節點:持久化目錄節點(Persisent):客戶端斷開連接後,創建的節點不刪除,指示該節點按照名稱進行編號
  3. 臨時目錄節點:客戶端與Zookeeper斷開連接後,該節點被刪除
  4. 臨時順序編號目錄節點:客戶端與zookeeper斷開連接後,開節點被刪除,只是Zookeeper對節點名稱順序編號
1.2.2 監聽器原理:
  • 監聽原理詳解
  1. 首先要有一個main()線程
  2. main線程中創建zookeeper 客戶端,這時就會創建兩個線程,一個負責網絡連接通信(connect),另一個負責監聽(listen)
  3. 通過connector線程將註冊監聽事件發送給zookeeper
  4. zookeeper將註冊監聽時間添加到註冊監聽列表中
  5. Zookeeper監聽到數據或路徑發生變化,就會將這個消息發送給listener線程
  6. listener線程調用內部的process()方法
  • 常見監聽
  1. 監聽節點數據變化:get path[watch]
  2. 監聽子節點變化:ls path[watch]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章