ZooKeeper

1.1 . ZooKeeper 概述
Zookeeper 是一個分佈式協調服務的開源框架。主要用來解決分佈式集羣中
應用系統的一致性問題,例如怎樣避免同時操作同一數據造成髒讀的問題。
ZooKeeper 本質上是一個分佈式的小文件存儲系統。提供基於類似於文件系統的目錄樹方式的數據存儲,並且可以對樹中的節點進行有效管理。從而用來維護和監控你存儲的數據的狀態變化。通過監控這些數據狀態的變化,從而可以達到基於數據的集羣管理。諸如:統一命名服務、分佈式配置管理、分佈式消息隊列、分佈式鎖、分佈式協調等功能。
1.2 . ZooKeeper特性

  1. 全局數據一致:每個 server 保存一份相同的數據副本,client 無論連
    接到哪個 server,展示的數據都是一致的,這是最重要的特徵;
  2. 可靠性:如果消息被其中一臺服務器接受,那麼將被所有的服務器接受。
  3. 順序性:包括全局有序和偏序兩種:全局有序是指如果在一臺服務器上消息 a 在消息 b 前發佈,則在所有 Server 上消息 a 都將在消息 b 前被髮布;偏序是指如果一個消息 b 在消息 a 後被同一個發送者發佈,a 必將排在 b 前面。
  4. 數據更新原子性:一次數據更新要麼成功(半數以上節點成功),要麼失敗,不存在中間狀態;
  5. 實時性:Zookeeper 保證客戶端將在一個時間間隔範圍內獲得服務器的更新信息,或者服務器失效的信息。

1.3 . ZooKeeper 集羣角色
ZooKeeper

Leader:
Zookeeper 集羣工作的核心
事務請求(寫操作)的唯一調度和處理者,保證集羣事務處理的順序性; 集羣內部各個服務器的調度者。
對於 create,setData,delete 等有寫操作的請求,則需要統一轉發給
leader 處理,leader 需要決定編號、執行操作,這個過程稱爲一個事務。
Follower:
處理客戶端非事務(讀操作)請求,轉發事務請求給 Leader; 參與集羣 Leader 選舉投票。
此外,針對訪問量比較大的 zookeeper 集羣,還可新增觀察者角色。Observer:
觀察者角色,觀察 Zookeeper 集羣的最新狀態變化並將這些狀態同步過來,其對於非事務請求可以進行獨立處理,對於事務請求,則會轉發給 Leader 服務器進行處理。
不會參與任何形式的投票只提供非事務服務,通常用於在不影響集羣事務處理能力的前提下提升集羣的非事務處理能力。

1.4 . ZooKeeper 集羣搭建
Zookeeper 集羣搭建指的是 ZooKeeper 分佈式模式安裝。通常由 2n+1
臺 servers 組成。這是因爲爲了保證 Leader 選舉(基於 Paxos 算法的實現)能過得到多數的支持,所以 ZooKeeper 集羣的數量一般爲奇數。
Zookeeper 運行需要 java 環境,所以需要提前安裝 jdk。對於安裝
leader+follower 模式的集羣,大致過程如下:
l 配置主機名稱到 IP 地址映射配置
l 修改 ZooKeeper 配置文件
l 遠程複製分發安裝文件
l 設置 myid
l 啓動 ZooKeeper 集羣
如果要想使用 Observer 模式,可在對應節點的配置文件添加如下配置: peerType=observer
其次,必須在配置文件指定哪些節點被指定爲 Observer,如: server.1:localhost:2181:3181:observer
詳細步驟請參考附件安裝資料。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章