在深入了解zookeeper的運作之前,讓我們來看看zookeeper的基本概念。本文主要包含如下內容:
1、architecture(架構)
2、hierarchical namespace(層次命名空間)
3、session(會話)
4、watches(監視)
一、zookeeper的架構
架構圖如下:
作為zookeeper架構的一部分的每個元件在下表中進行了說明。
二、層次命名空間
下圖描述了用於記憶體表示的zookeeper檔案系統的樹結構。zookeeper節點稱為znode。每個znode由乙個名稱標識,並用路徑(/)序列分隔。
zookeeper資料模型中的每個znode都維護著乙個stat結構。乙個stat僅提供乙個znode的元資料。它由版本號,操作控制列表(acl),時間戳和資料長度組成。
三、sessions(會話)
會話對於zookeeper的操作非常重要。會話中的請求按fifo順序執行。一旦客戶端連線到伺服器,將建立會話並向客戶端分配會話id。
客戶端以特定的時間間隔傳送心跳以保持會話有效。如果zookeeper集合在超過伺服器開啟時指定的期間(會話超時)都沒有從客戶端接收到心跳,則它會判定客戶端宕機。
會話超時通常以毫秒為單位。當會話由於任何原因結束時,在該會話期間建立的臨時節點也會被刪除。
四、watches(監視)
監視是一種簡單的機制,使客戶端收到關於zookeeper集合中的更改的通知。客戶端可以在讀取特定znode時設定watches。watches會向註冊的客戶端傳送任何znode(客戶端登錄檔)更改的通知。
znode更改是與znode相關的資料的修改或znode的子項中的更改。只觸發一次watches。如果客戶端想要再次通知,則必須通過另乙個讀取操作來完成。當連線會話過期時,客戶端將與伺服器斷開連線,相關的watches也將被刪除。
總結:本文主要闡述了zookeeper的架構、層次命名空間、會話、監控等,這些是zookeeper的基礎,了解一下也是好的。
Zookeeper學習筆記二之基礎
很多用於協作的原語常常在很多應用之間共享,因此,設計乙個用於協作需求的服務的方法往往是提供原語列表,暴露出每個原語的例項化呼叫方法,並直接控制這些例項。比如我們可以說分布式鎖機制組成了乙個重要的原語,同時暴露出建立 create 獲取 acquire 和釋放 release 三個呼叫方法,這種設計存...
Hadoop入門(二) ZooKeeper單機安裝
cd usr local src wget tar zxvf zookeeper 3.4.5.tar.gz 2配置cd zookeeper 3.4.5 cp conf zoo sample.cfg conf zoo.cfg export zookeeper home usr local src zo...
zookeeper入門系列 理論基礎
之前我們了解了zookeeper到底是什麼,這一章重點來看zookeeper當初到底面臨什麼問題?而zookeeper又是如何解決這些問題的?實際上zookeeper主要就是解決分布式環境下的一致性問題。那麼解決這個問題到底有哪些難點呢?我們一步一步來闡述和推理這個過程。分布式事務 我們首先考慮一致...