0. 什么是ZooKeeper
ZooKeeper 是一個開源的分布式点把,它的設計目標是將那些復雜且容易出錯的分布式協(xié)同服務封裝起來茫经,抽象出一個高效可靠的原語集娱局,并以一系列簡單的接口提供個用戶使用了嚎。
ZooKeeper 有幾大特征:
易用
ZooKeeper 的理解和使用成本都很低泪漂,它提供的是一種層級式的命名空間,這一點和標準的文件系統(tǒng)類似歪泳。
可靠
ZooKeeper 服務可以支持集群模式萝勤,并且能夠輕松擴展,客戶端可以連接到任意一個服務器呐伞,都能夠獲得服務敌卓。
有序
ZooKeeper 的節(jié)點是可以保證有序的。每一個更新操作都會被標記一個序號伶氢,ZooKeeper 執(zhí)行的時候會按照順序執(zhí)行趟径。
快速
ZooKeeper 在讀多寫少的應用場景中可以實現(xiàn)快速響應瘪吏。這是因為 ZooKeeper 本身的部署架構是主從模式,主節(jié)點可以響應讀寫請求舵抹,而從節(jié)點只能響應讀請求肪虎。當讀寫比例大于10:1時,ZooKeeper 就可以利用擴展能力改善集群的響應速度惧蛹。
介紹完了 ZooKeeper 的整體情況扇救,我們再來看看 ZooKeeper 的另一個比較重要的概念——節(jié)點(Node)。
ZooKeeper 的節(jié)點叫做Znode香嗓,可以分為兩種:一種是持久性的迅腔,一種是臨時性的。每一個 Znode 都可以存儲數(shù)據靠娱,Znode 的更新是以版本更新的形式迭代的沧烈。因此,客戶端接收數(shù)據的同時還會接收到版本信息像云。
ZooKeeper 臨時節(jié)點的生命周期是與 session 相關的锌雀,當 session 處于活躍狀態(tài)時,臨時節(jié)點會一直存在迅诬,當 session 消亡時腋逆,臨時節(jié)點會被刪除。
Session
ZooKeeper 客戶端在和 Server 端進行連接的時候侈贷,會創(chuàng)建一個 session惩歉,客戶端可以主動關閉 session。當 ZooKeeper 服務端節(jié)點沒有在指定時間內收到客戶端消息的話俏蛮,服務端也會關閉 session撑蚌。如果建立連接出錯,ZooKeeper 客戶端也會自動和其他服務端節(jié)點嘗試建立新的連接搏屑。
1. 安裝 ZooKeeper
ZooKeeper 的安裝方式非常簡單争涌,首先到官網下載 ZooKeeper 的安裝包,然后解壓安裝包辣恋。
接著是修改配置文件第煮,進入目錄apache-zookeeper-3.6.2-bin/conf
,從 zoo_sample.cfg 文件復制出來一個名為 zoo.cfg 的配置文件抑党,修改dataDir=/data/zookeeper
包警,這個目錄用于存儲 ZooKeeper 的數(shù)據。配置好之后底靠,我們就可以啟動 ZooKeeper 了害晦,不過為了更好的使用 ZooKeeper 命令,我們把 ZooKeeper 相關命令配置到 PATH 中。
啟動 ZooKeeper
現(xiàn)在就可以啟動 ZooKeeper 了壹瘟。只需要使用下面這個命令即可鲫剿。
zkServer.sh start
啟動之后,我們來看一下 ZooKeeper 有沒有報錯稻轨,我們來到 ZooKeeper 目錄下的 logs 目錄灵莲,輸入命令
grep -E -i "((exception)|(error))" *
如果沒有輸出,說明 ZooKeeper 啟動沒有報錯殴俱。
接著查看對2181端口的監(jiān)聽
netstat -an | grep 2181
正常監(jiān)聽的話政冻,我們就可以使用客戶端進行連接了。
體驗 ZooKeeper 命令
在確保 ZooKeeper 服務端啟動沒有問題后线欲,我們使用客戶端進行連接明场。
連接時會有上圖所示的日志輸出。
連接好之后可以輸入命令
ls -R /
這個命令用來查看 ZooKeeper 現(xiàn)有的節(jié)點李丰。
/
/zookeeper
/zookeeper/config
/zookeeper/quota
最初只有幾個 ZooKeeper 自帶的目錄苦锨。
這里可以使用 create /app
命令來創(chuàng)建一個名為 app 的目錄。
2. 小結
對于 ZooKeeper 的初印象到這里就結束了趴泌,目前我已經對 ZooKeeper 有了一個大概的了解舟舒,并且能夠順利在本機安裝 ZooKeeper,對于 ZooKeeper 的命令也有一定的了解嗜憔。
后面我們會對 ZooKeeper 常見的應用進行介紹秃励。