1 什麼是Zookeeper 能幹什麼

word發表於2022-07-14

1 Zookeeper 概述

  • 美團,餓了麼,淘寶,58 同城等等應用都是 zookeeper 的現實生活版
  • 博主我開了個飯店,如何才能讓大家都能吃到我們的飯菜?需要入駐美團,這樣大家就可以在美團 app 中看到我的飯店,下訂單,從而完成一次交易
  • Zookeeper 是一個開源的分散式(多臺伺服器幹一件事)的,為分散式應用提供協調服務的
    Apache 專案。
  • 在大資料技術生態圈中,zookeeper(動物管理員),Hadoop(大象),Hive(蜜蜂),
    Pig(豬)等技術

1.2 工作機制

  • Zookeeper 從設計模式角度來理解:是一個基於觀察者模式(一個人幹活,有人盯著他)設計的分
    布式服務管理框架
  • 它負責 儲存 和 管理 大家都關心的資料
    然後接受觀察者的註冊,一旦這些資料的發生變化
    Zookeeper 就將負責通知已經註冊的那些觀察者做出相應的反應
    從而實現叢集中類似 Master/Slave 管理模式
    Zookeeper = 檔案系統 + 通知機制

img

對於我們初學者來說,知到 zookeeper 的工作機制是什麼很重要。

  • 首先我們可以把 zookeeper 看做一個美團
  • 當我們使用者下單後,他回去通知店家準備餐品
  • 我們 zookeeper 就是做他們之間的橋樑,相互去通知他們
  1. 商家營業併入駐
  2. 獲取到當前營業的飯店列表
  3. 伺服器節點下線
  4. 伺服器節點上下線事件通知
  5. 重新再去獲取伺服器列表,並註冊監聽

1.3 特點

  • 首先我們得了解分散式和叢集的區別?
    • 無論分散式和叢集,都是很多人在做事情。具體區別如下:
    • 例如:我有一個飯店,越來越火爆,我得多招聘一些工作人員
      • 分散式:招聘 1 個廚師,1 個服務員,1 個前臺,三個人負責的工作不一樣,但是最終目
        的都是為飯店工作
      • 叢集:招聘 3 個服務員,3 個人的工作一樣

特點:

img

  1. 是一個leader和多個follower來組成的叢集(獅群中,一頭雄獅,N頭母獅)

  2. 叢集中只要有半數以上的節點存活,Zookeeper就能正常工作(5臺伺服器掛2臺,沒問題;4臺服
    務器掛2臺,就停止)

  3. 全域性資料一致性,每臺伺服器都儲存一份相同的資料副本,無論client連線哪臺server,資料都是
    一致的

  4. 資料更新原子性,一次資料要麼成功,要麼失敗(不成功便成仁)

  5. 實時性,在一定時間範圍內,client能讀取到最新資料

  6. 更新的請求按照順序執行,會按照傳送過來的順序,逐一執行(發來123,執行123,而不是321
    或者別的)

1.4 資料結構

img

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

1.5 應用場景

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

1.5.1 統一命名服務

  • 在分散式環境下,通常需要對應用或服務進行統一的命名,便於識別
  • 例如:伺服器的IP地址不容易記,但域名相比之下卻是很容易記住

img

1.5.2 統一配置管理

  • 分散式環境下,配置檔案做同步是必經之路

  • 1000臺伺服器,如果配置檔案作出修改,那一臺一臺的修改,運維人員肯定會瘋,如何做到修改
    一處就快速同步到每臺伺服器上
    img

  • 將配置管理交給Zookeeper
    1、將配置資訊寫入到Zookeeper的某個節點上
    2、每個客戶端都監聽這個節點
    3、一旦節點中的資料檔案被修改,Zookeeper這個話匣子就會通知每臺客戶端伺服器

1.5.3 伺服器節點動態上下線

  • 客戶端能實時獲取伺服器上下線的變化
  • 在美團APP上實時可以看到商家是否正在營業或打樣
    img

1.5.4 軟負載均衡

  • Zookeeper會記錄每臺伺服器的訪問數,讓訪問數最少的伺服器去處理最新的客戶請求(雨露均
    沾)
  • 都是自己的孩子,得一碗水端平

img

相關文章