Zookeeper 基本配置

Gary Ng
4 min readJan 30, 2021

Zookeeper 是一個分布式服務框架,是 Apache Hadoop 的一個子項目,主要用來解決分布式服務所遇到的問題,例如:狀態同步服務、集群管理等。

zookeeper = 文件系統 + 監聽通知機制

而 zookeeper 每個節點都稱之為 znode (目錄節點),znode 底下可以包含多個節點以及一個值

有四種類型的 znode

  • PERSISTENT — 持久化

客戶端與 zookeeper 斷開連線後,節點依舊存在

  • PERSISTENT_SEQUENTIAL — 持久話順序編號

與 PERSISTENT 類似,只是 zookeeper 給節點編號

  • EPHEMERAL 臨時目錄節點

客戶端斷線後, 該節點即刻刪除

  • EPHEMERAL_SEQUENTIAL 臨時順序編號

與 EPHEMERAL 類似, 只是 zookeeper 給節點編號

監聽通知機制

  1. 監聽他關注的目錄節點,當節點發生變化時, zookeeper 會通知客戶端。

zookeeper 可以時做出的功能如下

  1. 統一命名服務
  2. 集群管理
  3. 隊列管理
  4. 同步鎖
  5. 狀態同步服務
  6. 數據發布 / 訂閱
  7. Master 選舉

要在本機測試 zookeeper 可以 clone 此 github 專案

https://github.com/xingobar/zookeeper-docker.git

倘若要檢測是否有成功啟動成功, 可以先下 docker-compose ps 檢測 container 是否有運行起來

然後此 github 專案有安裝 zookeeper navigator webui 畫面, 可以使用

http://localhost:9090 即可看到畫面

上面的 192.168.xxx 可以使用 docker inspect 去查看 docker container 的 ip address

zookeeper 的基本操作

  1. 新進到一台 zookeeper 的 container
docker exec -it zookeeper_zoo1_1 bash

2. 執行 ziCli.sh

zkCli.sh

3. 使用 ls 看 root node 底下有什麼 znode

4. 創建一個 znode

ps: 在 root node 新建 test znode, 值為 demo

create /test demo

5. 查看 test node 的資料

get /test

6. 刪除節點

delete /test

zookeeper 參數說明

  1. tickTime
zookeeper 服務器之間抑或是客戶端與 zookeeper 之間的心跳時間

2. initLimit

初始化連接能忍受多少個心跳時間

3. syncLimit

Learder 與 Follower 之間發送消息, 請求和應答時間長度

4. dataDir

zookeeper 資料夾存放的路徑

5. clientPort

客戶端的 port

參考文件

--

--