国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分布式鎖解決方案_Zookeeper實(shí)現(xiàn)分布式鎖

這篇具有很好參考價(jià)值的文章主要介紹了分布式鎖解決方案_Zookeeper實(shí)現(xiàn)分布式鎖。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

系列文章目錄

提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加
分布式鎖解決方案_Zookeeper實(shí)現(xiàn)分布式鎖


提示:寫完文章后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔


前言

提示:這里可以添加本文要記錄的大概內(nèi)容:

Zookeeper 是一個(gè)開(kāi)源的分布式協(xié)調(diào)服務(wù),它提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)管理分布式系統(tǒng)中的數(shù)據(jù)和狀態(tài)。通過(guò)利用 Zookeeper 的特性,我們可以構(gòu)建一個(gè)高可靠性和高性能的分布式鎖實(shí)現(xiàn)。
博客將詳細(xì)介紹 Zookeeper 實(shí)現(xiàn)分布式鎖的原理和步驟,包括創(chuàng)建鎖節(jié)點(diǎn)、獲取鎖、釋放鎖。我們還將討論 Zookeeper 的可靠性和容錯(cuò)性,以及如何處理節(jié)點(diǎn)的刪除和會(huì)話超時(shí)。
通過(guò)閱讀這篇博客,你將了解到如何使用 Zookeeper 來(lái)實(shí)現(xiàn)分布式鎖,以及如何在實(shí)際的分布式系統(tǒng)中應(yīng)用這些技術(shù)。無(wú)論是構(gòu)建高性能的分布式應(yīng)用還是解決并發(fā)問(wèn)題,分布式鎖都是一個(gè)重要的工具。希望這篇博客能為你提供有價(jià)值的信息,并幫助你在分布式系統(tǒng)中更好地管理共享資源。


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、Zookeeper實(shí)現(xiàn)分布式的優(yōu)點(diǎn)?

  1. 簡(jiǎn)單易用:Zookeeper 提供了簡(jiǎn)單的 API 來(lái)創(chuàng)建和管理鎖,使用起來(lái)相對(duì)容易。
  2. 可靠性高:Zookeeper 本身具有高可用性和容錯(cuò)性,能夠確保鎖的可靠性和一致性。
  3. 支持公平鎖:Zookeeper 支持公平鎖,即按照先來(lái)先服務(wù)的原則分配鎖。
  4. 支持可重入鎖:Zookeeper 可以通過(guò)節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)量來(lái)表示鎖的持有次數(shù),從而支持可重入鎖。
  5. Zookeeper 可以設(shè)置鎖的超時(shí)時(shí)間,避免死鎖的情況發(fā)生。
  6. 超時(shí)機(jī)制:Zookeeper 可以設(shè)置鎖的超時(shí)時(shí)間,避免死鎖的情況發(fā)生。
  7. 支持跨進(jìn)程和跨機(jī)器:Zookeeper 是一個(gè)分布式協(xié)調(diào)服務(wù),可以用于跨進(jìn)程和跨機(jī)器的鎖管理。
  8. 順序保證:Zookeeper 保證了節(jié)點(diǎn)創(chuàng)建的順序性,可以利用這一點(diǎn)來(lái)實(shí)現(xiàn)順序鎖。

二、實(shí)現(xiàn)原理

