免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      Zookeeper分布式鎖安全嗎

      Zookeeper分布式鎖安全嗎

      Martin和Antirez爭(zhēng)論點(diǎn)

      在之前的文章討論基于Redis的RedLock分布式鎖中,有提到劍橋分布式專家Martin指出,RedLock安全性并不高,并且其中有一個(gè)假設(shè)場(chǎng)景如下

      假設(shè)存在多個(gè)實(shí)例A、B、C、D、E,同時(shí)存在客戶端1和2有如下場(chǎng)景

      • 客戶端1請(qǐng)求實(shí)例A、B、C、D、E獲取鎖成功。
      • 客戶端1開始操作共享資源,這時(shí)發(fā)生GC網(wǎng)絡(luò)暫停,stop-the-world。
      • 在GC期間客戶端1持有的所有實(shí)例上的鎖過期。
      • 客戶端2向?qū)嵗鼳、B、C、D、E請(qǐng)求獲取鎖,成功。
      • 客戶端2操作共享資源,這時(shí)客戶端1從GC中恢復(fù),客戶端1無法感知鎖已經(jīng)過期,也操作共享資源導(dǎo)致沖突

      這個(gè)假設(shè)Redis之父Antirez指出在獲取鎖后發(fā)生的NPC(N:網(wǎng)絡(luò)延遲、P:進(jìn)程暫停、C:時(shí)鐘跳躍)問題RedLock無法處理,但這不僅僅是RedLock的問題,其余分布式鎖也有這個(gè)問題,如Zookeeper。

      Zookeeper是否安全呢

      上面的場(chǎng)景與我們理解的如果需要構(gòu)建更加安全的分布式鎖,首要參考的就是Zookeeper思想有沖突,那么我們應(yīng)該如何抉擇呢,下面參考Zookeeper的作者之一Flavio Junqueira寫的一篇博客Note on fencing and distributed locks

      原文鏈接:https://fpj.systems/2016/02/10/note-on-fencing-and-distributed-locks/

      Zookeeper構(gòu)建分布式鎖的步驟

      Flavio Junqueira指出構(gòu)建的一種方式,步驟如下

      • 客戶端嘗試創(chuàng)建一個(gè)znode節(jié)點(diǎn)如/lock,第一個(gè)客戶端創(chuàng)建成功后相當(dāng)于拿到了鎖,后續(xù)的客戶端再去創(chuàng)建/lock因?yàn)橐呀?jīng)存在那么創(chuàng)建會(huì)失敗。
      • 持有鎖的客戶端在訪問共享資源后,將znode節(jié)點(diǎn)刪除,那么其它客戶端可以繼續(xù)創(chuàng)建znode節(jié)點(diǎn)。
      • znode的節(jié)點(diǎn)應(yīng)該是臨時(shí)的,這樣才能保證如果客戶端突然崩潰,這個(gè)客戶端持有的znode節(jié)點(diǎn)才會(huì)被刪除,保證鎖的釋放。

      這樣看起來非常完美,因?yàn)闆]有Redis那種設(shè)置自動(dòng)過期時(shí)間,可能因?yàn)闀r(shí)鐘跳躍導(dǎo)致鎖提前過期的情況,但真是這樣嗎,我們先來思考一個(gè)問題,客戶端突然崩潰zookeeper如何能快速感知到呢?

      Zookeeper心跳檢測(cè)

      每個(gè)客戶端都會(huì)和Zookeeper之間維護(hù)一個(gè)Session,這個(gè)Session依賴心跳維護(hù),如果Zookeeper在規(guī)定時(shí)間內(nèi)未收到客戶端心跳回復(fù),那么將認(rèn)為客戶端失去鏈接,這時(shí)就會(huì)將這個(gè)Session創(chuàng)建的所有臨時(shí)節(jié)點(diǎn)刪除。

      Zookeeper的安全問題

      正是因?yàn)閆ookeeper存在心跳檢測(cè)這個(gè)問題,那么可能出現(xiàn)以下場(chǎng)景。

      • 客戶端1連接Zookeeper后創(chuàng)建一個(gè)znode臨時(shí)節(jié)點(diǎn)/lock成功。
      • 客戶端1進(jìn)入長(zhǎng)時(shí)間的GC,進(jìn)程暫停。
      • 客戶端1連接到Zookeeper的session長(zhǎng)時(shí)間未收到心跳回復(fù),并且超過過期時(shí)間,自動(dòng)刪除創(chuàng)建的臨時(shí)節(jié)點(diǎn)/lock。
      • 客戶端2連接Zookeeper后同樣創(chuàng)建znode臨時(shí)節(jié)點(diǎn)/lock成功。
      • 客戶端2開始操作共享資源,這時(shí)客戶端1恢復(fù)同樣操作共享資源,沖突產(chǎn)生。

      這個(gè)場(chǎng)景就和上面分布式專家Martin提出的場(chǎng)景類似,在獲取鎖后發(fā)生NPC問題,這是單純依靠分布式鎖無法處理。

      ZooKeeper的watch機(jī)制

      ZooKeeper雖然單純依賴自己無法解決獲取鎖后的NPC安全性問題,但是其watch特性,將分布式鎖變地像一個(gè)單機(jī)鎖實(shí)現(xiàn)。

      當(dāng)客戶端試圖創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn)/lock時(shí),如果發(fā)現(xiàn)節(jié)點(diǎn)已經(jīng)創(chuàng)建,這時(shí)客戶端可以不立即失敗,客戶端可以進(jìn)入一個(gè)阻塞等待狀態(tài),等待當(dāng)/lock節(jié)點(diǎn)被刪除后,Zookeeper通過watch機(jī)制通知給客戶端,這樣的方式就好像JAVA中獲取單機(jī)鎖一樣方便。

      Zookeeper和Redis對(duì)比

      Zookeeper和Redis都能實(shí)現(xiàn)分布式鎖,優(yōu)勢(shì)如下

      • 在客戶端和Zookeeper連接正常的情況下,客戶端可以持有鎖任意時(shí)長(zhǎng),這可以確保客戶端在持有鎖后操作共享資源并不會(huì)因?yàn)闃I(yè)務(wù)操作過長(zhǎng)而導(dǎo)致鎖過期,可以解決Redis過期時(shí)間到底設(shè)置多久的難題。
      • Zookeeper支持的Watch機(jī)制,可以讓Zookeeper實(shí)現(xiàn)的分布式鎖,使用起來更加靈活,像使用本地鎖一樣。

      劣勢(shì)

      • Zookeeper與客戶端如果長(zhǎng)期沒有心跳那么鎖將自動(dòng)釋放。
      • 性能不如Redis。

      總結(jié)

      分布式鎖可以由多種方式實(shí)現(xiàn),但是看完分布式專家Martin和Redis作者的討論后,在極端情況分布式鎖并不是完全安全的,Zookeeper也不能例外,所以這也就是分布式鎖都面臨著NPC三座大山的考驗(yàn),如果我們放在關(guān)鍵業(yè)務(wù)處理時(shí)并不能完全依靠分布式鎖,還需要有類似Martin提出的fecing token防護(hù)令牌兜底。

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年6月13日 06:09
      下一篇 2022年6月13日 06:10

      相關(guān)推薦

      • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應(yīng)該怎么發(fā))

        對(duì)于微商朋友來說,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營(yíng)一個(gè)朋友圈,有的微商看起來逼格滿滿,實(shí)際效果也不錯(cuò);而有的卻動(dòng)都不動(dòng)就被屏蔽甚至拉黑…

        2022年11月27日
      • 部落沖突5本陣型(部落沖突5本陣型鏈接復(fù)制2023)

        本文主要講的是部落沖突5本陣型,以及和部落沖突5本陣型鏈接復(fù)制2021相關(guān)的知識(shí),如果覺得本文對(duì)您有所幫助,不要忘了將本文分享給朋友。 《部落沖突》五本陣型是什么? 《部落沖突》五…

        2022年11月27日
      • 淘寶直播開通后帶貨鏈接怎么做(淘寶直播需要開通淘寶店鋪嗎)

        直播帶貨無論是對(duì)于商家來說還是主播收益都是非??捎^的,所以不少平臺(tái)都有直播帶貨功能,一些小伙伴也想加入淘寶直播,那么淘寶直播開通后帶貨鏈接怎么做?下面小編為大家?guī)硖詫氈辈ラ_通后帶…

        2022年11月24日
      • 新版找不到切換農(nóng)村淘寶(現(xiàn)在怎么找不到農(nóng)村淘寶了)

        2017年農(nóng)村淘寶APP升級(jí)為手機(jī)淘寶家鄉(xiāng)版,于是手機(jī)淘寶就分為兩個(gè)版本,一個(gè)家鄉(xiāng)版和標(biāo)準(zhǔn)版。今年五一假期一過淘寶又發(fā)出新公告將陸續(xù)升級(jí)! 左邊為標(biāo)準(zhǔn)版,右邊為家鄉(xiāng)版 據(jù)公告,升級(jí)…

        2022年11月24日
      • magicos7.0有什么功能? magicos7.0更新內(nèi)容功能介紹

        Magicos7.0有什么功能?Magicos7.0系統(tǒng)正式發(fā)布后很多用戶比較關(guān)心新系統(tǒng)帶來的新功能有哪些。這次的系統(tǒng)升級(jí)給用戶帶來了更好的人機(jī)交互體驗(yàn),加入了很多便捷的操作功能,…

        2022年11月23日
      • 國(guó)家衛(wèi)健委:各地進(jìn)一步加大層層加碼整治力度

        據(jù)央視新聞,國(guó)家疾控局傳防司二級(jí)巡視員胡翔22日在國(guó)務(wù)院聯(lián)防聯(lián)控機(jī)制新聞發(fā)布會(huì)上介紹,近期,國(guó)務(wù)院聯(lián)防聯(lián)控機(jī)制綜合組通過視頻會(huì)商、調(diào)度和培訓(xùn)等多種方式,部署調(diào)度各地盡快推進(jìn)二十條優(yōu)…

        2022年11月23日
      • 快手限流多久能解除(快手限流什么意思)

        我相信很多人都看中了快手平臺(tái)的商機(jī),都爭(zhēng)先恐后地想要搶占機(jī)會(huì),可一些人剛剛作出一點(diǎn)成績(jī),就被降權(quán)了,自己也不知道什么原因。所以今天就來聊聊快手賬號(hào)降權(quán)操作分享,趕快來看看避免違規(guī)!…

        2022年11月23日
      • 太原一化工廠發(fā)生爆炸!附近居民:房屋玻璃被震碎

        11月21日下午5時(shí)25分許,位于山西太原尖草坪區(qū)的江陽化工廠疑似發(fā)生爆炸事故,劇烈震動(dòng)使周邊居民樓和商鋪都發(fā)生玻璃碎裂?;鹨驯粨錅纾瑐銮闆r暫未得到消息。 據(jù)網(wǎng)傳多段視頻顯示,一…

        2022年11月23日
      • Win11 22H2再出新問題Bug:無法彈出USB設(shè)備

        作為Windows 11的首次大更新,在Win11 22H2發(fā)布后并沒有帶來預(yù)想的場(chǎng)景,各種問題頻現(xiàn)成為了一種常態(tài)。 近日有消息稱,Win11 22H2存在一個(gè)占用沖突Bug,當(dāng)用…

        2022年11月22日
      • 濟(jì)南疫情源頭在哪里怎么發(fā)生的(濟(jì)南疫情的源頭)

        近日許多小伙伴都在關(guān)注濟(jì)南疫情,本輪濟(jì)南疫情發(fā)生也有段時(shí)間了 ,目前疫情新增陽性感染者還在持續(xù)攀升。11月20日12時(shí)至24時(shí),濟(jì)南新增本土確診病例(輕型)19例、、無癥狀感染者2…

        2022年11月21日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息