真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

zookeeper高級(jí)特性有哪些

這篇文章主要講解了“zookeeper高級(jí)特性有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“zookeeper高級(jí)特性有哪些”吧!

成都創(chuàng)新互聯(lián)公司專注于仙桃網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供仙桃營(yíng)銷型網(wǎng)站建設(shè),仙桃網(wǎng)站制作、仙桃網(wǎng)頁(yè)設(shè)計(jì)、仙桃網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造仙桃網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供仙桃網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

一、三個(gè)概念

1.CreateMode

在create的時(shí)候可以設(shè)置znode的類型

主要有四種:

PERSISTENT (持續(xù)的,相對(duì)于EPHEMERAL,不會(huì)隨著client的斷開而消失)

PERSISTENT_SEQUENTIAL(持久的且?guī)ы樞虻模?/p>

EPHEMERAL (短暫的,生命周期依賴于client session)

EPHEMERAL_SEQUENTIAL  (短暫的,帶順序的)

2.Watcher

Watcher是一種反向推送機(jī)制,即zonde(包括他的child)有改變的時(shí)候會(huì)通知客戶端。

可以自定義Watcher,注冊(cè)給zonde。

watcher分為兩大類:data watches和child watches。前者監(jiān)聽數(shù)據(jù)的變動(dòng),后者監(jiān)聽子node的變動(dòng)。

Watcher是一次性的!一旦被調(diào)用,則需要重新注冊(cè)。

3.ACL

acl即access control。zookeeper通過(guò)ACL機(jī)制來(lái)控制權(quán)限。創(chuàng)建znode的時(shí)候可以指定。前邊我們講過(guò),一套zookeeper會(huì)被多個(gè)程序使用。就像linux支持多用戶一樣。所以需要有一套權(quán)限控制:不然自己創(chuàng)建的節(jié)點(diǎn),被別的應(yīng)用程序無(wú)緣無(wú)故刪了,那找誰(shuí)去?

Zookeeper的權(quán)限級(jí)別:

READ: 允許獲取該節(jié)點(diǎn)的值和列出子節(jié)點(diǎn)。

WRITE: 允許設(shè)置該節(jié)點(diǎn)的值。

CREATE: 允許創(chuàng)建子節(jié)點(diǎn)。

DELETE: 可以刪除子節(jié)點(diǎn)。

ADMIN: 超級(jí)權(quán)限。相當(dāng)于root

從上到下遞次增強(qiáng),后面的權(quán)限包含前面的權(quán)限。

zookeeper的很多高級(jí)特性,都是基于以上三個(gè)概念來(lái)實(shí)現(xiàn)的。特別是CreateMode和Watcher

二、java客戶端

zookeeper官方提供了java客戶端。提供的接口也比較基礎(chǔ)。比前一篇測(cè)試用到的telnet客戶端唯一強(qiáng)的一點(diǎn)就是:我們可以在代碼里實(shí)現(xiàn)Watcher接口實(shí)現(xiàn)擴(kuò)展的業(yè)務(wù)!在命令行可是做不到這點(diǎn)的。。

maven依賴:


	org.apache.zookeeper
	zookeeper
	3.4.6

下面是一些重要的接口列表。


zookeeper高級(jí)特性有哪些
 

 接口都很直觀,描述也很詳細(xì)。就不做額外的說(shuō)明了。

三、一些高級(jí)特性實(shí)現(xiàn)原理。

1.Name Service:有點(diǎn)類似JNDI,樹形目錄天生的就有全局唯一名稱。這功能實(shí)踐中也沒(méi)什么用,而且替代方案也很多。略。

2.配置推送:比如某個(gè)前端網(wǎng)站有100臺(tái)機(jī)器,我們要做的是在每臺(tái)機(jī)器上都有一個(gè)main程序連zookeeper,注冊(cè)好Watcher。在本地連zookeeper把配置寫入,zookeeper就會(huì)通過(guò)Watcher,自動(dòng)把配置推送到這些機(jī)器上。而不需要去手動(dòng)去更新。(相當(dāng)于運(yùn)維的腳本。)


zookeeper高級(jí)特性有哪些
 

3.集群管理:

每個(gè)Server起來(lái)之后都在 Zookeeper 上創(chuàng)建一個(gè) EPHEMERAL 類型的znode,假設(shè)他們都有一個(gè)共同的父GroupMembers!我們?cè)诿總€(gè)Server上調(diào)用getChildren(GroupMembers)方法,并注冊(cè)一個(gè) Child Watcher。由于是 EPHEMERAL 的znode,當(dāng)創(chuàng)建它的 Server 死去,這個(gè)znode也隨之被刪除,所以 Children 將會(huì)變化,這時(shí) getChildren上的 Watcher 將會(huì)被調(diào)用,所以其它 Server 就知道已經(jīng)有某臺(tái) Server 死去了。新增 Server 也是同樣的原理。

4.Leader選舉

和集群管理的設(shè)計(jì)基本一樣,不同的地方是,這次創(chuàng)建的znone類型是EPHEMERAL_SEQUENTIAL ,不僅僅隨著member的同生同滅,而且是有順序的。我們只要把編號(hào)最小的member認(rèn)為是Master,就可以做到Leader的動(dòng)態(tài)選舉!


zookeeper高級(jí)特性有哪些
 

5.全局鎖

     zookeeper可以利用他優(yōu)秀的數(shù)據(jù)一致性算法來(lái)提供可靠的全局鎖服務(wù)。

獲得鎖是一個(gè)遞歸的過(guò)程

1.創(chuàng)建znode "/distributed_lock"

2.在distributed_lock下新建子節(jié)點(diǎn)"/distributed_lock/xxxxxx",EPHEMERAL_SEQUENTIAL 模式,當(dāng)前序號(hào)假如是i。

3.對(duì)distributed_lock調(diào)用getChildren(),如果i是children列表里最小的,則獲得鎖;否則進(jìn)入第4步

4.等待children列表里緊跟在i后邊的那個(gè)節(jié)點(diǎn)被刪除的通知(exists()方法)。記為j。而j又依賴于僅比j小的節(jié)點(diǎn)k。一直遞歸等待最小的znode的被刪除。。

注:雖然EPHEMERAL_SEQUENTIAL是遞增的,但仍然不能粗暴的認(rèn)為緊跟在i后邊的節(jié)點(diǎn)j=i-1。這是因?yàn)獒尫沛i的順序并不是完全按照節(jié)點(diǎn)順序!

釋放鎖:

刪除自己創(chuàng)建的子節(jié)點(diǎn)即可

6.分布式隊(duì)列

類似于上邊全局鎖的設(shè)計(jì)。只要確保每次消費(fèi)的時(shí)候編號(hào)都是最小的。就能做到先進(jìn)先出。

7 。。。略  根據(jù)zookeeper創(chuàng)建節(jié)點(diǎn)類型的不同,再結(jié)合Watcher特性。還可以提供其他很多的功能。比如各種類型queue,各種類型的Lock(上面僅僅介紹了write鎖),barriers,信號(hào)量Semaphore  原子類型AtomicInteger等等。。。

所有的這些都是分布式的,高可靠的。

更多更全的功能在netflix 公司開源的 zookeeper客戶端Curator中有實(shí)現(xiàn)。作為普通開發(fā)者,直接使用Curator是最高效的!

感謝各位的閱讀,以上就是“zookeeper高級(jí)特性有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)zookeeper高級(jí)特性有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


文章名稱:zookeeper高級(jí)特性有哪些
本文路徑:http://weahome.cn/article/ggieii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部