日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

事務(wù)管理 vs. 鎖控制:你真的分得清嗎?

來源: 責編: 時間:2023-11-28 09:33:12 267觀看
導(dǎo)讀分布式鎖和事務(wù)是分布式系統(tǒng)中兩個重要的概念,它們都用于解決分布式環(huán)境下的數(shù)據(jù)一致性問題。一、概念分布式鎖分布式鎖是一種用于在分布式環(huán)境中控制對共享資源訪問的鎖。分布式鎖可以防止多個進程或線程同時訪問共享

vzX28資訊網(wǎng)——每日最新資訊28at.com

分布式鎖和事務(wù)是分布式系統(tǒng)中兩個重要的概念,它們都用于解決分布式環(huán)境下的數(shù)據(jù)一致性問題。vzX28資訊網(wǎng)——每日最新資訊28at.com

一、概念

分布式鎖

分布式鎖是一種用于在分布式環(huán)境中控制對共享資源訪問的鎖。分布式鎖可以防止多個進程或線程同時訪問共享資源,從而避免數(shù)據(jù)沖突和資源競爭。vzX28資訊網(wǎng)——每日最新資訊28at.com

事務(wù)

事務(wù)是指一組操作要么全部執(zhí)行,要么全部不執(zhí)行,以保證數(shù)據(jù)的一致性。事務(wù)通常用于處理多個數(shù)據(jù)源之間的操作,例如對于跨多個數(shù)據(jù)庫的事務(wù)操作,需要保證在執(zhí)行過程中的原子性、一致性和持久性。vzX28資訊網(wǎng)——每日最新資訊28at.com

區(qū)別vzX28資訊網(wǎng)——每日最新資訊28at.com

區(qū)別vzX28資訊網(wǎng)——每日最新資訊28at.com

分布式鎖vzX28資訊網(wǎng)——每日最新資訊28at.com

事務(wù)vzX28資訊網(wǎng)——每日最新資訊28at.com

作用vzX28資訊網(wǎng)——每日最新資訊28at.com

控制對共享資源的訪問vzX28資訊網(wǎng)——每日最新資訊28at.com

保證數(shù)據(jù)的一致性vzX28資訊網(wǎng)——每日最新資訊28at.com

范圍vzX28資訊網(wǎng)——每日最新資訊28at.com

單個資源vzX28資訊網(wǎng)——每日最新資訊28at.com

多個資源vzX28資訊網(wǎng)——每日最新資訊28at.com

粒度vzX28資訊網(wǎng)——每日最新資訊28at.com

細粒度vzX28資訊網(wǎng)——每日最新資訊28at.com

粗粒度vzX28資訊網(wǎng)——每日最新資訊28at.com

實現(xiàn)vzX28資訊網(wǎng)——每日最新資訊28at.com

基于數(shù)據(jù)庫、基于消息隊列、基于共享內(nèi)存等vzX28資訊網(wǎng)——每日最新資訊28at.com

基于 ACID 原理vzX28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)缺點vzX28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)點:簡單易用、性能高;缺點:無法保證數(shù)據(jù)一致性vzX28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)點:保證數(shù)據(jù)一致性;缺點:實現(xiàn)復(fù)雜、性能低vzX28資訊網(wǎng)——每日最新資訊28at.com

使用場景vzX28資訊網(wǎng)——每日最新資訊28at.com

搶購、秒殺、數(shù)據(jù)同步等vzX28資訊網(wǎng)——每日最新資訊28at.com

銀行轉(zhuǎn)賬、訂單支付等vzX28資訊網(wǎng)——每日最新資訊28at.com

本質(zhì)區(qū)別vzX28資訊網(wǎng)——每日最新資訊28at.com

分布式鎖是針對資源訪問的vzX28資訊網(wǎng)——每日最新資訊28at.com

事務(wù)是針對數(shù)據(jù)一致性的vzX28資訊網(wǎng)——每日最新資訊28at.com

vzX28資訊網(wǎng)——每日最新資訊28at.com

二、使用場景

分布式鎖

