分散式技術-Zookeeper概述

超凡丶發表於2021-11-07

概述

  • Zookeeper是一個開源的分散式的,為分散式應用提供協調服務的Apache專案
  • 在大資料技術生態圈中,zookeeper(動物管理員),Hadoop(大象),Hive(蜜蜂),Pig(豬)

工作機制

  • zookeeper從設計模式角度來理解:是一個基於觀察者模式設計的分散式服務管理框架
  • 負責儲存管理資料
    • 接受觀察者的註冊
    • 通知已經註冊的觀察者做出反應
    • 實現叢集中類似Master/Slave管理模式
  • zookeeper = 檔案系統 + 通知機制
    1. 服務上線
    2. 獲取當前服務列表
    3. 伺服器節點下線
    4. 伺服器節點上下線事件通知
    5. 重新獲取伺服器列表,註冊監聽

特點

分散式和叢集的區別:

無論分散式還是叢集,都是很多人在做事情,具體區別如下

例子:有一個飯店,越來越火爆,招聘工作人員

  • 分散式:招聘一個廚師,1個服務員,1個前臺,3個人負責的工作不同,最終都是為飯店工作
  • 叢集:招聘5個服務員,5個人的工作一個
  1. 一個leader和多個follower來組成的叢集
  2. 叢集中只要有半數以上的節點存活,Zookeeper就能正常工作
  3. 全域性資料唯一性,每臺伺服器都儲存一份相同的資料副本,無論哪臺client連線哪臺server,資料都是一致的
  4. 資料更新原子性,一次資料要麼成功,要麼失敗
  5. 實時性,在一定的時間範圍內,client能讀取到最新資料
  6. 更新的請求按照順序執行,會按照發過來的資料,逐一執行

資料結構

  • zookeeper資料模型的結構與linux檔案系統很類似,整體上可以看作是一棵樹,每個節點稱作一個ZNode(ZookeeperNode)
  • 每一個ZNode預設能夠儲存1MB的資料(後設資料),每個ZNode的路徑是唯一的
    • 後設資料(Metadata),又稱中介資料,中繼資料,為描述資料的資料,主要是描述資料屬性資訊,同來支援如指示儲存位置,歷史記錄,資源查詢,檔案記錄等功能

應用場景

  • 提供的服務包括:統一命名服務、統一配置管理、統一叢集管理、伺服器節點動態上下線、軟負載均衡等

統一命名服務

  • 在分散式環境下,對環境進行統一命名

統一配置管理

  • 分散式環境下進行配置同步

  • 將配置管理交給zookeeper
    1. 將配置資訊寫到某個節點上
    2. 每個客戶端都監聽這個節點
    3. 一旦節點中的資料被修改,通知每臺伺服器

伺服器節點動態上下線

  • 客戶端能夠獲取伺服器節點的上下線情況

軟負載均衡

  • 統計每臺伺服器的訪問情況,訪問次數最少的節點去處理最新的請求(雨露均沾

相關文章