<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      分布式事務的一致性問題

      1 場景

      • 服務1 調(diào)用 服務2 的接口(比如 HTTP / gRPC);

      • 服務2 修改自己的數(shù)據(jù)并返回成功;

      • 服務1 收到服務2返回結(jié)果后,繼續(xù)修改自己數(shù)據(jù)庫;

      • ? 如果服務1 此時數(shù)據(jù)庫操作失敗(例如網(wǎng)絡(luò)、SQL異常等),就會導致:

        • 服務2 的數(shù)據(jù)已經(jīng)修改;

        • 服務1 的數(shù)據(jù)沒改成功;

        • 出現(xiàn)服務間數(shù)據(jù)不一致問題

      2 解決方案

      1. 本地事務 + 可靠消息最終一致性(推薦)

      流程如下:

      • 服務1先修改本地數(shù)據(jù),把需要通知服務2的消息寫入“消息表”(或發(fā)送消息到MQ);

      • 提交本地事務;

      • 然后異步發(fā)送消息給服務2(由消息中間件或定時任務發(fā)出);

      • 服務2收到消息后修改自己的數(shù)據(jù);

      • 若失敗可重試、補償,保證最終一致性。

      ?? 典型架構(gòu):微服務 + 消息隊列(如 RabbitMQ、Kafka、RocketMQ)

      ? 優(yōu)點:無強依賴,易落地
      ?? 缺點:不是強一致,而是最終一致性

      2. 分布式事務協(xié)議(SAGA 長事務 補償操作)

      SAGA 模式:

      假如你用一個 SAGA 引擎(比如 DTM、Seata),你會定義事務步驟和補償接口:

      [{ "action": "/create_order", "compensate": "/cancel_order" },
      { "action": "/reduce_inventory", "compensate": "/restore_inventory" },
      { "action": "/deduct_balance", "compensate": "/refund_balance" }
      ]

      框架自動控制流程:

      • 如果 deduct_balance 失敗了,自動倒序執(zhí)行:

        • refund_balance → restore_inventory → cancel_order

      • 如果 restore_inventory 失敗了,也可以重試;

      • 整個事務狀態(tài)持久化,有日志、有可視化界面

      基于 DTM(分布式事務管理器)實現(xiàn) SAGA 模式的實際例子,使用 Flask + Python

      前提準備 安裝 DTM:

      你可以用 Docker 啟動:

      docker run -d --name dtm \ -p 36789:36789 -p 8080:8080 \ yedf/dtm
      • 36789 是 gRPC 端口(不需要可以忽略)

      • 8080 是 HTTP 事務管理接口

      安裝 Python 客戶端:

      pip install dtmcli
      from dtmcli.saga import Saga
      
      dtm_url = "http://localhost:36789/api/dtmsvr"
      gid = "saga_transaction_001"
      
      saga = Saga(dtm_url, gid)
      
      saga.add(
          action="http://localhost:5001/order/create",
          compensate="http://localhost:5001/order/cancel"
      ).add(
          action="http://localhost:5002/inventory/deduct",
          compensate="http://localhost:5002/inventory/restore"
      ).add(
          action="http://localhost:5003/account/deduct",
          compensate="http://localhost:5003/account/refund"
      )
      
      saga.submit()
      print("? SAGA事務提交成功,GID:", gid)

      python run_saga.py  查看控制臺輸出,你會看到:

      • 如果所有步驟都成功:打印三個 ? 操作

      • 如果某一步失?。ㄈ缱⑨尩粲囝~操作里的失?。?,你會看到自動執(zhí)行補償邏輯(取消訂單、恢復庫存、退款)

      3. 寫反向補償邏輯(手動回滾)

      • 服務1在失敗后,嘗試調(diào)用服務2進行“撤銷”操作;

      • 例如刪除、恢復原狀態(tài);

      • 必須要求服務2提供回滾接口;

       

      posted @ 2025-08-05 09:48  Mr沈  閱讀(26)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品少妇av蜜臀av| 国产又色又爽又黄的视频在线 | 安吉县| 99中文字幕精品国产| 国产一区二区三区18禁| 国产精品第一区亚洲精品| 亚洲熟妇自偷自拍另欧美| 国产精品久久毛片| 激情动态图亚洲区域激情| 日韩午夜福利片段在线观看| 久久88香港三级台湾三级播放| 免费无码AV一区二区波多野结衣| 亚洲性无码av在线| 日韩精品二区三区四区| 超清无码一区二区三区| 国产精品黄色精品黄色大片 | 国产午夜亚洲精品国产成人 | 亚洲欧美日韩愉拍自拍美利坚| 亚洲免费人成在线视频观看| 张家口市| 男人猛躁进女人免费播放| 免费A级毛片樱桃视频| 红河县| 国产一区精品在线免费看| 亚洲理论在线A中文字幕| 亚洲男人av香蕉爽爽爽爽| 久久人人97超碰国产精品| 在线午夜精品自拍小视频| 性欧美三级在线观看| 日韩精品视频一二三四区| 99久久国产宗和精品1上映| 久久精品国产亚洲av高| 青春草公开在线视频日韩| 又湿又紧又大又爽A视频男| 丝袜高潮流白浆潮喷在线播放| 亚洲熟妇无码爱v在线观看| 蜜臀av一区二区三区日韩| 精品国产一区二区在线视| 中文国产日韩欧美二视频| 亚洲欧美在线观看一区二区| 岛国岛国免费v片在线观看|