分布式鎖通常用于以下場景:vzX28資訊網(wǎng)——每日最新資訊28at.com

  • 搶購、秒殺:在搶購、秒殺等場景中,需要防止多個用戶同時下單,從而保證公平性。
  • 數(shù)據(jù)同步:在數(shù)據(jù)同步場景中,需要防止多個服務(wù)器同時更新數(shù)據(jù),從而保證數(shù)據(jù)的一致性。
  • 資源訪問控制:在資源訪問控制場景中,需要防止多個用戶同時訪問共享資源,從而保證資源的安全性。

事務(wù)

事務(wù)通常用于以下場景:vzX28資訊網(wǎng)——每日最新資訊28at.com

  • 銀行轉(zhuǎn)賬:在銀行轉(zhuǎn)賬場景中,需要保證轉(zhuǎn)賬金額的正確性,從而避免資金損失。
  • 訂單支付:在訂單支付場景中,需要保證訂單的狀態(tài)正確,從而避免訂單丟失。
  • 數(shù)據(jù)庫操作:在數(shù)據(jù)庫操作場景中,需要保證數(shù)據(jù)的完整性和一致性。

三、本質(zhì)區(qū)別

分布式鎖可以防止多個進程或線程同時訪問共享資源,從而避免數(shù)據(jù)沖突和資源競爭。事務(wù)可以保證數(shù)據(jù)在操作過程中的一致性,即使在發(fā)生異常的情況下,也不會導(dǎo)致數(shù)據(jù)不一致。vzX28資訊網(wǎng)——每日最新資訊28at.com

在實際應(yīng)用中,可以根據(jù)具體的需求選擇合適的方案。如果需要保證數(shù)據(jù)的一致性,可以使用事務(wù)。如果只需要防止資源競爭,可以使用分布式鎖。vzX28資訊網(wǎng)——每日最新資訊28at.com

四、鎖與事務(wù)實現(xiàn)

1、鎖方案

分布式鎖的實現(xiàn)方法有很多,常見的有以下幾種:vzX28資訊網(wǎng)——每日最新資訊28at.com

  • 數(shù)據(jù)庫鎖:使用數(shù)據(jù)庫中的行鎖或表鎖來實現(xiàn)分布式鎖。
  • 文件鎖:使用文件來實現(xiàn)分布式鎖。
  • Zookeeper鎖:使用Zookeeper來實現(xiàn)分布式鎖。
  • Redis鎖:使用Redis來實現(xiàn)分布式鎖。
  • 消息隊列鎖:使用消息隊列來實現(xiàn)分布式鎖。

Redisson 是一個基于 Redis 的 Java 分布式框架。Redisson 提供了豐富的功能,包括分布式鎖、分布式集合、分布式隊列等。vzX28資訊網(wǎng)——每日最新資訊28at.com

以下是使用 Redisson 實現(xiàn)分布式鎖的示例:vzX28資訊網(wǎng)——每日最新資訊28at.com

