精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

分布式事務的七種方案,yyds!

云計算 分布式
分布式事務問題,無論在面試,還是工作中經常會遇到。分布式系統下,數據一致性不再是數據庫事務那么簡單的。分布式事務作為其中最復雜的挑戰之一,曾讓無數團隊深夜加班、焦頭爛額。今天這篇文章就跟大家一起聊聊分布式事務問題的7種常見解決方案,希望對你會有所幫助。

前言

分布式事務問題,無論在面試,還是工作中經常會遇到。

分布式系統下,數據一致性不再是數據庫事務那么簡單的。

分布式事務作為其中最復雜的挑戰之一,曾讓無數團隊深夜加班、焦頭爛額。

今天這篇文章就跟大家一起聊聊分布式事務問題的7種常見解決方案,希望對你會有所幫助。

圖片圖片

1.為什么分布式事務如此棘手?

在單體應用時代,數據庫的ACID事務保證了數據一致性。

但在微服務架構下,一個業務操作需要跨多個服務、多個數據庫,傳統事務模型不再適用。

想象一下電商下單場景:

  • 訂單服務創建訂單(訂單數據庫)
  • 庫存服務扣減庫存(庫存數據庫)
  • 支付服務處理支付(支付數據庫)
  • 積分服務增加積分(積分數據庫)

這四個操作要么全部成功,要么全部失敗

這就是分布式事務要解決的核心問題。

那么,如何解決問題呢?

2. 常見的解決方案

2.1 2PC(兩階段提交)

該方案是強一致性方案。

2PC是最經典的分布式事務協議,通過協調者(Coordinator) 統一調度參與者(Participant) 的執行。

分為兩個階段:

圖片圖片

第一階段:準備階段協調者詢問所有參與者:“能否提交事務?”

參與者執行本地事務但不提交,鎖定資源并回復YES/NO。

// 參與者偽代碼
public boolean prepare() {
    try {
        startTransaction();
        executeSql("UPDATE account SET frozen = 100 WHERE id = 1"); // 預留資源
        return true; // 返回YES
    } catch (Exception e) {
        rollback();
        return false; // 返回NO
    }
}

第二階段:提交/回滾階段

  • 若所有參與者返回YES,協調者發送commit命令,參與者提交事務
  • 若有任一參與者返回NO,協調者發送rollback命令,參與者回滾事務

致命缺陷

  • 同步阻塞:所有參與者在prepare后鎖定資源,直到收到commit/rollback(高并發下吞吐量驟降)
  • 單點故障:協調者宕機導致參與者永久阻塞
  • 數據不一致:網絡分區時部分參與者可能提交成功

2.2 3PC(三階段提交)

該方案也是強一致性方案。

3PC可以解決2PC阻塞問題。

3PC在2PC基礎上增加預提交階段,并引入超時機制

圖片圖片

  • CanCommit階段:協調者詢問參與者狀態(不鎖定資源)
  • PreCommit階段:參與者鎖定資源并執行SQL(不提交)
  • DoCommit階段:正式提交

改進點

  • 參與者超時未收到命令自動提交(降低阻塞風險)
  • 預提交階段發現異常可提前終止

但依然存在問題

  • 網絡分區時仍可能數據不一致
  • 實現復雜度顯著增加

2.3 TCC(Try-Confirm-Cancel)

該方案是最終一致性方案。

它是業務層面的2PC。

TCC將業務邏輯拆分為三個階段:

  • Try:預留資源(如凍結庫存)
  • Confirm:確認操作(正式扣減庫存)
  • Cancel:釋放資源(解凍庫存)
// 積分服務TCC實現
publicclass PointsService {
    
    @Transactional
    public boolean tryDeductPoints(Long userId, int points) {
        // 檢查用戶積分是否充足
        UserPoints user = userPointsDao.selectForUpdate(userId);
        if (user.getAvailable() < points) {
            thrownew InsufficientPointsException();
        }
        // 凍結積分
        userPointsDao.freeze(userId, points);
    }
    
    public boolean confirmDeductPoints(Long userId, int points) {
        // 實際扣減凍結積分
        userPointsDao.confirmDeduct(userId, points);
    }
    
    public boolean cancelDeductPoints(Long userId, int points) {
        // 釋放凍結積分
        userPointsDao.unfreeze(userId, points);
    }
}

