亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

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

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

作者 | mushishi

來源 | urlify.cn/Mry6bi

redis分布式鎖基本原理

采用 redis 實現分布式鎖,主要是利用其單線程命令執行的特性,一般是 setnx, 只會有一個線程會執行成功,也就是只有一個線程能成功獲取鎖;看著很完美

看看可能有什么問題?

一般生產環境為了可用性,redis 會部署 master-slave + sentinel 的結構, 如:

redis實現分布式鎖天然的缺陷

 


master 提供服務、slave standby 作為備份節點不提供服務, master異步將數據復制給 slave 以保證數據一致, sentinel哨兵檢查 master節點,當master節點故障時 將slave節點提升為 新的master 對外提供服務;

正常情況下,都是當前 master 對外提供服務,多個線程 setnx 只會有一個成功

redis實現分布式鎖天然的缺陷

 

當 master 故障時

線上環境嘛,總會有各種各樣的故障出現,這也是為什么要部署 ha 的原因;

我們設想,thread-1 setnx a 1 成功后,master節點發生故障;但是,此時 a=1 這條數據還沒來得及同步到 slave 節點,然后 sentinel 哨兵會進行故障切換將 slave 提升上來對外提供服務, 然后 thread-2 來 setnx a 1 加鎖,因為之前鎖狀態在 slave 不存在,那這時候 thread-2 也會加鎖成功, 這個時候鎖的語義就被破壞了

redis實現分布式鎖天然的缺陷

 

 

分享到:
標簽: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

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