@Autowired    private RedissonClient redissonClient;    public String lock() {        // 獲取鎖        RLock lock = redissonClient.getLock("lock");        boolean acquired = lock.tryLock(10,-1,TimeUnit.SECONDS);        if (acquired) {            // 獲取鎖成功,執(zhí)行業(yè)務(wù)邏輯            return "獲取鎖成功,執(zhí)行業(yè)務(wù)邏輯...";        } else {            // 獲取鎖失敗,重試            return "獲取鎖失敗,重試...";        }    }    public String unlock() {        // 釋放鎖        RLock lock = redissonClient.getLock("lock");        lock.unlock();        return "釋放鎖成功...";    }

另外,redisson支持鎖續(xù)期。即在鎖鍵值過期后任務(wù)還沒執(zhí)行完成,此時需要把鎖鍵值的時間自動延長。vzX28資訊網(wǎng)——每日最新資訊28at.com

Redisson提供了的續(xù)期機制,只要客戶端加鎖成功,就會啟動一個Watch Dog。可以看到源代碼的實現(xiàn)leaseTime不設(shè)置為-1時開啟監(jiān)聽。如果任務(wù)沒完成就調(diào)用scheduleExpirationRenewal續(xù)期方法。vzX28資訊網(wǎng)——每日最新資訊28at.com

vzX28資訊網(wǎng)——每日最新資訊28at.com

tryLock() 方法用于嘗試獲取分布式鎖,該方法有三個參數(shù):vzX28資訊網(wǎng)——每日最新資訊28at.com

  • key:鎖的鍵值。
  • waitTime:等待獲取鎖的時間,單位為毫秒。
  • leaseTime:鎖的過期時間,單位為毫秒。

waitTime 參數(shù)表示客戶端最多等待多長時間來獲取鎖。如果在 waitTime 時間內(nèi)沒有獲取到鎖,則會返回 false。vzX28資訊網(wǎng)——每日最新資訊28at.com

leaseTime 參數(shù)表示鎖的過期時間。如果鎖在 leaseTime 時間內(nèi)沒有被釋放,則會自動釋放。如果 leaseTime 設(shè)置為 -1,則表示鎖的過期時間由 renew() 方法來控制。這樣,在業(yè)務(wù)邏輯執(zhí)行過程中,可以定期調(diào)用 lock.renew() 方法來續(xù)期鎖的過期時間。vzX28資訊網(wǎng)——每日最新資訊28at.com

tryLock() 方法的返回值是一個 Boolean 值,表示是否成功獲取到鎖。如果成功獲取到鎖,則返回 true。否則,返回 false。vzX28資訊網(wǎng)——每日最新資訊28at.com

2、事務(wù)方案

以下是一些常見的分布式事務(wù)解決方案:vzX28資訊網(wǎng)——每日最新資訊28at.com

vzX28資訊網(wǎng)——每日最新資訊28at.com

兩階段提交(2PC)

2PC是一種經(jīng)典的分布式事務(wù)解決方案,它將分布式事務(wù)分為兩個階段:準備階段和提交階段。在準備階段,協(xié)調(diào)者向所有參與者發(fā)送預(yù)提交請求;如果所有參與者都同意預(yù)提交,則進入提交階段;否則,所有參與者都將回滾事務(wù)。2PC的優(yōu)點是可以保證原子性、一致性和隔離性,但是實現(xiàn)復(fù)雜度較高。vzX28資訊網(wǎng)——每日最新資訊28at.com

三階段提交(3PC)

3PC是在2PC的基礎(chǔ)上發(fā)展而來的一種改進方案,它引入了超時機制和預(yù)提交響應(yīng)等新特性。在3PC中,協(xié)調(diào)者會向所有參與者發(fā)送預(yù)提交請求,并等待參與者的響應(yīng)。如果所有參與者都同意預(yù)提交,則進入預(yù)提交階段;否則,進入回滾階段。在正式提交階段,如果所有參與者都同意提交事務(wù),則進入正式提交階段;否則,所有參與者都將回滾事務(wù)。3PC的優(yōu)點是可以更好地處理節(jié)點故障等問題,但是實現(xiàn)復(fù)雜度仍然較高。vzX28資訊網(wǎng)——每日最新資訊28at.com

TCC(Try-Confirm-Cancel)

TCC是一種基于補償機制的分布式事務(wù)解決方案。它將分布式事務(wù)分為三個階段:嘗試階段、確認階段和取消階段。在嘗試階段,參與者嘗試預(yù)留所需的資源,并執(zhí)行一些檢查和準備工作,以確保執(zhí)行事務(wù)操作的前提條件滿足;在確認階段,如果所有參與者都滿足,則所有參與者執(zhí)行之前在Try階段所預(yù)留的操作,并提交實際的數(shù)據(jù)持久化。在取消階段,如果有任何一個參與者執(zhí)行失敗,則執(zhí)行回滾操作,將系統(tǒng)狀態(tài)恢復(fù)到事務(wù)開始之前的狀態(tài)。TCC的優(yōu)點是可以避免阻塞情況的發(fā)生,但是實現(xiàn)復(fù)雜度較高。vzX28資訊網(wǎng)——每日最新資訊28at.com

Saga模式

Saga模式是一種基于事件驅(qū)動的分布式事務(wù)解決方案。它將分布式事務(wù)看作一系列的事件序列,每個事件都有一個唯一的ID和一個時間戳。在每個事件發(fā)生時,參與者會根據(jù)事件的內(nèi)容執(zhí)行相應(yīng)的本地事務(wù)。如果某個參與者執(zhí)行失敗,則會記錄該事件的狀態(tài)為“已失敗”,并等待其他參與者的響應(yīng)。當所有的事件都被處理完畢后,再執(zhí)行最終的本地事務(wù)。Saga模式的優(yōu)點是可以支持復(fù)雜的業(yè)務(wù)邏輯和異常情況處理,但是實現(xiàn)復(fù)雜度較高。vzX28資訊網(wǎng)——每日最新資訊28at.com

消息隊列

消息隊列可以用于異步地處理多個任務(wù),并且可以保證任務(wù)的順序執(zhí)行。在分布式系統(tǒng)中使用消息隊列來處理事務(wù)時,可以將事務(wù)拆分成多個小任務(wù),并將這些任務(wù)發(fā)布到消息隊列中進行異步處理。當所有任務(wù)都完成后,再執(zhí)行最終的本地事務(wù)。這種方式可以避免阻塞情況的發(fā)生,并且可以提高系統(tǒng)的可擴展性和容錯能力。能保證事務(wù)的最終一致性。vzX28資訊網(wǎng)——每日最新資訊28at.com

最大努力通知(Best Effort Delivery)

這種解決方案通過異步通信和消息重試來實現(xiàn)事務(wù)的最終一致性。事務(wù)操作被封裝為消息發(fā)送到目標系統(tǒng),如果消息傳遞失敗,系統(tǒng)會進行重試。vzX28資訊網(wǎng)——每日最新資訊28at.com

分布式事務(wù)中間件

Seata是一款阿里巴巴開源的分布式事務(wù)中間件,它提供了AT、TCC、SAGA和XA事務(wù)模式,為用戶打造一站式的分布式解決方案。Seata的設(shè)計思路是將一個分布式事務(wù)理解成全局事務(wù),下面掛了若干個分支事務(wù),而一個分支事務(wù)就是一個滿足ACID的本地事務(wù),因此我們可以操作分布式事務(wù)像操作本地事務(wù)一樣簡單。vzX28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-34577-0.html事務(wù)管理 vs. 鎖控制:你真的分得清嗎?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一篇學會 Rust 內(nèi)存布局

下一篇: 如何高效地使用Goroutine,你學會了?

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網(wǎng)課的原因激活了平板市場,如今網(wǎng)課的時代已經(jīng)過去,大家的生活都恢復(fù)到了正軌,這也就意味著,真正考驗平板電腦生存的環(huán)境來了。也就是面對著這種殘酷的
  • 不容錯過的MSBuild技巧,必備用法詳解和實踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構(gòu)建引擎,用于在.NET Framework和.NET Core應(yīng)用程序中自動化構(gòu)建過程。它是Visual Studio的構(gòu)建引擎,可在命令行或其他構(gòu)建工具中使用
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗
  • JavaScript學習 -AES加密算法

    引言在當今數(shù)字化時代,前端應(yīng)用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進行加密和解密操作。然而,這樣的操作在網(wǎng)絡(luò)傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • 小紅書1周漲粉49W+,我總結(jié)了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人“珍藏”是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • 自律,給不了Keep自由!

    來源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • 三星獲批量產(chǎn)iPhone 15全系屏幕:蘋果史上最驚艷直屏

    按照慣例,蘋果將繼續(xù)在今年9月舉辦一年一度的秋季新品發(fā)布會,有傳言稱發(fā)布會將于9月12日舉行,屆時全新的iPhone 15系列將正式與大家見面,不出意外的話
  • 引領(lǐng)旗艦級影像能力向中端機普及 OPPO K11 系列發(fā)布 1799 元起

    7月25日,OPPO正式發(fā)布K系列新品—— OPPO K11 。此次 K11 在中端手機市場長期被忽視的影像板塊發(fā)力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
Top 主站蜘蛛池模板: 张家川| 五台县| 惠来县| 浪卡子县| 白山市| 阜南县| 平南县| 石狮市| 平谷区| 普安县| 随州市| 和平区| 余江县| 朝阳区| 金溪县| 宜兰市| 胶州市| 定西市| 开化县| 砚山县| 卓尼县| 鄂尔多斯市| 五家渠市| 汪清县| 临西县| 涟水县| 新郑市| 烟台市| 台州市| 大安市| 华池县| 清新县| 灵山县| 凌海市| 楚雄市| 江门市| 旅游| 长寿区| 翁牛特旗| 城固县| 鄂伦春自治旗|