【分布式事務】微服務架構下的分布式事務問題
阿新 • • 發佈:2018-10-02
queue spring 回滾 事務提交 relative 社區 confirm 模型 功能
一、基本概念
- ACID理論:關系型數據庫的事務滿足 ACID 的特性,具有 ACID 特性的數據庫支持數據的強一致性,保證了數據本身不會出現不一致。適用於傳統的單體架構。
- CAP理論:在分布式系統下, 包含三個要素:Consistency(一致性)、Availability(可用性)、Partition tolerance(分區容錯性),並且三者不可兼得。分布式系統要求保證分區容錯性,只能在數據強一致性(C)和可用性(A)之間做平衡,即選擇CP或者AP。比如Zookeeper為CP系統保證強一致性犧牲一定的可用性;Eureka為AP系統保證較高可用性犧牲一定的一致性。另外,CAP理論中是忽略網絡延遲,也就是當事務提交時,從節點A復制到節點B,但是在現實中這個是明顯不可能的,所以總會有一定的時間是不一致。所以CAP一般適用於局域網系統的理論基礎。
- BASE理論:解決 CAP 理論中分布式系統的可用性和一致性不可兼得的問題,提出最終一致性。即,最終數據是一致的就可以了,而不是實時保持強一致。例如,支付成功,訂單也成功,但增加積分失敗,此時,不應回滾支付和訂單,而應通過一些 補償方法來讓積分得以正確地增加。
二、解決方案
方案 | 解決思路 | 適用場景 | 說明 |
---|---|---|---|
本地事務 |
|
|
|
兩階段提交 |
|
|
|
三階段提交 |
|
|
|
可靠消息模式 |
|
|
|
可靠消息變種 |
|
|
|
|
|||
SAGA方案 |
|
|
|
阿裏GTS |
|
|
|
總結建議 |
|
三、參考資料
-
再有人問你分布式事務,把這篇扔給他:https://mp.weixin.qq.com/s/W7XeNKIwB-JxnyStq0xD6g
-
GTSDemo介紹:https://help.aliyun.com/document_detail/57267.html?spm=a2c4g.11174283.3.5.6eea735d9NoIS6
-
ByteTCC:https://github.com/liuyangming/ByteTCC/
-
GTS解密--GTS的原理、架構與特點:https://zhuanlan.zhihu.com/p/32684212
-
分布式事務系列:https://blog.csdn.net/qq_27384769/article/details/79305402
四、GitHub相關項目
- https://github.com/HasonHuang/distributed-transaction-process
- https://github.com/QNJR-GROUP/EasyTransaction
- https://github.com/vvsuperman/coolmq
- https://github.com/yu199195/myth
- https://github.com/yu199195/hmily
- https://github.com/1991wangliang/tx-lcn
- https://github.com/codingapi/tx-lcn
- https://github.com/prontera/spring-cloud-rest-tcc
- https://github.com/QNJR-GROUP/EasyTransaction
【分布式事務】微服務架構下的分布式事務問題