分佈式及分佈式事務解決方案

 

分佈式產生的背景

1. 傳統項目多數據源時;

2. RPC遠程調用中發起方A調用遠程接口B成功後,發起方A突然報錯(此時B方可能已經提交,A報錯後無法再回滾B);

解決思路:採用最終一致性和2PC或3PC(兩階段提交、三階段提交),短暫的數據延遲是允許的,但是最終數據要保持一致。

解決方案

1. JTA+Atomic,適用於傳統項目

2. 基於MQ補償解決分佈式事務,RabbitMQ

3.RocketMQ中自帶事務消息;
4.基於LCN解決分佈式事務,原理:代理我們自己的數據源重寫連接Commit和Rollback方法實現假關閉,傳遞事務的全局ID;
5.基於Seata解決分佈式事務,原理和LCN一致,
兩者區別:在於回滾的方式,LCN回滾是假關閉容易造成死鎖,但是
seata採用undo log日誌逆向生成sql語句實現回滾。

以上5種方案適合於企業內部項目的服務實現。


如果是外部和外部的接口解決分佈式事務問題,可以採用類似支付寶異步回調方式+主動查詢

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章