執行流程

  • 主業務調用所有服務的try方法
  • 全部try成功則調用confirm;任一try失敗則調用cancel

優勢

  • 無全局鎖:只在try階段鎖定局部資源
  • 高可用:協調者可集群部署

挑戰

  • 手動實現回滾邏輯(業務侵入性強)
  • 所有服務需提供三種接口

金融核心系統首選:某銀行跨境支付系統采用TCC方案,日均處理200萬筆交易,跨5個服務的事務成功率99.99%

2.4 可靠消息最終一致性

該方案也是最終一致性方案。

可以使用RocketMQ的事務消息。

RocketMQ的事務消息完美解決本地操作與消息發送的一致性問題:

圖片圖片

關鍵步驟

  • 發送half消息(對消費者不可見)
  • 執行本地事務
  • 根據本地事務結果commit/rollback
  • MQ定時回查未決事務

示例代碼

// 訂單服務使用事務消息
publicclass OrderService {
    
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    
    public void createOrder(Order order) {
        // 1. 發送half消息
        Message msg = MessageBuilder.withPayload(order).build();
        TransactionSendResult result = rocketMQTemplate.sendMessageInTransaction(
            "order_topic", msg, null);
        
        // 2. 執行本地事務(在TransactionListener中實現)
    }
}

// 事務監聽器
@RocketMQTransactionListener
class OrderTransactionListener implements RocketMQLocalTransactionListener {

    @Override
    public RocketMQLocalTransactionState executeLocalTransaction(Message msg, Object arg) {
        try {
            Order order = (Order) msg.getPayload();
            orderDao.save(order); // 本地事務
            return RocketMQLocalTransactionState.COMMIT;
        } catch (Exception e) {
            return RocketMQLocalTransactionState.ROLLBACK;
        }
    }

    @Override
    public RocketMQLocalTransactionState checkLocalTransaction(Message msg) {
        // 回查邏輯
        return checkOrderStatus(msg);
    }
}

2.5 最大努力通知

該方案是弱一致性方案。

適用于對實時性要求低的場景(如短信通知):

  • 業務主流程完成后發送通知
  • 失敗后按策略重試(如間隔1min、5min、10min)
  • 達到閾值后人工干預
// 最大努力通知服務
publicclass BestEffortNotifier {
    
    privatestaticfinalint[] RETRY_INTERVALS = {1, 5, 10, 30, 60}; // 分鐘
    
    public void notify(String event) {
        int retryCount = 0;
        while (retryCount < RETRY_INTERVALS.length) {
            try {
                if (sendNotification(event)) {
                    return; // 通知成功
                }
            } catch (Exception e) {
                // 記錄日志
            }
            Thread.sleep(RETRY_INTERVALS[retryCount] * 60 * 1000);
            retryCount++;
        }
        alertManualIntervention(event); // 人工介入
    }
}


實戰經驗:支付回調采用此方案,重試8次跨12小時,99.5%的通知在30分鐘內成功

2.6 Seata AT模式

該方案是自動化的TCC。

Seata的AT(Auto Transaction)模式不侵入業務代碼的前提下實現分布式事務:

核心機制

  • 全局鎖:TC(事務協調器)管理內存級全局鎖(替代數據庫行鎖)
  • SQL代理:解析業務SQL自動生成回滾日志
  • 二階段異步提交:極大提升吞吐量
/* 原始SQL */
UPDATE product SET stock = stock - 10 WHERE id = 1001;

/* Seata自動記錄回滾日志 */
INSERT INTO undo_log (branch_id, xid, 
  before_image, after_image) 
VALUES (?, ?, 
  '{"stock":100}',  -- 更新前值
  '{"stock":90}');  -- 更新后值

性能對比

方案

