天天看點

ZooKeeper的基礎原理及應用場景

一、ZooKeeper是什麼?

     1. 是一個為使用者的分布式應用程式提供協調的服務

              是為别的分布式程式服務的

             本身也是一個分布式程式(隻要半數以上節點存儲,就能正常提供服務)

     2.目标是封裝好複雜易出錯的關鍵服務,将簡單易用的接口和性能高效、功能穩定的系統提供給使用者

二、ZooKeeper的架構是什麼?

      1. 核心元件:

          Server:數目一般選擇為奇數(3,5,7)

          Leader

          Follower

          Client

       2.架構圖:

ZooKeeper的基礎原理及應用場景

三、ZooKeeperd的核心是什麼?

        仲裁機制,目錄式資料結構

      1.仲裁機制:

           ZooKeeper需要在所有的服務(可了解為伺服器)中選舉出一個Leader,然後讓這個Leader來負責管理叢集。此時,叢集中的其他伺服器則成了此Leader的follower。并且,當Leader出現故障的時候,ZooKeeper要能夠快速地在Follower中選舉出下一個Leader。這就是ZooKeeper的Leader機制制(leader選舉),具體的實作方法請參考其他部落格。

       2.目錄式資料結構:

            Zookeeper 會維護一個具有層次關系的資料結構,它非常類似于一個标準的檔案系統,如圖 所示:

ZooKeeper的基礎原理及應用場景

            Zookeeper 這種資料結構有如下這些特點(znode有兩種類型,一種臨時的(ephemeral),一種持久的(persistent)):

                     1.每個子目錄項如 NameService 都被稱作為 znode,這個 znode 是被它所在的路徑唯一辨別,如 Server1 這個 znode 的辨別為 /NameService/Server1

                     2.znode 可以有子節點目錄,并且每個 znode 可以存儲資料,注意 EPHEMERAL 類型的目錄節點不能有子節點目錄

                     3.znode 是有版本的,每個 znode 中存儲的資料可以有多個版本,也就是一個通路路徑中可以存儲多份資料

                     4.znode 可以是臨時節點,一旦建立這個 znode 的用戶端與伺服器失去聯系,這個 znode 也将自動删除,Zookeeper 的用戶端和伺服器通信采用長連接配接方式,每個用戶端和伺服器通過心跳來保持連接配接,這個連接配接狀态稱為 session,如果 znode 是臨時節點,這個 session 失效,znode 也就删除了

                     5.znode 的目錄名可以自動編号,如 App1 已經存在,再建立的話,将會自動命名為 App2

                     6.znode 可以被監控,包括這個目錄節點中存儲的資料的修改,子節點目錄的變化等,一旦變化可以通知設定監控的用戶端,這個是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于這個特性實作的,後面在典型的應用場景中會有執行個體介紹

四、ZooKeeper的應用場景 

        1. 配置管理

             (1)在分布式叢集中,各個節點的配置檔案同步檔案。對叢集中的一台機器的配置資訊修改之後,希望能夠快速同步到其他各個節點上,這可以交由ZooKeeper來實作

             (2)将配置檔案資訊寫入到ZooKeeper的一個znode上,各個節點監聽這個znode即可

        2.叢集管理

             (1)在分布式叢集中,各個節點的實時狀态統計

             (2)将節點資訊寫入到ZooKeeper的一個znode上,監聽這個znode可以擷取它的實時狀态變化

             (3)Hbase中Master狀态監控和選舉

繼續閱讀