1. 程式人生 > >Zookeeper的內部原理

Zookeeper的內部原理

配置zoo.cfg檔案

(1)具體配置

dataDir=/opt/module/zookeeper-3.4.10/zkData

增加如下配置
######cluster####
server.1=testnote01:2888:3888
server.2=testnote02:2888:3888
server.3=testnote03:2888:3888

(2)配置引數解讀

Server.A=B:C:D
A是一個數字,表示這個是第幾號伺服器;和myid的值保持一致
B是這個伺服器的ip地址;
C是這個伺服器與叢集中的Leader伺服器交換資訊的埠;
D是萬一叢集中的Leader伺服器掛了,需要一個埠來重新進行選舉,選出一個新的Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。
叢集模式下配置一個檔案myid,這個檔案在dataDir目錄下,這個檔案裡面有一個數據就是A的值,Zookeeper啟動時讀取此檔案,拿到裡面的資料與zoo.cfg裡面的配置資訊比較從而判斷到底是哪個server。

節點型別

Znode兩種型別:

短暫(ephemeral):客戶端和伺服器端斷開連線後,建立的節點自己刪除
持久(persistent):客戶端和伺服器端斷開連線後,建立的節點不刪除

Znode有四種形式的目錄節點(預設是persistent )
(1)持久化目錄節點(PERSISTENT)
客戶端與zookeeper斷開連線後,該節點依舊存在
(2)持久化順序編號目錄節點(PERSISTENT_SEQUENTIAL)
客戶端與zookeeper斷開連線後,該節點依舊存在,只是Zookeeper給該節點名稱進行順序編號
(3)臨時目錄節點(EPHEMERAL)
客戶端與zookeeper斷開連線後,該節點被刪除
(4)臨時順序編號目錄節點(EPHEMERAL_SEQUENTIAL)
客戶端與zookeeper斷開連線後,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號
在這裡插入圖片描述

3)建立znode時設定順序標識,znode名稱後會附加一個值,順序號是一個單調遞增的計數器,由父節點維護

4)在分散式系統中,順序號可以被用於為所有的事件進行全域性排序,這樣客戶端可以通過順序號推斷事件的順序