zookeeper系列(六)zookeeper的系統模型(數據樹)

做者:leesf    掌控之中,纔會成功;掌控以外,註定失敗。 出處:http://www.cnblogs.com/leesf456/p/6072597.html尊重做者原創,奇文共欣賞,你們共同窗習進步;html

1、前言數據庫

  前面已經講解了Zookeeper的一些應用場景,可是並無深刻到Zookeeper內部進行分析,本篇將講解其系統模型。安全

2、系統模型服務器

  2.1 數據模型分佈式

  Zookeeper的數據節點稱爲ZNode,ZNode是Zookeeper中數據的最小單元,每一個ZNode均可以保存數據,同時還能夠掛載子節點,所以構成了一個層次化的命名空間,稱爲樹。學習

  在Zookeeper中,事務是指可以改變Zookeeper服務器狀態的操做,通常包括節點建立與刪除,數據節點內容更新和客戶端會話建立與失效,對於每一個事務請求,Zookeeper都會爲其分配一個全局惟一的事務ID,用ZXID表示,一般是64位的數字,每一個ZXID對應一次更新操做,從這些ZXID中能夠間接地識別出Zookeeper處理這些更新操做請求的全局順序。編碼

  2.2 節點特性加密

  在Zookeeper中,每一個數據節點都是由生命週期的,類型不一樣則會不一樣的生命週期,節點類型能夠分爲持久節點(PERSISTENT)、臨時節點(EPHEMERAL)、順序節點(SEQUENTIAL)三大類,能夠經過組合生成以下四種類型節點線程

  1. 持久節點(PERSISTENT)。節點建立後便一直存在於Zookeeper服務器上,直到有刪除操做來主動清楚該節點。htm

  2. 持久順序節點(PERSISTENT_SEQUENTIAL)。相比持久節點,其新增了順序特性,每一個父節點都會爲它的第一級子節點維護一份順序,用於記錄每一個子節點建立的前後順序。在建立節點時,會自動添加一個數字後綴,做爲新的節點名,該數字後綴的上限是整形的最大值。

  3. 臨時節點(EPEMERAL)。臨時節點的生命週期與客戶端會話綁定,客戶端失效,節點會被自動清理。同時,Zookeeper規定不能基於臨時節點來建立子節點,即臨時節點只能做爲葉子節點。

  4. 臨時順序節點(EPEMERAL_SEQUENTIAL)。在臨時節點的基礎添加了順序特性。

  每一個節點除了存儲數據外,還存儲了節點自己的一些狀態信息,可經過get命令獲取。

  2.3 版本--保證分佈式數據原子性操做

  每一個數據節點都具備三種類型的版本信息,對數據節點的任何更新操做都會引發版本號的變化。

  version-- 當前數據節點數據內容的版本號

  cversion-- 當前數據子節點的版本號

  aversion-- 當前數據節點ACL變動版本號

  上述各版本號都是表示修改次數,如version爲1表示對數據節點的內容變動了一次。即便先後兩次變動並無改變數據內容,version的值仍然會改變。version能夠用於寫入驗證,相似於CAS。

  2.4 Watcher--數據變動通知

  Zookeeper使用Watcher機制實現分佈式數據的發佈/訂閱功能。

  Zookeeper的Watcher機制主要包括客戶端線程、客戶端WatcherManager、Zookeeper服務器三部分。客戶端在向Zookeeper服務器註冊的同時,會將Watcher對象存儲在客戶端的WatcherManager當中。當Zookeeper服務器觸發Watcher事件後,會向客戶端發送通知,客戶端線程從WatcherManager中取出對應的Watcher對象來執行回調邏輯。

  2.5 ACL--保障數據的安全

  Zookeeper內部存儲了分佈式系統運行時狀態的元數據,這些元數據會直接影響基於Zookeeper進行構造的分佈式系統的運行狀態,如何保障系統中數據的安全,從而避免因誤操做而帶來的數據隨意變動而致使的數據庫異常十分重要,Zookeeper提供了一套完善的ACL權限控制機制來保障數據的安全。

  咱們能夠從三個方面來理解ACL機制:權限模式(Scheme)、受權對象(ID)、權限(Permission),一般使用"scheme:id:permission"來標識一個有效的ACL信息。

  權限模式用來肯定權限驗證過程當中使用的檢驗策略,有以下四種模式:

  1. IP,經過IP地址粒度來進行權限控制,如"ip:192.168.0.110"表示權限控制針對該IP地址,同時IP模式能夠支持按照網段方式進行配置,如"ip:192.168.0.1/24"表示針對192.168.0.*這個網段進行權限控制。

  2. Digest,使用"username:password"形式的權限標識來進行權限配置,便於區分不一樣應用來進行權限控制。Zookeeper會對其進行SHA-1加密和BASE64編碼。

  3. World,最爲開放的權限控制模式,數據節點的訪問權限對全部用戶開放。

  4. Super,超級用戶,是一種特殊的Digest模式,超級用戶能夠對任意Zookeeper上的數據節點進行任何操做。

  受權對象是指權限賦予的用戶或一個指定實體,如IP地址或機器等。不一樣的權限模式一般有不一樣的受權對象。

  權限是指經過權限檢查能夠被容許執行的操做,Zookeeper對全部數據的操做權限分爲CREATE(節點建立權限)、DELETE(節點刪除權限)、READ(節點讀取權限)、WRITE(節點更新權限)、ADMIN(節點管理權限)

3、總結

  本篇博客介紹了Zookeeper中的系統模型,系統模型的五個部分是Zookeeper提供一系列服務的基礎,以後筆者會結合源碼進行相應分析。

相關文章
相關標籤/搜索