国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一文讀懂分布式事務的解決方案

2023-07-04 23:30 作者:懶人Java屈原  | 我要投稿

在?一文讀懂分布式事務原理?中介紹了二階段提交與三階段提交,今天我們來聊聊市面上一些分布式的解決方案。

1.基于MQ的方案

RocketMQ是支持事務消息的,可以直接使用。但是像RabbitMQ其他中間件不支持,可以采用以下的辦法:消息發(fā)送方與接收方,各建一張消息處理表A與B

消息發(fā)送方事務

1.執(zhí)行業(yè)務邏輯1

2.表A添加一條待處理狀態(tài)消息。

消息接收方事務

1.表B添加一條消息記錄

2.執(zhí)行業(yè)務邏輯2

3.異步回調修改A表對應消息狀態(tài)為已處理

定時任務

定時回查表A待處理的消息,去接收方查詢表B查詢對應關系的消息數(shù)據(jù),會有如下兩種情況

1.表B能查到消息,代表業(yè)務邏輯2執(zhí)行成功,只需要修改表A的狀態(tài)

2.表B查詢不到數(shù)據(jù),代表接收方可能處理失敗了。重新發(fā)送消息走一遍邏輯。

2.LCN框架

由事務的參與方(TxClient)與事務協(xié)調者(TxManager)兩部分組成。如下圖事務發(fā)起方、參與方A、參與方B都會向事務協(xié)調者申請各自的groupId,最后加入到同一個事務組進行管理。


lcn的使用

1.一個獨立的工程啟用TxManager

2.需要使用lcn的工程 方法上加 @LcnTransaction注解,配置文件指明TxManger的地址。

lcn缺點

可能造成死鎖、性能較差

3.Seata框架使用

由阿里巴巴開發(fā),基于數(shù)據(jù)庫的,分布式事務框架。

如何使用:

1.每個業(yè)務庫新建UNDO_LOG 表

2.需要使用分布式事務的方法加上 @GlobalTransactional注解

3.在方法執(zhí)行時,UNDO_LOG會生成每個本地事務的回滾語句,如果所有的事務都執(zhí)行成功就會刪除UNDO_LOG 表的數(shù)據(jù)。如果失敗會使用回滾語句進行回滾。


一文讀懂分布式事務的解決方案的評論 (共 條)

分享到微博請遵守國家法律
茌平县| 灌南县| 林周县| 呼伦贝尔市| 洪湖市| 温泉县| 通州市| 澎湖县| 宜良县| 石泉县| 九江县| 德江县| 高雄市| 徐州市| 社旗县| 勐海县| 盈江县| 昌吉市| 三亚市| 屏东县| 涟源市| 明溪县| 许昌市| 仙游县| 宝山区| 普宁市| 鄂州市| 宁陵县| 仁布县| 若尔盖县| 长白| 大田县| 射洪县| 金华市| 镇赉县| 克拉玛依市| 清河县| 东莞市| 留坝县| 崇左市| 中卫市|