Zookeeper C API 指南一(准備工作)


以前自己的博客中轉載、翻譯或寫過(不過自己才疏學淺,寫的不好)一些 Zookeeper 方面的文章,但是都沒有涉及到 Zookeeper C API 的內容,今天的這篇博客是我農歷新年的第一篇技術博客,我想詳細講講 Zookeeper C API 的使用規則和示例,算是把以前的舊帳還上吧 :-)

Zookeeper 官方頁面上提供了一些編程指南 API 文檔,不過大部分都是 Java 示例,涉及 C API 的部分很少,只有在 ZooKeeper Programmer's Guide 中 ACL Permissions 一節講了 Zookeeper C API 中設置 ACL 應該注意的事項,正是由於缺少Zookeeper C API 相關的資料,大部分 Zookeeper C/C++ 開發者只能通過閱讀 Zookeeper C API 的源碼來了解 C API 的使用方法,本文希望在此方面給大家提供一些便利,減少 Zookeeper 新手使用 C API 的困難和恐懼,當然我自己也是一枚新手啦 :-)。

廢話不多說了,先從最基本的開始吧!

Zookeeper 偽分布式安裝

首先是 Zookeeper 的安裝,如果你沒有足夠的機器,建議在單機上通過偽分布式安裝方法來模擬 Zookeeper 集群,我在這里提供給大家一個簡單的安裝包來降低偽分布式 Zookeeper 的安裝難度,該安裝包可以模擬一個 5 Zookeeper 實例的集群。下載 zookeeper-3.4.0-pseudoclusters.tar.bz2,解壓至 /tmp/ 目錄(注意,安裝包里面 dataDir 和 dataLogDir 配置已經預設為 /tmp/ 目錄,如果你只是自己在 Zookeeper 上做一些小實驗,建議不要更改該配置,這樣在你做完了實驗以后刪除 /tmp/zookeeper/ 目錄即可),操作方法如下:

forhappy@haiping-ict:/tmp$ pwd
/tmp
forhappy@haiping-ict:/tmp$ tar xvf zookeeper-3.4.0-pseudoclusters.tar.bz2
forhappy@haiping-ict:/tmp$ cd zookeeper/
forhappy@haiping-ict:/tmp/zookeeper$ ls
server001  server003  server005          stopZKCluster.sh
server002  server004  startZKCluster.sh

然后在 /tmp/zookeeper 目錄下執行 startZKCluster.sh 啟動 Zookeeper 服務,或者執行 stopZKCluster.sh 停掉 Zookeeper 服務。

啟動 Zookeeper 服務:

forhappy@haiping-ict:/tmp/zookeeper$ ./startZKCluster.sh .
starting zookeeper instance server001...
JMX enabled by default
Using config: /tmp/zookeeper/server001/zookeeper-3.4.0/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
starting zookeeper instance server002...
JMX enabled by default
Using config: /tmp/zookeeper/server002/zookeeper-3.4.0/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
starting zookeeper instance server003...
JMX enabled by default
Using config: /tmp/zookeeper/server003/zookeeper-3.4.0/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
starting zookeeper instance server004...
JMX enabled by default
Using config: /tmp/zookeeper/server004/zookeeper-3.4.0/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
starting zookeeper instance server005...
JMX enabled by default
Using config: /tmp/zookeeper/server005/zookeeper-3.4.0/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

停掉 Zookeeper 服務:

forhappy@haiping-ict:/tmp/zookeeper$ ./stopZKCluster.sh .
stopping zookeeper instance server001...
JMX enabled by default
Using config: /tmp/zookeeper/server001/zookeeper-3.4.0/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
stopping zookeeper instance server002...
JMX enabled by default
Using config: /tmp/zookeeper/server002/zookeeper-3.4.0/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
stopping zookeeper instance server003...
JMX enabled by default
Using config: /tmp/zookeeper/server003/zookeeper-3.4.0/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
stopping zookeeper instance server004...
JMX enabled by default
Using config: /tmp/zookeeper/server004/zookeeper-3.4.0/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
stopping zookeeper instance server005...
JMX enabled by default
Using config: /tmp/zookeeper/server005/zookeeper-3.4.0/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

Zookeeper C API 安裝

Zookeeper C client 的實現在 src/c 目錄下,進入到該目錄安裝 Zookeeper C client,步驟如下:

$ ./configure
$ make
$ sudo make install

至此,基本的准備工作已經完成,你可以通過 Zookeeper 本身提供的 Shell 來操作 Zookeeper,操作方法如下,進入 /tmp/zookeeper/server001/zookeeper-3.4.0 目錄,執行bin/zkCli.sh -server 127.0.0.1:2181 進入 Zookeeper shell:

forhappy@haiping-ict:/tmp/zookeeper/server001/zookeeper-3.4.0$ bin/zkCli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(CONNECTED) 2] help
ZooKeeper -server host:port cmd args
    connect host:port
    get path [watch]
    ls path [watch]
    set path data [version]
    rmr path
    delquota [-n|-b] path
    quit 
    printwatches on|off
    create [-s] [-e] path data acl
    stat path [watch]
    close 
    ls2 path [watch]
    history 
    listquota path
    setAcl path acl
    getAcl path
    sync path
    redo cmdno
    addauth scheme auth
    delete path [version]
    setquota -n|-b val path

在 shell 中你可以完成基本的操作,如創建、獲取、刪除、設置某一節點,設置節點 ACL等,可以 zookeeper shell 中通過 help 獲取相關命令的用法。

如果你按照上面的步驟完成了 Zookeeper 偽分布式的安裝,並且想繼續了解 Zookeeper C API 的使用方法,請繼續閱讀《Zookeeper C API 指南二(監視(Wathes), 基本常量和結構體介紹)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM