天天看點

【從入門到放棄-ZooKeeper】ZooKeeper入門

前言

ZooKeeper是一個分布式服務協調架構,可以用來維護分布式配置資訊、服務注冊中心、實作分布式鎖等。在Hbase、Hadoop、kafka等項目中都有廣泛的應用。随着分布式、微服務的普及,ZooKeeper已經成為我們日常開發工作中無法繞過的一環,本文将從安裝配置到最基礎的使用入手,對其進行介紹。

安裝部署

下載下傳

http://mirror.bit.edu.cn/apache/zookeeper/stable/

下載下傳推薦的stable版本。可以直接下載下傳編譯好的bin檔案。

目前最新的stable版本是3.5.5

解壓

将下載下傳的檔案解壓至工作目錄,我的工作目錄是/var/workspace/zookeeper

tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz -C /var/workspace/zookeeper           

配置

【從入門到放棄-ZooKeeper】ZooKeeper入門

此時如果直接啟動zookeeper是會失敗的,提示找不到zoo.cfg檔案。

需要我們把conf目錄中提供的zoo_sample.cfg示例配置檔案,複制為一份zoo.cfg,zoo.cfg是預設的啟動配置檔案

cp ../conf/zoo_sample.cfg ../conf/zoo.cfg           

啟動

【從入門到放棄-ZooKeeper】ZooKeeper入門

預設啟動,使用config/zoo.cfg配置檔案在背景啟動

【從入門到放棄-ZooKeeper】ZooKeeper入門

前台啟動,會将啟動日志列印在終端。終端關閉後服務也關閉。

通路

【從入門到放棄-ZooKeeper】ZooKeeper入門

使用zcCli.sh -server host:port 通路ZooKeeper伺服器。

不加-server參數時,預設使用127.0.0.1:2181

使用

ZooKeeper使用類似資源檔案目錄的方式來管理節點,每個節點可以存儲資料。

ZooKeeper有四種不同類型的節點:

  • PERSISTENT:持久化節點,除非手動删除,否則會永久儲存
  • PERSISTENT_SEQUENTIAL:持久化順序節點,除非手動删除,否則會永久儲存。預設會在使用者設定的節點名稱後,順序的增加十位的數字字元串。如 test_0000000001
  • EPHEMERAL:臨時節點,在session結束後,臨時節點會被自動删除。
  • EPHEMERAL_SEQUENTIAL:臨時順序節點,在session結束後,臨時節點會被自動删除。預設會在使用者設定的節點名稱後,順序的增加十位的數字字元串。如 test_0000000001

help

使用zkCli.sh連接配接到服務端後,可以使用help展示常見指令的使用方式。

【從入門到放棄-ZooKeeper】ZooKeeper入門

ls

【從入門到放棄-ZooKeeper】ZooKeeper入門

列出某個路徑下的節點

create

【從入門到放棄-ZooKeeper】ZooKeeper入門

可以使用create {path} 建立節點。

使用 create -s {path} 可以建立有序節點,後面添加十位遞增的數字字尾。

【從入門到放棄-ZooKeeper】ZooKeeper入門
【從入門到放棄-ZooKeeper】ZooKeeper入門

使用 create -e 建立臨時節點,當斷開連接配接後,臨時節點會被删除。

set/get

【從入門到放棄-ZooKeeper】ZooKeeper入門

ZooKeeper的節點可以存儲資料,使用set 方法将資料存在節點中。

使用get 方法,從節點中擷取資料。

set -v {currentVersion} {path} {data}

節點的資料每次更新時,都會遞增,如果要更新節點,請使用上面的指令修改,如果currentVersion不是最新版本時,則更新失敗,類似樂觀鎖CAS。

delete

【從入門到放棄-ZooKeeper】ZooKeeper入門

可以通過delete删除節點。

總結

通過上面的學習,我們已經學會了ZooKeeper最基本的安裝部署及使用方式。需要牢記:

  • ZooKeeper的節點是類似檔案系統的管理方式
  • Zookeeper有四種節點類型,臨時節點會在會話斷開後自動删除,順序節點字尾序号會自動遞增
  • set資料時,可以指定版本号,版本号與目前版本一緻時才更新。這種樂觀鎖的更新方式,可以避免并發時資料被覆寫

更多文章

見我的部落格:

https://nc2era.com

written by

AloofJr

,轉載請注明出處

繼續閱讀