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