日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


 

前言:

在學習過程中,簡單的整理了一些redis跟zookeeper實現分布式鎖的區別,有需要改正跟補充的地方,希望各位大佬及時指出

Redis實現分布式鎖思路

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

Zookeeper實現分布式鎖思路

基于Zookeeper實現分布式鎖 Zookeeper是一個分布式協調工具,在分布式解決方案中。

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

Redis實現分布式鎖與Zookeeper實現分布式鎖區別

相同點

實現分布式鎖最終是通過什么方式?

在集群環境下,保證只允許有一個jvm進行執行。

不同點

從技術上分析

Redis 是nosql數據,主要特點緩存;

Zookeeper是分布式協調工具,主要用于分布式解決方案。

實現思路

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

獲取鎖

Zookeeper

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

Redis

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

釋放鎖

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

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

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

共同特征:如何解決死鎖現象問題

Zookeeper使用會話有效期方式解決死鎖現象。

Redis 是對key設置有效期解決死鎖現象

性能角度考慮

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

可靠性

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

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

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

總結下兩者區別

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

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

分享到:
標簽:分布式 Redis
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定