成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分布式鎖原理詳解(圖文全面總結)

云計算 分布式
在分布式系統后,由于分布式系統是分布在不同機器上,布式系統中競爭共享資源的最小粒度從線程升級成了進程,這將使原單機并發控制鎖策略失效。

分布式鎖

要理解分布式鎖,核心點是在于要理解共享資源訪問的問題。

比如:一個資源變量A,在單體應用中,如果有多個線程同時來競爭該資源A,可以通過Synchronized、或者ReentrantLcok上鎖來解決資源共享的問題。

但是,在分布式系統后,由于分布式系統是分布在不同機器上,布式系統中競爭共享資源的最小粒度從線程升級成了進程,這將使原單機并發控制鎖策略失效。

圖片圖片

為了解決這個問題,就需要一種跨服務,跨JVM的鎖機制,來控制共享資源的訪問,這就是分布式鎖。

分布式鎖的實現

首先為了確保分布式鎖可用,我們至少要確保鎖的實現同時滿足以下四個條件:

圖片圖片

1.互斥性

任意時刻只能有一個客戶端獲取鎖,不能同時有兩個客戶端獲取到鎖。

2.安全性

鎖只能被持有該鎖的客戶端刪除,不能由其它客戶端刪除。

3.死鎖

獲取鎖的客戶端因為某些原因,比如:down機等,而未能釋放鎖,其它客戶端再也無法獲取到該鎖。

4.容錯

當部分節點down機時,客戶端仍然能夠獲取鎖和釋放鎖。

常見的分布式鎖的實現有:Redis分布式鎖、Zookeeper分布式鎖等方式來實現分布式鎖。

如下所示:

import redis.clients.jedis.Jedis;


public class RedisDistributedLock {
    private Jedis jedis;
    private String lockKey;
    private String lockValue;  // 唯一標識,如UUID
    private int expireTime;    // 鎖的過期時間,單位毫秒


    public RedisDistributedLock(Jedis jedis, String lockKey, String lockValue, int expireTime) {
        this.jedis = jedis;
        this.lockKey = lockKey;
        this.lockValue = lockValue;
        this.expireTime = expireTime;
    }


    public boolean tryLock() {
        // 嘗試獲取鎖
        String result = jedis.set(lockKey, lockValue, "NX", "PX", expireTime);
        return "OK".equals(result);
    }
}

單實例的Redis存在單點故障問題,推薦使用Redis集群、或哨兵模式以增加可用性。

分布式鎖的應用場景

1.共享資源競爭

如果涉及到分布式環境(多機器)的資源競爭,多個進程同時操作共享資源,則需要分布式鎖。

原因剛才已經講過了,因為共享資源已經跨越到不同的服務器進程上了,java的鎖已經鎖不住了。

2.效率性

使用分布式鎖可以避免不同節點重復相同的工作。

3.業務場景

在電商業務里,最常見的場景:扣減庫存,以及在高并發的場景下,阻止流量打到后邊等等。

責任編輯:武曉燕 來源: mikechen的互聯網架構
相關推薦

2025-01-15 08:34:00

分布式事務服務

2025-01-26 11:54:39

分布式存儲系統

2022-07-25 06:44:19

ZooKeeper分布式鎖

2024-11-06 09:54:58

SpringJava開發

2025-05-07 03:33:00

2024-11-28 15:11:28

2022-03-11 10:03:40

分布式鎖并發

2021-02-28 07:49:28

Zookeeper分布式

2024-07-26 10:35:00

2024-09-04 09:43:36

2024-11-15 12:04:33

K8S容器化應用

2019-06-19 15:40:06

分布式鎖RedisJava

2019-10-10 09:16:34

Zookeeper架構分布式

2022-07-10 20:24:48

Seata分布式事務

2024-08-29 10:23:42

2024-05-31 13:34:57

2023-04-03 10:00:00

Redis分布式

2024-01-08 08:05:08

分開部署數據體系系統拆分

2018-07-17 08:14:22

分布式分布式鎖方位

2022-08-04 08:45:50

Redisson分布式鎖工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本亚洲欧美 | 午夜精品 | 美女天天操 | 国产一区二区在线免费观看 | 一区二区三区视频免费观看 | 国产伦精品一区二区三区视频金莲 | 国产精品日韩一区二区 | 国产黄视频在线播放 | 亚洲精品在线观看视频 | 成人午夜网 | 日韩视频一区 | 久久久www | 欧美日韩国产一区二区三区 | 欧美亚洲视频 | 精品视频一区二区在线观看 | 国产精品久久国产精品99 | 国产精品一区二区久久 | 久久久久久国产精品免费免费狐狸 | 午夜精品一区 | 久久在线视频 | 91国产精品 | 天天干天天爱天天操 | 亚州成人| 国产精品欧美一区二区三区不卡 | 久久精品aaa | 91电影在线播放 | 中文字幕在线观 | av中文在线 | 国产精品久久 | 欧美精品一区二区三区四区 在线 | 91在线看片| 久久男人天堂 | 久久综合一区 | 黄色网址在线免费播放 | 久久婷婷av | 免费看av大片| 久久精品亚洲精品国产欧美 | 一区二区在线免费观看 | 欧美色综合天天久久综合精品 | 亚洲美女一区 | 欧美日韩理论 |