91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

zookeeper高級特性有哪些

發布時間:2021-12-23 12:01:06 來源:億速云 閱讀:147 作者:iii 欄目:云計算

這篇文章主要講解了“zookeeper高級特性有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“zookeeper高級特性有哪些”吧!

一、三個概念

1.CreateMode

在create的時候可以設置znode的類型

主要有四種:

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

PERSISTENT_SEQUENTIAL(持久的且帶順序的)

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

EPHEMERAL_SEQUENTIAL  (短暫的,帶順序的)

2.Watcher

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

可以自定義Watcher,注冊給zonde。

watcher分為兩大類:data watches和child watches。前者監聽數據的變動,后者監聽子node的變動。

Watcher是一次性的!一旦被調用,則需要重新注冊。

3.ACL

acl即access control。zookeeper通過ACL機制來控制權限。創建znode的時候可以指定。前邊我們講過,一套zookeeper會被多個程序使用。就像linux支持多用戶一樣。所以需要有一套權限控制:不然自己創建的節點,被別的應用程序無緣無故刪了,那找誰去?

Zookeeper的權限級別:

READ: 允許獲取該節點的值和列出子節點。

WRITE: 允許設置該節點的值。

CREATE: 允許創建子節點。

DELETE: 可以刪除子節點。

ADMIN: 超級權限。相當于root

從上到下遞次增強,后面的權限包含前面的權限。

zookeeper的很多高級特性,都是基于以上三個概念來實現的。特別是CreateMode和Watcher

二、java客戶端

zookeeper官方提供了java客戶端。提供的接口也比較基礎。比前一篇測試用到的telnet客戶端唯一強的一點就是:我們可以在代碼里實現Watcher接口實現擴展的業務!在命令行可是做不到這點的。。

maven依賴:

<dependency>
	<groupId>org.apache.zookeeper</groupId>
	<artifactId>zookeeper</artifactId>
	<version>3.4.6</version>
</dependency>



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


zookeeper高級特性有哪些
 

 接口都很直觀,描述也很詳細。就不做額外的說明了。

三、一些高級特性實現原理。

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

2.配置推送:比如某個前端網站有100臺機器,我們要做的是在每臺機器上都有一個main程序連zookeeper,注冊好Watcher。在本地連zookeeper把配置寫入,zookeeper就會通過Watcher,自動把配置推送到這些機器上。而不需要去手動去更新。(相當于運維的腳本。)


zookeeper高級特性有哪些
 

3.集群管理:

每個Server起來之后都在 Zookeeper 上創建一個 EPHEMERAL 類型的znode,假設他們都有一個共同的父GroupMembers!我們在每個Server上調用getChildren(GroupMembers)方法,并注冊一個 Child Watcher。由于是 EPHEMERAL 的znode,當創建它的 Server 死去,這個znode也隨之被刪除,所以 Children 將會變化,這時 getChildren上的 Watcher 將會被調用,所以其它 Server 就知道已經有某臺 Server 死去了。新增 Server 也是同樣的原理。

4.Leader選舉

和集群管理的設計基本一樣,不同的地方是,這次創建的znone類型是EPHEMERAL_SEQUENTIAL ,不僅僅隨著member的同生同滅,而且是有順序的。我們只要把編號最小的member認為是Master,就可以做到Leader的動態選舉!


zookeeper高級特性有哪些
 

5.全局鎖

     zookeeper可以利用他優秀的數據一致性算法來提供可靠的全局鎖服務。

獲得鎖是一個遞歸的過程

1.創建znode "/distributed_lock"

2.在distributed_lock下新建子節點"/distributed_lock/xxxxxx",EPHEMERAL_SEQUENTIAL 模式,當前序號假如是i。

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

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

注:雖然EPHEMERAL_SEQUENTIAL是遞增的,但仍然不能粗暴的認為緊跟在i后邊的節點j=i-1。這是因為釋放鎖的順序并不是完全按照節點順序!

釋放鎖:

刪除自己創建的子節點即可

6.分布式隊列

類似于上邊全局鎖的設計。只要確保每次消費的時候編號都是最小的。就能做到先進先出。

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

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

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

感謝各位的閱讀,以上就是“zookeeper高級特性有哪些”的內容了,經過本文的學習后,相信大家對zookeeper高級特性有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汤原县| 三明市| 漳平市| 信阳市| 锡林郭勒盟| 巴东县| 连山| 阿荣旗| 如东县| 分宜县| 梁平县| 乐至县| 丰城市| 土默特左旗| 偏关县| 泽库县| 枣庄市| 彭阳县| 溧阳市| 景洪市| 金乡县| 库伦旗| 泸溪县| 山阴县| 原阳县| 岫岩| 北票市| 新邵县| 金阳县| 赤城县| 广灵县| 牡丹江市| 友谊县| 肥西县| 沁源县| 镇原县| 祁连县| 电白县| 兴化市| 凤庆县| 德保县|