溫馨提示×

溫馨提示×

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

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

Redis實現(xiàn)分布式鎖與Zookeeper實現(xiàn)分布式鎖區(qū)別

發(fā)布時間:2020-06-23 13:26:18 來源:網(wǎng)絡(luò) 閱讀:743 作者:java周某人 欄目:編程語言

Redis實現(xiàn)分布式鎖與Zookeeper實現(xiàn)分布式鎖區(qū)別

**
前言:

在學(xué)習(xí)過程中,簡單的整理了一些redis跟zookeeper實現(xiàn)分布式鎖的區(qū)別,有需要改正跟補充的地方,希望各位大佬及時指出
**
Redis實現(xiàn)分布式鎖思路

基于Redis實現(xiàn)分布式鎖(setnx)setnx也可以存入key,如果存入key成功返回1,如果存入的key已經(jīng)存在了,返回0.

Zookeeper實現(xiàn)分布式鎖思路

基于Zookeeper實現(xiàn)分布式鎖 Zookeeper是一個分布式協(xié)調(diào)工具,在分布式解決方案中。

多個客戶端(jvm),同時在zookeeper上創(chuàng)建相同的一個臨時節(jié)點,因為臨時節(jié)點路徑是保證唯一,只要誰能夠創(chuàng)建節(jié)點成功,誰就能夠獲取到鎖,沒有創(chuàng)建成功節(jié)點,就會進(jìn)行等待,當(dāng)釋放鎖的時候,采用事件通知給客戶端重新獲取鎖的資源。

Redis實現(xiàn)分布式鎖與Zookeeper實現(xiàn)分布式鎖區(qū)別

相同點

實現(xiàn)分布式鎖最終是通過什么方式?

在集群環(huán)境下,保證只允許有一個jvm進(jìn)行執(zhí)行。

不同點

從技術(shù)上分析

Redis 是nosql數(shù)據(jù),主要特點緩存;

Zookeeper是分布式協(xié)調(diào)工具,主要用于分布式解決方案。

實現(xiàn)思路

核心通過獲取鎖、釋放鎖、死鎖問題

獲取鎖

Zookeeper

多個客戶端(jvm),會在Zookeeper上創(chuàng)建同一個臨時節(jié)點,因為Zookeeper節(jié)點命名路徑保證唯一,不允許出現(xiàn)重復(fù),只要誰能夠先創(chuàng)建成功,誰能夠獲取到鎖。

Redis

多個客戶端(jvm),會在Redis使用setnx命令創(chuàng)建相同的一個key,因為Redis的key保證唯一,不允許出現(xiàn)重復(fù),只要誰能夠先創(chuàng)建成功,誰能夠獲取到鎖。

釋放鎖

Zookeeper使用直接關(guān)閉臨時節(jié)點session會話連接,因為臨時節(jié)點生命周期與session會話綁定在一塊,如果session會話連接關(guān)閉的話,該臨時節(jié)點也會被刪除。

這時候客戶端使用事件監(jiān)聽,如果該臨時節(jié)點被刪除的話,重新進(jìn)入盜獲取鎖的步驟。

Redis在釋放鎖的時候,為了確保是鎖的一致性問題,在刪除的redis 的key時候,需要判斷同一個鎖的id,才可以刪除。

共同特征:如何解決死鎖現(xiàn)象問題

Zookeeper使用會話有效期方式解決死鎖現(xiàn)象。

Redis 是對key設(shè)置有效期解決死鎖現(xiàn)象

性能角度考慮

因為Redis是NoSQL數(shù)據(jù)庫,相對比來說Redis比Zookeeper性能要好。

可靠性

從可靠性角度分析,Zookeeper可靠性比Redis更好。

因為Redis有效期不是很好控制,可能會產(chǎn)生有效期延遲;

Zookeeper就不一樣,因為Zookeeper臨時節(jié)點先天性可控的有效期,所以相對來說Zookeeper比Redis更好

總結(jié)下兩者區(qū)別

Redis分布式鎖,必須使用者自己間隔時間輪詢?nèi)L試加鎖,當(dāng)鎖被釋放后,存在多線程去爭搶鎖,并且可能每次間隔時間去嘗試鎖的時候,都不成功,對性能浪費很大。

Zookeeper分布鎖,首先創(chuàng)建加鎖標(biāo)志文件,如果需要等待其他鎖,則添加監(jiān)聽后等待通知或者超時,當(dāng)有鎖釋放,無須爭搶,按照節(jié)點順序,依次通知使用者。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI