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

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

ZooKeeper鎖服務(wù)-創(chuàng)新互聯(lián)

分布式鎖在一組進程之間提供了一種互斥機制。在任何時刻,只有一個進程可以持有鎖。分布式鎖可以應(yīng)用于大型分布式系統(tǒng)中實現(xiàn)領(lǐng)導者選舉,在任何時間點,持有鎖的進程就是系統(tǒng)的領(lǐng)導者。

成都創(chuàng)新互聯(lián)為客戶提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項目涵蓋了網(wǎng)頁設(shè)計、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機網(wǎng)站制作設(shè)計等網(wǎng)站方面業(yè)務(wù)。

為了使用ZooKeeper來實現(xiàn)分布式鎖服務(wù),我們使用順序znode來為那些競爭鎖的進程強制排序。

實現(xiàn)思路很簡單:

首先指定一個作為鎖的znode,通常用它來描述被鎖定的實體,稱為/leader;

然后希望獲得鎖的客戶端創(chuàng)建一些短暫znode,作為鎖znode的子節(jié)點。

在任何時間點,順序號最小的客戶端將持有鎖。

例如,兩個客戶端差不多同時創(chuàng)建znode,分別為/leader/lock-1 和 /leader/lock-2,那么創(chuàng)建/leader/lock-1的客戶端將會持有鎖,因為它的znode順序號最小。

ZooKeeper服務(wù)是順序的仲裁者,因為它負責分配順序號。

通過刪除znode /leader/lock-1即可簡單的釋放鎖;另外,如果客戶端進程死亡,對應(yīng)的短暫znode也會被刪除。

接下來,創(chuàng)建/leader/lock-2的客戶端將持有鎖,因為它的順序號緊跟前一個。通過創(chuàng)建一個關(guān)于znode刪除的觀察,可以是客戶端在獲得鎖時得到通知。

申請獲取所得偽代碼:

1.在鎖znode下創(chuàng)建一個名為lock-的短暫順序znode,并且記住它的實際路徑名(create操作的返回值)。

2.查詢鎖znode的子節(jié)點并設(shè)置一個觀察。

3.如果步驟1中所創(chuàng)建的znode在步驟2中所返回的所有子節(jié)點中具有最小的順序號,則獲取到鎖。退出。

4.等待步驟2中所設(shè)置的觀察的通知并且轉(zhuǎn)到步驟2.

ZooKeeper中的鎖機制

加鎖:

ZooKeeper 將按照如下方式實現(xiàn)加鎖的操作:

1 ) ZooKeeper 調(diào)用 create ()方法來創(chuàng)建一個路徑格式為“ _locknode_/lock- ”的節(jié)點,此節(jié)點類型為 sequence (連續(xù))和 ephemeral (臨時)。也就是說,創(chuàng)建的節(jié)點為臨時節(jié)點,并且所有的節(jié)點連續(xù)編號,即“ lock-i ”的格式。

2 )在創(chuàng)建的鎖節(jié)點上調(diào)用 getChildren ()方法,來獲取鎖目錄下的最小編號節(jié)點,并且不設(shè)置 watch 。

3 )步驟 2 中獲取的節(jié)點恰好是步驟 1 中客戶端創(chuàng)建的節(jié)點,那么此客戶端獲得此種類型的鎖,然后退出操作。

4 )客戶端在鎖目錄上調(diào)用 exists ()方法,并且設(shè)置 watch 來監(jiān)視鎖目錄下比自己小一個的連續(xù)臨時節(jié)點的狀態(tài)。

5 )如果監(jiān)視節(jié)點狀態(tài)發(fā)生變化,則跳轉(zhuǎn)到第 2 步,繼續(xù)進行后續(xù)的操作,直到退出鎖競爭。

解鎖:

ZooKeeper 解鎖操作非常簡單,客戶端只需要將加鎖操作步驟 1 中創(chuàng)建的臨時節(jié)點刪除即可。

羊群效應(yīng)

“羊群效應(yīng)”就是指大量客戶端收到同一事件的通知,但實際只有很少一部分需要處理這一事件。

設(shè)想當有成百上千客戶端,都在嘗試獲得鎖,每個客戶端都會在鎖上設(shè)置觀察,來捕捉節(jié)點的變化。每次鎖被釋放或另一個進程申請獲取鎖時,觀察都會被觸發(fā)并且每個客戶端都會收到一個通知,但只有一個客戶端會成功獲得鎖。這時就會造成大量的峰值流量,給zookeeper服務(wù)器造成壓力。

為了避免羊群效應(yīng),我們需要優(yōu)化通知事件,將沒必要的觀察通知去掉,如刪除等,只有在前一個順序號的子節(jié)點消失時才需要通知下一個客戶端。

ZooKeeper帶有一個Java語言編寫的生產(chǎn)級別的鎖實現(xiàn),名為writelock,客戶端可以很方便的使用它。

ZooKeeper官網(wǎng)關(guān)于鎖服務(wù)的介紹:

http://zookeeper.apache.org/doc/trunk/recipes.html#sc_recipes_Locks

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁標題:ZooKeeper鎖服務(wù)-創(chuàng)新互聯(lián)
本文鏈接:http://weahome.cn/article/djjpdo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部