分布式協(xié)調(diào)系統(tǒng)Zookeeper


【Zookeeper簡(jiǎn)介】
ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。
ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯(cuò)的關(guān)鍵服務(wù),將簡(jiǎn)單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。
ZooKeeper包含一個(gè)簡(jiǎn)單的原語(yǔ)集,提供Java和C的接口。
ZooKeeper代碼版本中,提供了分布式獨(dú)享鎖、選舉、隊(duì)列的接口,代碼在$zookeeper_home\src\recipes。其中分布鎖和隊(duì)列有Java和C兩個(gè)版本,選舉只有Java版本。
?
【Zookeeper特點(diǎn)】
在Zookeeper中,znode是一個(gè)跟Unix文件系統(tǒng)路徑相似的節(jié)點(diǎn),可以往這個(gè)節(jié)點(diǎn)存儲(chǔ)或獲取數(shù)據(jù)。如果在創(chuàng)建znode時(shí)Flag設(shè)置為EPHEMERAL,那么當(dāng)創(chuàng)建這個(gè)znode的節(jié)點(diǎn)和Zookeeper失去連接后,這個(gè)znode將不再存在在Zookeeper里,Zookeeper使用Watcher察覺(jué)事件信息。當(dāng)客戶端接收到事件信息,比如連接超時(shí)、節(jié)點(diǎn)數(shù)據(jù)改變、子節(jié)點(diǎn)改變,可以調(diào)用相應(yīng)的行為來(lái)處理數(shù)據(jù)。Zookeeper的Wiki頁(yè)面展示了如何使用Zookeeper來(lái)處理事件通知,隊(duì)列,優(yōu)先隊(duì)列,鎖,共享鎖,可撤銷的共享鎖,兩階段提交。
那么Zookeeper能做什么事情呢,簡(jiǎn)單的例子:假設(shè)我們有20個(gè)搜索引擎的服務(wù)器(每個(gè)負(fù)責(zé)總索引中的一部分的搜索任務(wù))和一個(gè)總服務(wù)器(負(fù)責(zé)向這20個(gè)搜索引擎的服務(wù)器發(fā)出搜索請(qǐng)求并合并結(jié)果集),一個(gè)備用的總服務(wù)器(負(fù)責(zé)當(dāng)總服務(wù)器宕機(jī)時(shí)替換總服務(wù)器),一個(gè)web的cgi(向總服務(wù)器發(fā)出搜索請(qǐng)求)。搜索引擎的服務(wù)器中的15個(gè)服務(wù)器提供搜索服務(wù),5個(gè)服務(wù)器正在生成索引。這20個(gè)搜索引擎的服務(wù)器經(jīng)常要讓正在提供搜索服務(wù)的服務(wù)器停止提供服務(wù)開(kāi)始生成索引,或生成索引的服務(wù)器已經(jīng)把索引生成完成可以提供搜索服務(wù)了。使用Zookeeper可以保證總服務(wù)器自動(dòng)感知有多少提供搜索引擎的服務(wù)器并向這些服務(wù)器發(fā)出搜索請(qǐng)求,當(dāng)總服務(wù)器宕機(jī)時(shí)自動(dòng)啟用備用的總服務(wù)器。
?
【系統(tǒng)學(xué)習(xí)并掌握Z(yǔ)ookeeper】
尚硅谷Zookeeper教程
https://www.bilibili.com/video/BV1PW411r7iP
課程詳情:
Zookeeper主要應(yīng)用于大數(shù)據(jù)開(kāi)發(fā)中的,統(tǒng)一命名服務(wù)、統(tǒng)一配置管理、統(tǒng)一集群管理、服務(wù)器節(jié)點(diǎn)動(dòng)態(tài)上下線、軟負(fù)載均衡等場(chǎng)景。該框架相當(dāng)于大數(shù)據(jù)框架中的潤(rùn)滑劑。是大數(shù)據(jù)大數(shù)據(jù)開(kāi)發(fā)工程師所需會(huì)的框架之一。本套課程講解了Zookeeper的集群安裝、選舉機(jī)制、監(jiān)聽(tīng)器原理、寫數(shù)據(jù)流程、Shell命令行操作、客戶端API操作、服務(wù)器節(jié)點(diǎn)動(dòng)態(tài)上下線綜合案例,以及企業(yè)真實(shí)面試題。