鎖持有時間

鎖沖突檢測耗時

適用場景

傳統2PC

500~2000ms

5~20ms

低并發強一致性

Seata AT

1~10ms

0.01ms

高并發最終一致性

局限

  • 不支持嵌套事務
  • 熱點數據更新沖突率高

2.7 eBay事件隊列

該方案是基于本地事務的最終一致性方案。

eBay提出的經典方案:

  • 將分布式操作拆分為本地事務+異步事件
  • 使用事件表確保事件不丟失
  • 通過補償機制解決失敗場景
-- 訂單服務數據庫
BEGIN TRANSACTION;
-- 1. 創建訂單
INSERT INTO orders (...) VALUES (...); 
-- 2. 記錄事件(與訂單在同一個事務)
INSERT INTO event_queue (event_type, payload, status) 
VALUES ('ORDER_CREATED', '{"orderId":1001}', 'PENDING');
COMMIT;

-- 定時任務掃描事件表并發布

該方案在早期eBay系統中每天處理1億+事件,保證核心交易鏈路最終一致

3.方案的選型指南

根據業務場景選擇合適方案:

方案

一致性級別

性能

復雜度

適用場景

2PC/3PC

強一致性

銀行核心系統

TCC

最終一致

電商交易、積分體系

RocketMQ事務消息

最終一致

訂單創建、物流通知

最大努力通知

弱一致

短信提醒、運營通知

Seata AT

最終一致

微服務架構的常規業務

eBay事件隊列

最終一致

內部狀態同步

黃金法則

  • 強一致性需求:選擇2PC/ZooKeeper(犧牲性能)
  • 高并發場景:選擇可靠消息/Seata AT(最終一致)
  • 弱一致性場景:最大努力通知(成本最低)

總結

經過十年演進,分布式事務解決方案已從強一致性高性能最終一致性發展。

技術沒有絕對的好壞,只有適合與否。

我曾見過團隊為了追求理論上的強一致性,把系統搞得復雜不堪;也見過過度追求性能導致資金損失的血淚教訓。

分布式事務的本質,是在業務需求與技術可行性之間找到平衡點。

責任編輯:武曉燕 來源: 蘇三說技術
相關推薦

2021-03-07 16:11:26

Redis分布式

2024-03-26 12:08:53

分布式事務存儲

2019-11-04 08:38:45

分布式事務主流TCC

2021-08-04 10:38:51

分布式 ID策略

2024-03-28 10:01:38

2022-12-30 17:52:44

分布式容錯架構

2025-04-29 04:00:00

分布式事務事務消息

2020-03-31 16:13:26

分布式事務方案TCC

2019-07-25 15:32:35

分布式事務微服務系統架構

2022-06-27 08:21:05

Seata分布式事務微服務

2024-01-04 12:48:00

Spring

2023-01-06 09:19:12

Seata分布式事務

2025-04-28 00:44:04

2023-09-14 15:44:46

分布式事務數據存儲

2020-05-28 09:35:05

分布式事務方案

2023-11-06 13:15:32

分布式事務Seata

2022-06-21 08:27:22

Seata分布式事務

2017-07-26 15:08:05

大數據分布式事務

2023-04-03 10:00:00

Redis分布式

2024-08-19 09:05:00

Seata分布式事務
點贊
收藏

51CTO技術棧公眾號

