zookeeper還是很簡(jiǎn)單的浑塞,官方文檔足以语婴,這里還是簡(jiǎn)單做個(gè)記錄
定義:
zookeeper是一個(gè)分布式的关筒,為分布式應(yīng)用提供協(xié)調(diào)服務(wù)的APache項(xiàng)目溶握。基于觀察者模式設(shè)計(jì)的分布式服務(wù)管理框架蒸播。
特點(diǎn)
- 一個(gè)領(lǐng)導(dǎo)者(Leader)睡榆,多個(gè)跟隨者(follower)組成的集群
- 只要半數(shù)以上的幾點(diǎn)存活,集群就能正常工作
- 全局?jǐn)?shù)據(jù)一致袍榆,每個(gè)server都保存一份相同的數(shù)據(jù)
- 更新請(qǐng)求順序執(zhí)行
- 原子性
- 實(shí)時(shí)性
- 統(tǒng)一命名服務(wù)
- 統(tǒng)一配置管理
- 統(tǒng)一集群管理
- 服務(wù)器動(dòng)態(tài)上下線
- 負(fù)載均衡
操作步驟:
- 集群規(guī)劃:在hadoop102胀屿,hadoop103,hadoop104三個(gè)節(jié)點(diǎn)上部署zookeeper
- 同步其中一臺(tái)zookeeper目錄下的文件至其他服務(wù)器
- 配置服務(wù)器編號(hào):在zookeeper目錄下創(chuàng)建zkData,并在其中創(chuàng)建myid文件,編輯myid文件內(nèi)的內(nèi)容包雀,輸入編號(hào)宿崭,比如2,3才写,4
- 配置zoo.cfg文件:一般是重命名conf目錄下的zoo_sample.cfg文件劳曹。并在其中修改dataDir字段,指定為zkData所在目錄琅摩,并增加server.2=服務(wù)器編號(hào):IP地址:該服務(wù)器與leader交換信息的端口:宕機(jī)時(shí)選舉的通信端口相應(yīng)信息铁孵。最后同步該文件。
(zookeeper在啟動(dòng)時(shí)讀取myid與cfg中的信息進(jìn)行比較從而確定該服務(wù)器是哪一臺(tái)) -
分別啟動(dòng)zookeeper服務(wù)房资,查看狀態(tài)
客戶端命令
$ zkCli.sh 啟動(dòng)客戶端
參考該博文
結(jié)構(gòu)體
1)czxid- 引起這個(gè)znode創(chuàng)建的zxid蜕劝,創(chuàng)建節(jié)點(diǎn)的事務(wù)的zxid
2)ctime - znode被創(chuàng)建的毫秒數(shù)(從1970年開(kāi)始)
3)mzxid - znode最后更新的zxid
4)mtime - znode最后修改的毫秒數(shù)(從1970年開(kāi)始)
5)pZxid-znode最后更新的子節(jié)點(diǎn)zxid
6)cversion - znode子節(jié)點(diǎn)變化號(hào),znode子節(jié)點(diǎn)修改次數(shù)
7)dataversion - znode數(shù)據(jù)變化號(hào)
8)aclVersion - znode訪問(wèn)控制列表的變化號(hào)
9)ephemeralOwner- 如果是臨時(shí)節(jié)點(diǎn),這個(gè)是znode擁有者的session id岖沛。如果不是臨時(shí)節(jié)點(diǎn)則是0
10)dataLength- znode的數(shù)據(jù)長(zhǎng)度
11)numChildren - znode子節(jié)點(diǎn)數(shù)量
監(jiān)聽(tīng)器的原理
寫(xiě)數(shù)據(jù)流程
剩下的就是Java示例了暑始,以后有機(jī)會(huì)再寫(xiě)。婴削。廊镜。