精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲精品国产偷自在线观看| 黄色污网站在线观看| 极品美女销魂一区二区三区免费| 裸体女人亚洲精品一区| 在线观看免费视频国产| 永久免费毛片在线播放| 国产精品嫩草影院av蜜臀| 99re热精品| 91video| 天天av综合| 日韩电影网在线| 日韩一区二区三区久久| 成人免费一区二区三区牛牛| 欧美高清在线视频| 国产综合 伊人色| 一卡二卡在线观看| 国产午夜精品一区二区三区欧美| 色噜噜久久综合伊人一本| 亚洲一级Av无码毛片久久精品| 黑人巨大亚洲一区二区久| 亚洲欧美中日韩| 开心色怡人综合网站| 国产女人18毛片水真多| 日日夜夜免费精品视频| 色综合久久中文字幕综合网小说| 偷拍夫妻性生活| 9l视频自拍九色9l视频成人| 欧美日韩一二三区| 国产在线观看福利| 激情在线视频播放| 亚洲天堂精品视频| 四虎一区二区| 欧洲毛片在线| 91在线播放网址| 国产精品伊人日日| 国产视频在线观看视频| 免费av网站大全久久| 欧洲日本亚洲国产区| 精品在线免费观看视频| 亚洲久久久久| 久久精彩免费视频| 美国精品一区二区| 精品国产一区二区三区久久久樱花| 亚洲电影免费观看高清| 香蕉久久久久久av成人| 成人久久精品| 日韩一卡二卡三卡| 亚洲一区二区三区四区精品| 亚洲福利影视| 欧美精品在线一区二区三区| 一女二男3p波多野结衣| 久久青草视频| 欧美欧美午夜aⅴ在线观看| 日本激情视频在线| 日本在线精品| 欧美天堂一区二区三区| 免费看污污网站| 国产精品毛片久久久久久久久久99999999| 色天天综合色天天久久| 精品久久久久久久免费人妻| 你懂得影院夜精品a| 色94色欧美sute亚洲线路二| 精品久久久久久中文字幕2017| 欧美色999| 欧美熟乱第一页| 久久人人爽av| 精品一区二区三区免费看| 欧美一级二级在线观看| 亚洲熟女一区二区三区| 日韩中文av| 中文字幕精品一区久久久久| 国产又色又爽又高潮免费| 天天做天天爱天天综合网| 久久综合久久八八| 精品无码人妻一区二区三区| av成人天堂| 国产精品成人国产乱一区| 在线视频欧美亚洲| 国产成人精品综合在线观看 | 一本一本a久久| а√资源新版在线天堂| 五月婷婷激情综合| 别急慢慢来1978如如2| 99精品国产九九国产精品| 欧美成人精品1314www| 这里只有精品在线观看视频| 精品久久久久久久| 欧美精品情趣视频| 丁香六月婷婷综合| 国产在线播放一区三区四| 国产精品一区二区三区不卡| 大胆av不用播放器在线播放| 亚洲欧美电影院| 黄色影院一级片| 久久亚洲人体| 亚洲精品美女久久| 国产三级aaa| 亚洲美女色禁图| 国产美女精品视频免费观看| 国产91免费在线观看| 国产人伦精品一区二区| 97久久国产亚洲精品超碰热| 巨茎人妖videos另类| 日韩一区二区三区三四区视频在线观看 | 日韩限制级电影在线观看| av网页在线观看| 五月天久久久| 国产97免费视| 亚洲欧美另类一区| 中文字幕av在线一区二区三区| 日韩精品一区二区免费| 久久精品资源| 亚洲欧美在线播放| 国产一级av毛片| 精品伊人久久久久7777人| 久久草视频在线看| 最新国产在线拍揄自揄视频| 欧美视频一区在线观看| 国产麻豆天美果冻无码视频| 欧美在线精品一区| 国产精品久久久久久五月尺| 涩爱av在线播放一区二区| 伊人开心综合网| 天天干天天草天天| 国产一区二区欧美| 69av成年福利视频| 黄色www视频| 曰韩精品一区二区| 色网站在线视频| 成人嫩草影院| 国产精品久久久久久超碰 | 国产精品无码一区| av高清久久久| 蜜臀av无码一区二区三区| 精品视频一二| 久久精品国产亚洲精品| 在线观看xxxx| 欧美国产日韩精品免费观看| 国模杨依粉嫩蝴蝶150p| 最新亚洲精品| 欧美孕妇孕交黑巨大网站| 日韩有码第一页| 亚洲福利视频三区| 老司机午夜免费福利| 亚洲欧美文学| 99re在线观看视频| 在线观看中文| 欧美videos大乳护士334| 青青草激情视频| 国产精一区二区三区| 一本—道久久a久久精品蜜桃| 国产成人福利夜色影视| 色青青草原桃花久久综合| 国产精品欧美综合| 国产精品伦理一区二区| 99re精彩视频| 亚洲综合小说| 国产精品v欧美精品∨日韩| 欧美激情成人动漫| 亚洲黄页网在线观看| 亚洲视频免费播放| 久久嫩草精品久久久久| 国产精品入口免费软件| 久久综合国产| 高清一区二区三区视频| a级片在线免费| 亚洲无限av看| 国产伦精品一区二区三区四区| 亚洲欧美福利一区二区| 挪威xxxx性hd极品| 老**午夜毛片一区二区三区| 亚洲欧美日韩综合一区| 久久国际精品| 91国内产香蕉| 在线播放麻豆| 精品久久久久久无| 久久青青草原亚洲av无码麻豆| 欧美极品少妇xxxxⅹ高跟鞋| 久久精品视频在线观看免费| 亚洲三级毛片| 少妇精品久久久久久久久久| 国产成人免费视频网站视频社区| 久久久久中文字幕2018| 青梅竹马是消防员在线| 91.com在线观看| 一区二区三区视频免费看| 欧美国产丝袜视频| 国产av一区二区三区传媒| 欧美亚洲三区| 三级在线免费观看| 精品一区在线| 99国产高清| 素人一区二区三区| 久久久久成人网| av电影在线网| 亚洲成人三级在线| 国产又爽又黄免费软件| 婷婷久久综合九色国产成人| 先锋影音av在线| 成人一区二区三区中文字幕| 国产精品视频黄色| 中文日韩在线| 五月天激情图片| 日韩国产一区二区| 久久99精品久久久久子伦 | 日产欧产美韩系列久久99| 国产资源第一页| 欧美日韩色图| 久久99精品国产一区二区三区| 福利一区在线| 日韩免费观看网站| 超碰在线97国产| 久久这里只有精品视频首页| 精品成人一区二区三区免费视频| 精品久久久久一区| 国产熟女精品视频| 欧美日韩亚洲另类| 国产嫩bbwbbw高潮| 欧美日韩国产中字| 九九热精品免费视频| 国产精品国产三级国产aⅴ入口| a视频免费观看| 成人激情综合网站| 性生活在线视频| 国产一区二区三区美女| 欧美三级理论片| 久久综合影音| 日本wwww视频| 亚洲一区二区三区高清不卡| 国产肉体ⅹxxx137大胆| 欧美久色视频| 91视频 - 88av| 欧美成人亚洲| 最新av网址在线观看| 久久神马影院| 一区二区不卡在线| 日本一区二区三区视频| 午夜视频久久久| 第一会所sis001亚洲| 四虎影院一区二区三区 | 美女性感视频久久久| 精品黄色免费中文电影在线播放| 日韩在线播放视频| 男人的天堂在线视频免费观看 | 日韩女优电影在线观看| 国产视频手机在线| 精品乱人伦小说| 亚洲AV无码精品色毛片浪潮| 日韩午夜在线影院| xxxx国产精品| 亚洲精品在线免费观看视频| 日韩一级片免费看| 日韩精品视频在线免费观看| 欧美777四色影视在线| 亚洲欧美在线免费| 在线视频婷婷| 久久人人爽人人爽爽久久| 成人免费网址| 欧美精品videosex牲欧美| aaa在线播放视频| 奇米四色中文综合久久| 精品视频一区二区三区四区五区| 国产精品久久久久99| 婷婷久久免费视频| av噜噜色噜噜久久| 欧美理伦片在线播放| 欧美日本亚洲| 国产精品精品| 欧美午夜小视频| 校园激情久久| 亚洲一区精品视频在线观看| 国产乱理伦片在线观看夜一区 | 97一区二区国产好的精华液| 久久99国产精品99久久| 成人av二区| 天堂а√在线中文在线| 亚洲综合日韩| 激情在线观看视频| 99久久精品免费看国产 | 一本到高清视频免费精品| 日韩国产成人在线| 91精品国产综合久久小美女| 秋霞视频一区二区| 国产亚洲aⅴaaaaaa毛片| 免费a级人成a大片在线观看| 欧美精品福利视频| 自拍偷自拍亚洲精品被多人伦好爽 | 91制片厂免费观看| 亚洲区一区二| 日韩高清第一页| 不卡一区二区中文字幕| 亚洲精品国产精品国自| 亚洲福利电影网| 中文字幕人妻一区二区在线视频| 日韩你懂的电影在线观看| 欧美另类自拍| 欧美高清电影在线看| 欧洲成人一区| 久久精精品视频| 欧美在线三级| 色多多视频在线播放| 国产美女精品在线| 91视频免费观看网站| 一区二区三区欧美久久| 中文字幕二区三区| 欧美精品一区视频| 麻豆影视国产在线观看| 秋霞成人午夜鲁丝一区二区三区| 精品国产一区二区三区2021| 茄子视频成人在线观看| 极品尤物久久久av免费看| 99sesese| 国产亚洲精品免费| 狠狠躁夜夜躁人人爽天天高潮| 在线成人免费视频| 大胆av不用播放器在线播放 | 黄色成人在线视频| 国产一区二区三区奇米久涩| 88国产精品视频一区二区三区| 乱子伦视频在线看| 99久久777色| 久久精品国产亚洲AV无码麻豆| 5566中文字幕一区二区电影| 丁香婷婷在线| 国产ts一区二区| 亚欧日韩另类中文欧美| 成年人午夜免费视频| 国产成人免费视频精品含羞草妖精| 国产在线免费看| 在线观看国产91| 男人久久精品| 51久久精品夜色国产麻豆| 精品久久对白| 日韩一级性生活片| 成人黄色777网| 国产无遮挡aaa片爽爽| 日韩一卡二卡三卡国产欧美| 最新av在线播放| 91|九色|视频| 欧美日韩久久| 99久久久无码国产精品性波多| 一区二区三区四区乱视频| 99热这里只有精品1| 欧美成人免费大片| 欧美二区观看| 99久久久精品视频| 成人午夜碰碰视频| 日本特黄一级片| 亚洲精选中文字幕| 成人免费看视频网站| 日本一区二区三区视频在线播放| 午夜影院日韩| 天天躁日日躁aaaa视频| 91久久精品网| 麻豆网站在线免费观看| 成人中文字幕在线观看| 一区二区在线| 91精品又粗又猛又爽| 精品女同一区二区三区在线播放| 四虎影院在线播放| 国产精品精品国产| 国产精品二区不卡| 美女网站视频在线观看| 福利视频一区二区| 春暖花开成人亚洲区| 91久久精品国产91久久| 欧美日韩免费观看一区=区三区| 性欧美18—19sex性高清| 色综合视频在线观看| 成人全视频高清免费观看| 成人黄色免费片| 亚洲国产免费看| 亚洲欧美va天堂人熟伦| 91麻豆精品国产| 欧美男男tv网站在线播放| 亚洲精品一区二区三区蜜桃久| 国产一区二区三区视频在线播放| 日韩成人高清视频| 一区二区三欧美| 综合中文字幕| 天堂av在线网站| 亚洲人成影院在线观看| 亚洲欧洲成人在线| 国产在线观看一区二区三区 | 欧美77777| 国产成人91久久精品| 亚洲国产精品日韩专区av有中文| 精品熟女一区二区三区| 欧美性生活一区| 黄视频在线免费看| 四虎一区二区| 99精品久久只有精品| 中文字幕无线码一区| 久久久之久亚州精品露出| 成人av国产| 中文字幕 日本| 91精品婷婷国产综合久久竹菊| 午夜欧美激情| 真人做人试看60分钟免费| 久久久久一区二区三区四区|