獲得鎖

  1. 當(dāng)?shù)谝粋€(gè)客戶端請(qǐng)求過(guò)來(lái)時(shí),Zookeeper 客戶端會(huì)創(chuàng)建一個(gè)持久節(jié)點(diǎn) locks。如果它(Client1)想獲得鎖,需要在 locks 節(jié)點(diǎn)下創(chuàng)建一個(gè)順序節(jié)點(diǎn) lock1。
  2. 接著,客戶端 Client1 會(huì)查找 locks 下面的所有臨時(shí)順序子節(jié)點(diǎn),判斷自己的節(jié)點(diǎn) lock1 是不是排序最小的那一個(gè),如果是,則成功獲得鎖。
  3. 這時(shí)候如果又來(lái)一個(gè)客戶端 client2 前來(lái)嘗試獲得鎖,它會(huì)在 locks 下再創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn) lock2。
  4. 客戶端 client2 一樣也會(huì)查找 locks 下面的所有臨時(shí)順序子節(jié)點(diǎn),判斷自己的節(jié)點(diǎn) lock2 是不是最小的,此時(shí),發(fā)現(xiàn) lock1 才是最小的,于是獲取鎖失敗。獲取鎖失敗,它是不會(huì)甘心的,client2 向它排序靠前的節(jié)點(diǎn) lock1 注冊(cè) Watcher 事件,用來(lái)監(jiān)聽(tīng) lock1 是否存在,也就是說(shuō) client2 搶鎖失敗進(jìn)入等待狀態(tài)。
  5. 此時(shí),如果再來(lái)一個(gè)客戶端Client3來(lái)嘗試獲取鎖,它會(huì)在 locks 下再創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn) lock3。
  6. 同樣的,client3 一樣也會(huì)查找 locks 下面的所有臨時(shí)順序子節(jié)點(diǎn),判斷自己的節(jié)點(diǎn) lock3 是不是最小的,發(fā)現(xiàn)自己不是最小的,就獲取鎖失敗。它也是不會(huì)甘心的,它會(huì)向在它前面的節(jié)點(diǎn) lock2 注冊(cè) Watcher 事件,以監(jiān)聽(tīng) lock2 節(jié)點(diǎn)是否存在。

釋放鎖

  1. 如果是任務(wù)完成,Client1 會(huì)顯式調(diào)用刪除 lock1 的指令。
  2. 如果是客戶端故障了,根據(jù)臨時(shí)節(jié)點(diǎn)得特性,lock1 是會(huì)自動(dòng)刪除的。
  3. lock1 節(jié)點(diǎn)被刪除后,Client2 可開(kāi)心了,因?yàn)樗恢北O(jiān)聽(tīng)著 lock1。lock1 節(jié)點(diǎn)刪除,Client2 立刻收到通知,也會(huì)查找 locks 下面的所有臨時(shí)順序子節(jié)點(diǎn),發(fā)下 lock2 是最小,就獲得鎖。
  4. 同理,Client2 獲得鎖之后,Client3 也對(duì)它虎視眈眈

三、實(shí)現(xiàn)步驟

1.引入Curator依賴

    <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-framework</artifactId>
      <version>5.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-recipes</artifactId>
      <version>5.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-client</artifactId>
      <version>5.2.0</version>
    </dependency>

2.編寫Zookeeper配置

@Configuration
public class ZookeeperConfig {
  @Bean
  public CuratorFramework zookeeperClient() {
    CuratorFramework client = CuratorFrameworkFactory.builder()
         .connectString("127.0.0.1:2181")//zookeeper地址
         .sessionTimeoutMs(5000)//會(huì)話超時(shí)時(shí)間
         .connectionTimeoutMs(5000)//連接超時(shí)時(shí)間
         .retryPolicy(new ExponentialBackoffRetry(1000, 3))//重試機(jī)制,1秒重連3次
        //.namespace("test")
         .build();
    client.start();
    return client;
   }
}

3.代碼實(shí)現(xiàn)

  @Autowired
  CuratorFramework client;
  @Override
  public String createOrderZookeeper(Integer productId, Integer count) throws Exception {
    // client cruator中zk客戶端對(duì)象  path 搶鎖路徑同一個(gè)鎖path需要一致
    InterProcessMutex lock = new InterProcessMutex(client, "/lockPath");
    //第一個(gè)屬性:定時(shí)的時(shí)間數(shù)字
    //第二個(gè)屬性:定義時(shí)間的單位
    if (lock.acquire(3, TimeUnit.SECONDS)) {
      try {
        // 業(yè)務(wù)代碼,不予展示,根據(jù)具體需求進(jìn)行編寫
       } finally {
        lock.release();
       }
     }
    return "創(chuàng)建失敗";
   }




總結(jié)

