關於事務補償機制
事務補償機制
什麼是事務補償機制?
針對每個操作,都要註冊一個與其對應的補償(撤銷)操作
在執行失敗時,呼叫補償操作,撤銷之前的操作
A給B轉賬的例子,A和B在兩家不同的銀行
A賬戶減200元,B賬戶加200元
兩個操作要保證原子性,要麼全成功、要麼全失敗
由於A和B在兩家不同的銀行,所以存在分散式事務的問題
轉賬介面需要提供補償機制
如果A在扣減的過程出現問題,直接丟擲異常,事務回滾
B在增加餘額的過程中,出現問題,要呼叫A的補償介面
A之前的扣減操作,得到了補償,進行了撤銷
保證了A和B的賬是沒有問題的
- 優點:邏輯清晰、流程簡單
- 缺點:資料一致性比XA還要差,可能出錯的點比較多
- TCC屬於應用層的一種補償方式,程式設計師需要寫大量程式碼
重試補償案例:
當時是簡單的進行定時,每隔15分鐘拉取所有的未推送記錄(包含上次未推成功的),放入MQ中,在消費端進行資料推送。---在消費端有另一套資料一致性機制,這裡可以預設只要放入MQ,即可認定資料推送成功。
1、線下記錄表增加兩個欄位,推送是否成功欄位status,推送次數字段reload_count,表中已有記錄建立時間ins_time
2、設定篩選條件:當前時間 - 建立時間 >= 2的n次冪 * 初次間隔時長
SELECT oh.*
ta_combine_order_hdr oh
where oh.`status`=2
and UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(oh.ins_time) >= POW(2,oh.reload_count) *10
and oh.ask_type = 1
limit 200
————————————————
推薦閱讀:
原文連結:https://blog.csdn.net/weixin_45647118/article/details/117929335
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2902747/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微服務分散式事務之LCN、TCC特點、事務補償機制緣由以及設計重點微服務分散式
- 關於Delta Lake的ACID事務機制簡介
- openGauss事務機制(上)
- openGauss事務機制(下)
- Laravel基於reset機制實現分散式事務Laravel分散式
- spring事務傳播機制Spring
- 成本補償合同
- spring的事務傳播機制Spring
- Apache Pulsar分散式事務機制Apache分散式
- redis(10)事務和鎖機制Redis
- mysql 事務,鎖,隔離機制MySql
- TRIZ | 如何把重量補償原理用於廚房?
- Redis系列(九):Redis的事務機制Redis
- Redis系列12:Redis 的事務機制Redis
- mysql事務處理與鎖機制MySql
- RTC-溫度補償
- 關於 MySQL 的巢狀事務MySql巢狀
- 關於分散式事務的理解分散式
- [轉帖]帶你讀懂Spring 事務——事務的傳播機制Spring
- Spring Boot事務傳播機制 - DZone JavaSpring BootJava
- 解析Spring Boot中的事務管理機制Spring Boot
- 事務傳播機制之REQUIRES_NEWUI
- MySQL中的事務原理和鎖機制MySql
- 關於Java中的反射機制Java反射
- 關於log file switch and checkpoint機制
- 關於Spring Aop和事務記錄Spring
- 關於事務回滾註解@Transactional
- 用Java輕鬆完成一個分散式事務TCC,自動處理空補償、懸掛、冪等Java分散式
- 一文說清 InnoDB 的事務機制
- Mysql事務隔離級別與鎖機制MySql
- Spring事務專題(四)Spring中事務的使用、抽象機制及模擬Spring事務實現Spring抽象
- 關於mysqldump備份非事務表的注意事項MySql
- 關於JavaScript的記憶體機制JavaScript記憶體
- 關於爬蟲 retry 機制的思考爬蟲
- 關於流資料上的事務操作
- MySQL關於事務常見的問題MySql
- [20211021]關於undo段頭事務表.txt
- SAR運動誤差的補償