zookeeper特點:
節點可以儲存資料
可以watch節點,觸發相關
使用場景1:配置管理
這裡是資料庫配置,當我們應用服務修改配置的時候,只需要修改配置中心,發布,那麼應用就會自動監聽資料庫配置的改動,然後重新讀取配置,連線資料庫,省去了修改每台業務伺服器的複雜度。
使用場景2:分布式鎖
下圖就是乙個分布式鎖的實現,當第乙個連線獲取通過zk獲取第乙個節點鎖後,下乙個節點watch這個節點,當前節點被刪除後,釋放鎖,下乙個連線建立節點,獲得鎖資源。相當於乙個佇列,等待上乙個鎖釋放後,下乙個才可以操作。
回歸初心,hdfs的ha實現
首先journal nodes進行控制資料的同步,zkfailover controller控制nn,和zk,zk負責選舉master。
例項:四個節點全部安裝zk
192-168-100-142
192-168-100-217
192-168-100-225
192-168-100-34
wget
解壓並且配置
建立相關路徑
mkdir -p /opt/hadoop/zookeeper/log
mkdir -p /opt/hadoop/zookeeper/data
修改配置
cd /usr/local/zookeeper-3.4.10/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg 填寫如下配置:
datadir=/opt/hadoop/zookeeper/data
datalogdir=/opt/hadoop/zookeeper/log
server.0=192-168-100-142:8880:7770
server.1=192-168-100-217:8881:7771
server.2=192-168-100-225:8882:7772
server.3=192-168-100-34:8883:7773
在每乙個節點新增myid檔案,與上面的配置server.*一一對應
192-168-100-142
vim /opt/hadoop/zookeeper/data/myid
寫入0192-168-100-217
寫入1192-168-100-225
寫入2192-168-100-34
寫入3全部配置文成後,分別在每個節點啟動zk
zkserver.sh start
啟動後可以通過zkserver.sh status檢視狀態
這裡可以看到192-168-100-142 是leader,其他均為follower
[root@192-168-100-142 data]# zkserver.sh status
zookeeper jmx enabled by default
using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
mode: leader
[root@192-168-100-217 data]# zkserver.sh status
zookeeper jmx enabled by default
using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
mode: follower
zookeeper 使用場景
比如像dubbo就是用的zookeeper的命名服務,利用的是樹形的目錄結構可以統一對配置進行動態的調整,利用的是節點變更的監聽可以在多個機器中選出leader,利用的是臨時順序編號目錄節點 ephemeral sequential 在集群重需要某個操作保持一致性和時序性的時候,利用建立節點來做獨佔...
Zookeeper使用場景
分布式系統的執行是很複雜的,因為涉及到了網路通訊還有節點失效等不可控的情況。下面介紹在最傳統的master workers模型,主要可以會遇到什麼問題,傳統方法是怎麼解決以及怎麼用zookeeper解決。master節點管理 集群當中最重要的是master,所以一般都會設定一台master的back...
ZooKeeper典型使用場景
zookeeper是乙個高可用的分布式資料管理與系統協調框架。基於對paxos演算法的實現,使該框架保證了分布式環境中資料的強一致性,也正是 基於這樣的特性,使得zookeeper能夠應用於很多場景。網上對zk的使用場景也有不少介紹,本文將結合作者身邊的專案例子,系統的對zk的使用場景 進行歸類介紹...