提示:這里對(duì)文章進(jìn)行總結(jié):
總的來(lái)說(shuō),Zookeeper 是一種強(qiáng)大的工具,可以用于實(shí)現(xiàn)分布式鎖。通過(guò)理解 Zookeeper 的原理和使用方法,我們可以構(gòu)建高可靠性和高性能的分布式系統(tǒng)。如果你對(duì)分布式鎖的實(shí)現(xiàn)感興趣,這篇博客提供了一個(gè)很好的起點(diǎn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-771353.html

到了這里,關(guān)于分布式鎖解決方案_Zookeeper實(shí)現(xiàn)分布式鎖的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【分布式事務(wù)】Seata 開(kāi)源的分布式事務(wù)解決方案

    【分布式事務(wù)】Seata 開(kāi)源的分布式事務(wù)解決方案

    Seata 是一款開(kāi)源的分布式事務(wù)解決方案,致力于提供高性能和簡(jiǎn)單易用的分布式事務(wù)服務(wù)。Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務(wù)模式,為用戶打造一站式的分布式解決方案。 阿里巴巴作為國(guó)內(nèi)最早一批進(jìn)行應(yīng)用分布式(微服務(wù)化)改造的企業(yè),很早就遇到微服務(wù)架構(gòu)下

    2024年02月02日
    瀏覽(18)
  • 分布式鎖解決方案

    分布式鎖解決方案

    由于分布式或者集群部署項(xiàng)目時(shí),在某些業(yè)務(wù)場(chǎng)景下需保證資源的原子性、一致性和互斥性。 如果把房子比作資源,通俗的來(lái)講,我無(wú)論在那個(gè)城市生活,這個(gè)房子我先租的,再?zèng)]有退房的前提下,別人都不能用 目前最流行的解決方案 redisson 分布式鎖 zookeeper 分布式鎖 mav

    2024年02月12日
    瀏覽(19)
  • 【分布式·大數(shù)據(jù)】大模型賽道如何實(shí)現(xiàn)華麗的彎道超車 —— AI/ML訓(xùn)練賦能解決方案

    【分布式·大數(shù)據(jù)】大模型賽道如何實(shí)現(xiàn)華麗的彎道超車 —— AI/ML訓(xùn)練賦能解決方案

    導(dǎo)讀 :Alluxio作為一款強(qiáng)大的分布式統(tǒng)一大數(shù)據(jù)虛擬文件系統(tǒng),已經(jīng)在眾多領(lǐng)域展現(xiàn)出了其卓越的應(yīng)用價(jià)值,并且為AI/ML訓(xùn)練賦能提供了一個(gè)全新的解決方案。 在人工智能(AI)和機(jī)器學(xué)習(xí)(ML)領(lǐng)域,數(shù)據(jù)驅(qū)動(dòng)的決策和模型訓(xùn)練已成為現(xiàn)代應(yīng)用和研究的核心。伴隨大模型技術(shù)

    2024年02月08日
    瀏覽(24)
  • 分布式websocket解決方案

    分布式websocket解決方案

    websocket基礎(chǔ)請(qǐng)自行學(xué)習(xí),本文章是解決在分布式環(huán)境下websocket通訊問(wèn)題。 在單體環(huán)境下,所有web客戶端都是連接到某一個(gè)微服務(wù)上,這樣消息都是到達(dá)統(tǒng)一服務(wù)端,并且也是由一個(gè)服務(wù)端進(jìn)行響應(yīng),所以不會(huì)出現(xiàn)問(wèn)題。 但是在分布式環(huán)境下,我們很容易發(fā)現(xiàn),客戶端連接的

    2024年02月13日
    瀏覽(25)
  • 【SpirngCloud】分布式事務(wù)解決方案

    【SpirngCloud】分布式事務(wù)解決方案

    1.1 CAP 理論 1998年,加州大學(xué)的計(jì)算機(jī)科學(xué)家 Eric Brewer 提出,分布式系統(tǒng)有三個(gè)指標(biāo): Consistency(一致性):用戶訪問(wèn)分布式系統(tǒng)中的任意節(jié)點(diǎn),得到的數(shù)據(jù)必須一致 Availability(可用性):用戶訪問(wèn)集群中的任意健康節(jié)點(diǎn),必須能得到響應(yīng),而不是超時(shí)或拒絕 Partition tolerance(分區(qū)容

    2024年02月15日
    瀏覽(23)
  • Redis 分布式鎖解決方案

    Redis 分布式鎖解決方案

    我們?nèi)粘T陔娚叹W(wǎng)站購(gòu)物時(shí)經(jīng)常會(huì)遇到一些高并發(fā)的場(chǎng)景,例如電商 App 上經(jīng)常出現(xiàn)的秒殺活動(dòng)、限量?jī)?yōu)惠券搶購(gòu),還有我們?nèi)ツ膬壕W(wǎng)的火車票搶票系統(tǒng)等,這些場(chǎng)景有一個(gè)共同特點(diǎn)就是訪問(wèn)量激增,雖然在系統(tǒng)設(shè)計(jì)時(shí)會(huì)通過(guò)限流、異步、排隊(duì)等方式優(yōu)化,但整體的并發(fā)還是

    2023年04月22日
    瀏覽(27)
  • ChatGPT:分布式事務(wù)解決方案

    隨著互聯(lián)網(wǎng)的發(fā)展和技術(shù)的不斷更新,越來(lái)越多的應(yīng)用程序開(kāi)始采用分布式架構(gòu)。然而,由于數(shù)據(jù)和處理邏輯的分散性和異構(gòu)性,分布式環(huán)境下的事務(wù)處理面臨著許多挑戰(zhàn)。這時(shí)候就需要采用分布式事務(wù)來(lái)確保系統(tǒng)的一致性和可靠性。 分布式事務(wù)是指在分布式系統(tǒng)中,涉及多

    2023年04月12日
    瀏覽(23)
  • 分布式ID解決方案對(duì)比

    分布式ID解決方案對(duì)比

    在復(fù)雜的分布式系統(tǒng)中,往往需要對(duì)大量的數(shù)據(jù)進(jìn)行唯一標(biāo)識(shí),比如在對(duì)一個(gè)訂單表進(jìn)行了分庫(kù)分表操作,這時(shí)候數(shù)據(jù)庫(kù)的自增ID顯然不能作為某個(gè)訂單的唯一標(biāo)識(shí)。除此之外還有其他分布式場(chǎng)景對(duì)分布式ID的一些要求: 趨勢(shì)遞增: ?由于多數(shù)RDBMS使用B-tree的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)索

    2024年02月04日
    瀏覽(22)
  • 聊聊分布式解決方案Saga模式

    聊聊分布式解決方案Saga模式

    Saga模式使用一系列本地事務(wù)來(lái)提供事務(wù)管理,而一個(gè)本地事務(wù)對(duì)應(yīng)一個(gè)Saga參與者,在Saga流程里面每一個(gè)本地事務(wù)只操作本地?cái)?shù)據(jù)庫(kù),然后通過(guò)消息或事件來(lái)觸發(fā)下一個(gè)本地事務(wù),如果其中一個(gè)本地事務(wù)失敗了,Saga就會(huì)執(zhí)行一系列補(bǔ)償事務(wù)來(lái)實(shí)現(xiàn)回滾操作。(補(bǔ)償事務(wù)簡(jiǎn)單來(lái)

    2024年02月06日
    瀏覽(25)
  • 無(wú)限容量分布式文件存儲(chǔ)解決方案

    無(wú)限容量分布式文件存儲(chǔ)解決方案

    常見(jiàn)分布式文件系統(tǒng)比較 常見(jiàn)的分布式文件系統(tǒng)有GFS、HDFS 、Ceph 、GridFS 、TFS、FastDFS等。各自適用于不同的領(lǐng)域。 類 Google FS 都支持文件冗余備份,例如 Google FS、TFS 的備份數(shù)是 3。一個(gè)文件存儲(chǔ)到哪幾個(gè)存儲(chǔ)結(jié)點(diǎn),通常采用動(dòng)態(tài)分配的方式。采用這種方式,一個(gè)文件存儲(chǔ)到

    2024年02月11日
    瀏覽(16)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包