一级片久久久久| 婷婷中文字幕综合| 欧美一区二区成人6969| 久久亚洲综合网| 久久久国产精品黄毛片| 久久91超碰青草在哪里看| 亚洲经典在线| 678五月天丁香亚洲综合网| 欧美一区二区三区成人久久片| 精品在线视频免费| 涩爱av色老久久精品偷偷鲁| 国产欧美日产一区| 日本欧美国产在线| 国内精品视频一区二区三区八戒| 在线观看欧美日韩| 精品久久久噜噜噜噜久久图片 | 国产成人无码精品久久二区三| 青草av在线| 亚洲网色网站| 7777精品伊人久久久大香线蕉| 9色porny| 人妻少妇精品无码专区| 欧美日本一区二区高清播放视频| 日韩午夜激情免费电影| www.国产亚洲| 亚洲不卡免费视频| 在线成人h网| 亚洲精品视频在线观看视频| 久草资源站在线观看| 天天操天天射天天| 国产日韩综合| 国产视频自拍一区| 色哟哟网站在线观看| 羞羞视频在线观看不卡| 国产**成人网毛片九色 | 天天天天天天天天操| 国产高清亚洲| 亚洲一二三四在线| 国产在线一区二| 日日摸天天添天天添破| 久草精品在线| 欧美影视一区二区三区| 一区二区三区在线视频111| 国产又大又粗又长| 欧美一区久久| 日韩经典中文字幕在线观看| 激情五月开心婷婷| p色视频免费在线观看| 韩国女主播成人在线| 国产精品黄色影片导航在线观看| 999久久久国产| 国产日韩在线观看视频| 欧美精品丝袜久久久中文字幕| 国产在线拍揄自揄拍无码| 国内爆初菊对白视频| 亚洲欧美大片| 久久精品91久久香蕉加勒比| 国产xxx在线观看 | 国产精品xxxx| 日本韩国精品在线| 国产91精品最新在线播放| 国产无遮无挡120秒| 欧美激情1区2区| 久久91精品国产| 艳妇乳肉亭妇荡乳av| 亚洲综合av一区二区三区| 国产精品久久久久久久岛一牛影视| 91热精品视频| 国产 欧美 日韩 在线| 成人激情免费视频| 欧美xxxx老人做受| 在线观看的毛片| av电影在线地址| 国产精品久久夜| 精品一区国产| 国产wwwxxx| 日韩成人精品在线观看| 欧美激情手机在线视频| 黄大色黄女片18免费| 日韩欧美精品一区| 亚洲国产欧美在线成人app| 国产精品区在线| 制服丝袜专区在线| 亚洲一线二线三线视频| 久久久久久久久久久视频| 亚洲第一会所001| 亚洲不卡一区二区三区| 无码人妻精品一区二区蜜桃百度| 国产在线xxx| 伊人夜夜躁av伊人久久| 午夜欧美性电影| 免费一级在线观看| 91在线你懂得| 国产精品日韩欧美一区二区三区| 国产又粗又猛又爽| 成人免费观看男女羞羞视频| 91久久精品日日躁夜夜躁国产| 成人黄色免费视频| 国产精品77777| 成人有码视频在线播放| 亚洲中文无码av在线| 免费日韩精品中文字幕视频在线| 国产激情999| 91丝袜一区二区三区| 99精品福利视频| 国模精品视频一区二区三区| 国产精品成人av久久| 天堂一区二区在线| 国产精品第七十二页| 国产免费高清av| 狠狠狠色丁香婷婷综合激情| 精品久久久久久综合日本| 在线激情网站| 亚洲欧美综合另类在线卡通| 亚洲黄色成人久久久| 国产中文字幕在线| 久久久久久99久久久精品网站| 精品欧美日韩在线| 日本不卡视频| 自拍偷拍亚洲欧美日韩| 能在线观看的av| 亚洲网址在线观看| 亚洲高清色综合| 一级特级黄色片| 亚洲欧美综合久久久| 国产成人精品国内自产拍免费看| 亚洲成a人片77777精品| 亚洲三级理论片| 国产精品久久久久久久久电影网| 精品成人av| 亚洲精品国产美女| 国产精选第一页| 国产成人高清视频| 黄黄视频在线观看| av大全在线| 五月综合激情网| 国产成人av免费观看| 成人自拍在线| 5月丁香婷婷综合| www久久久久久久| 久久人人精品| 欧美一区二区三区在线播放| 这里有精品可以观看| 亚洲黄色av网站| 欧美精品亚洲精品日韩精品| 99精品久久久久久| 久草热视频在线观看| 超薄肉色丝袜脚交一区二区| 亚洲乱码一区二区| 亚洲AV成人无码精电影在线| 亚洲国产日本| 成人在线资源网址| yellow在线观看网址| 在线一区二区三区四区| 女同性αv亚洲女同志| 欧美在线免费| 国产a一区二区| 国产激情在线播放| 亚洲欧美综合精品久久成人| 日韩在线中文字幕视频| 国产一区二区伦理片| 欧美13一14另类| yw.尤物在线精品视频| 伊人伊成久久人综合网站| 在线观看不卡的av| www.欧美.com| 在线观看福利一区| 99视频这里有精品| 亚洲美腿欧美激情另类| 亚洲天堂男人av| 国产精品女同一区二区三区| 肉色超薄丝袜脚交| 精品久久久中文字幕| 欧美极品少妇全裸体| 亚洲欧洲国产综合| 一区二区三区欧美在线观看| 高清中文字幕mv的电影| 欧美肥老太太性生活| 欧美一级电影在线| 性做久久久久久久| 欧美视频在线观看免费网址| 肉丝美足丝袜一区二区三区四| 精品二区久久| 欧美亚洲另类在线一区二区三区| 久久久123| 精品亚洲一区二区三区在线观看| 波多野结衣家庭主妇| www.日韩大片| 一区二区三区视频在线观看免费| 亚洲澳门在线| 成人天堂噜噜噜| av中文字幕在线观看第一页| 永久免费毛片在线播放不卡| 精品人妻无码一区二区| 欧美日韩精品中文字幕| 国产吃瓜黑料一区二区| 葵司免费一区二区三区四区五区| 99热一区二区三区| 亚洲毛片在线免费| 97热在线精品视频在线观看| 精品人妻无码一区二区三区蜜桃一| 精品成人在线视频| 成人涩涩小片视频日本| 狠狠色丁香久久婷婷综合_中| 国产伦精品一区二区三区四区视频_ | 久久久久久亚洲精品美女| 国产亚洲欧美另类中文| 久久久久在线视频| 伊人一区二区三区| 九一在线免费观看| 91农村精品一区二区在线| 国产二区视频在线播放| 一区二区免费不卡在线| 日韩精品久久一区二区三区| 欧美成人精品三级网站| 九九热这里只有在线精品视| 国产精品影院在线| 欧美日高清视频| 国产精品99久久久久久成人| 久久久久久久精| 波多野结衣视频播放| 99精品国产一区二区青青牛奶| 中文字幕日韩一区二区三区不卡| 九九久久婷婷| 精品国产一区二区三区麻豆小说 | 亚洲免费高清视频| 日本黄色三级视频| 日韩亚洲国产中文字幕欧美| 一级黄色片网站| 亚洲精品免费在线观看| 欧美 日韩 成人| 捆绑调教一区二区三区| 亚洲小说欧美另类激情| 日韩片欧美片| 天堂√在线观看一区二区| 国产午夜一区| 91日韩在线视频| 日韩av懂色| 97国产精品视频人人做人人爱| 国产婷婷视频在线| 亚洲国产小视频| 日本美女一级片| 日韩av在线免费观看一区| 色哟哟国产精品色哟哟| 亚洲大胆美女视频| 搡老岳熟女国产熟妇| 亚洲变态欧美另类捆绑| 艳妇乳肉豪妇荡乳av无码福利| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美午夜黄色| 91精选在线观看| 国产又粗又大又黄| 5858s免费视频成人| 国产成人精品a视频| 日韩精品资源二区在线| 欧美黄色一级大片| 亚洲久本草在线中文字幕| 免费黄色在线视频| 国产大陆精品国产| 国产吃瓜黑料一区二区| 99精品视频一区二区三区| 手机av免费看| 国产99久久久国产精品潘金网站| 亚洲v在线观看| 99精品视频中文字幕| 久久久久久久久久久久| 中文字幕成人网| 99久久久久久久久久| 久久久久久久电影| 天天做夜夜爱爱爱| 亚洲一级二级三级| 黄色一级视频免费看| 欧美日韩电影在线| 免费国产精品视频| 亚洲图片欧洲图片av| 麻豆传媒在线免费| 久久人人97超碰精品888| 欧洲亚洲两性| 韩剧1988免费观看全集| 校园春色亚洲色图| 亚洲mm色国产网站| 日本久久一区| 国产精品日韩欧美一区二区| 欧美日韩第一| a级片一区二区| 视频一区视频二区中文字幕| 在线免费黄色小视频| 久久精品二区亚洲w码| 一区二区三区四区影院| 国产免费成人在线视频| 久久综合加勒比| 色狠狠综合天天综合综合| 国产免费黄色录像| 亚洲视频在线看| hd国产人妖ts另类视频| 国产精品久久久久免费a∨大胸| 伊人久久国产| 日本亚洲欧美成人| 国产一区二区三区| 日本在线观看一区二区| 伊人狠狠色j香婷婷综合| 亚洲一级片网站| 99久久国产综合精品麻豆| 九九热最新地址| 欧美日韩综合在线| 亚洲熟妇av乱码在线观看| 精品福利在线导航| 日本精品在线| 久久久精品国产一区二区| 美女搞黄视频在线观看| 4438全国成人免费| 久久久久久亚洲精品美女| 亚洲成色www久久网站| 亚洲免费播放| 久久黄色一级视频| 中文字幕在线观看不卡视频| 日韩在线视频免费播放| 色欧美乱欧美15图片| 欧日韩在线视频| 欧美大片免费观看在线观看网站推荐| 视频在线这里都是精品| 国产精自产拍久久久久久| 日韩三级一区| 日产国产精品精品a∨| 99精品国产一区二区青青牛奶| 亚洲熟女一区二区三区| 亚洲精品欧美在线| 91麻豆成人精品国产免费网站| 国产一区二区欧美日韩| 偷拍中文亚洲欧美动漫| 你懂的网址一区二区三区| 亚洲综合国产| 国产制服丝袜在线| 中文字幕的久久| 日本成人一级片| 在线性视频日韩欧美| av片哪里在线观看| 91久久久国产精品| 亚洲欧洲日韩| 日韩视频在线观看一区二区三区| 中文字幕中文字幕一区| 国产一区二区三区在线观看| 日韩在线一区二区三区免费视频| 美女精品视频| 成人在线免费网站| 在线欧美一区| 中文字幕 亚洲一区| 疯狂做受xxxx高潮欧美日本| 桃花色综合影院| 久久人人爽人人爽爽久久| 欧美日韩破处视频| 波多野结衣三级在线| 国产在线视频精品一区| 人妻少妇精品一区二区三区| 狠狠色狠狠色综合日日小说| 神马久久久久| 国产mv免费观看入口亚洲| 欧美一区二区三区高清视频| 青青草原国产在线视频| www.欧美精品一二区| 日韩欧美中文字幕一区二区| 国产视频精品xxxx| 国产成人免费| 久久大片网站| 欧美国产高清| 精品视频站长推荐| 欧美日韩一区二区免费在线观看 | 中文字幕欧美日韩一区| 在线视频 中文字幕| 欧美第一淫aaasss性| 日本欧美三级| 国产a级黄色大片| 不卡一区二区在线| 欧美成人三级视频| 亚洲精品乱码久久久久久按摩观| 欧美色网一区| 黄瓜视频免费观看在线观看www| 国产不卡在线视频| √资源天堂中文在线| 中文字幕视频一区二区在线有码| 免费欧美网站| 亚洲熟妇av一区二区三区| 国产精品久久久久久久岛一牛影视| 高清毛片aaaaaaaaa片| 国产成人综合精品在线| 欧美国产综合| 成年人免费观看视频网站| 欧美一区二区视频在线观看| 亚洲啊v在线| 浴室偷拍美女洗澡456在线| 91免费视频网| 国产wwwwwww| 国产福利视频一区二区| 欧美精品午夜| www.99热| 亚洲精品理论电影| 精品一区视频| 亚洲xxxx2d动漫1| 黑人精品xxx一区| av大大超碰在线|