分散式技術-Zookeeper概述

概述

  • 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. 一旦節點中的數據被修改,通知每台伺服器

伺服器節點動態上下線

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

軟負載均衡

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