您好,登錄后才能下訂單哦!
一、簡介
Zookeeper是一個高效的分布式協調服務,可以提供配置信息管理、命名、分布式同步、集群管理、數據庫切換等服務。它不適合用來存儲大量信息,可以用來存儲一些配置、發布與訂閱等少量信息。Hadoop、Storm、消息中間件、RPC服務框架、分布式數據庫同步系統,這些都是Zookeeper的應用場景。
Zookeeper集群中節點個數一般為奇數個(>=3),若集群中Master掛掉,剩余節點個數在半數以上時,就可以推舉新的主節點,繼續對外提供服務。
1、典型應?用場景
1)分布式通知/協調
?用于分布式系統的任務分發與任務執?行結果反饋
2) 集群管理
– 可以監控節點的存活狀態
3)Master選舉
Master/slave結構的系統中,避免單點故障,需要多個master,其中
只有?一個active master,ZooKeeper幫助選擇active master
4) 分布式鎖
– 獨占:某?一時刻只有?一個client能夠獲得
– 控制時序:多個客戶端的某些過程按照順序執?行
5) 分布式隊列
https://blog.csdn.net/king866/article/details/53992653/
2、架構
2.1、節點
– 2N+1個server組成,N+1個節點可?用時,整個系統保持可?用
2.2、server?角?色類型
– Server:存放數據(in-memory)
– Leader:不接受client的請求,負責進?行投票的發起和決議,最終更新狀態 – Follower:接收客戶請求并返回客戶結果,參與Leader發起的投票
3、ObServer節點
問題
當client變多,ZK集群變?大時,節點都為follower時,更新成 本較?大
? 解決方案
ObServer節點:和client交互,存有數據的副本,不參與投票
4、角色
5、ZooKeeper承諾
5.1、順序性
client的update請求都會根據他發出的順序被順序的處理
5.2、原子性
一個update操作要么成功要么失敗,沒有其他可能的結果
5.3、強一致性
client無論連接到那個server,展?示給它的都是同?一個視圖
5.4、 可靠性
update一旦成功,就被持久化了,除?非另?一個update請求更 新了當前值
5.5、實時性
對于每?一個client,它的系統視圖都是最新的
二、準備工作
1、系統環境
主機名 | 系統 | 服務版本 | IP |
master | CentOS7.4 | 3.4.12 | 192.168.56.129 |
slave1 | CentOS7.4 | 3.4.12 | 192.168.56.130 |
slave2 | CentOS7.4 | 3.4.12 | 192.168.56.131 |
2、暫時關閉防火墻和selinux
3、軟件下載
下載地址:http://mirrors.hust.edu.cn/apache/zookeeper/
4、Java環境
三、服務搭建
1、解壓三個節點的文件
[root@master ~]# cd /home/
[root@master home]# tar -zxvf zookeeper-3.4.12.tar.gz
[root@master home]# ln -s zookeeper-3.4.12 zookeeper
備注:三個節點相同操作
2、在conf目錄下創建zoo.cfg文件,三個節點配置相同,如下
[root@master ~]# cd /home/zookeeper/conf/
[root@master conf]# cp zoo_sample.cfg zoo.cfg
[root@master conf]# vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper
clientPort=2181
maxClientCnxns=50
server.1=192.168.56.129:2888:3888
server.2=192.168.56.130:2888:3888
server.3=192.168.56.131:2888:3888
3、創建文件/var/lib/zookeeper/myid,3個節點的 內容分別為1、2、3
[root@master conf]# mkdir -p /var/lib/zookeeper
[root@master conf]# cd /var/lib/zookeeper/
[root@master zookeeper]# vim myid
4、啟動三個節點
[root@master zookeeper]# bin/zkServer.sh start
[root@master zookeeper]# jps
[root@master zookeeper]# bin/zkServer.sh status
5、測試
5.1、在zookeeper中任意一個節點,執行指令zkCli.sh
[root@master zookeeper]# ./bin/zkCli.sh
5.2、輸入:help #幫助信息
ls / 查找根目錄
create /test abc 創建節點并賦值
get /test 獲取指定節點的值
set /test cb 設置已存在節點的值
rmr /test 遞歸刪除節點
delete /test/test01 刪除不存在子節點的節點
5.3、相關操作命令
新建操作
刪除操作
5.4、查看工具
在Eclipse中查看Zookeeper集群節點
也可以使用ZooInspector查看
這里使用ZooInspector工具進行查看
下載地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
解壓,進入目錄ZooInspector\build,雙擊運行zookeeper-dev-ZooInspector.jar;
備注:前提是Windows環境安裝了Java
4.5、點擊左上角連接按鈕,輸入zk服務地址:ip:2181
點擊OK,即可查看ZK節點信息
6、異常
6.1、CONNECTION_LOSS(連接丟失)
– eg:連接的server down掉
6.2、 SESSION_EXPIRED(會話失效)
– 由ZooKeeper集群管理,?非client管理
– ZooKeeper清除和該session有關的信息 – 正常運?行的ZK不會出現這種情況
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。