本地事務ACID大家應該都知道了,統一送出,失敗復原,嚴格保證了同一事務内資料的一緻性!而分布式事務不能實作這種ACID,它隻能實作CAP原則裡的某兩個,CAP也是分布式事務的一個廣泛被應用的原型,CAP(Consistency, Availability, Partition Tolerance), 闡述了一個分布式系統的三個主要方面, 隻能同時擇其二進行實作. 常見的有CP系統, AP系統。
應用于CP和AP的原則在業界出現了一些架構:
CP系統就有二階段送出(強一緻性)

其中最近接觸的aspnetcore.cap就是一個滿足最終一緻性的異步消息方案實作的,其中它為mysql,sqlserver都提供了解決方案,消息隊列可以有kafka和rabbitmq兩種選擇,根據自己的需要去安裝,源代碼在github上有開源,nuget上也有對應的包包!
對消息確定型-最終一緻性的分布式事務的了解:
- 服務A送出資料
- 向消息中心發送消息
- 消息中心向訂閱方推送消息
- 訂閱方處理自己的業務邏輯
- 失敗去反複去重試,直到成功,而不是向強一緻性那樣,把A復原的
同時也感謝cap作者楊曉東的細心解答!(http://www.cnblogs.com/savorboard)
Github開源位址:https://github.com/dotnetcore/CAP
感謝!
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!