分布式事務和事務並發控制


近期阿里開源了Fescar分布式事務中間件, 值得期待. 

分布式事務是指一個事務會涉及到到多個應用接口調用, 底層數據表涉及到多個, 但數據庫可以是一個或多個, 它是傳統單數據庫事務在廣度上的延伸. 

事務並發控制, 在OLTP關系型數據庫中, 事務並發控制往往是指事務的隔離性, 在本文中, 指的是應用層的並發事務控制, 常用的實現是樂觀鎖控制.

需要說明的是, 樂觀鎖解決的是事務並發控制, 它並不能解決分布式事務控制. 

 

業界的分布式事務控制技術

 

 

 

Fescar 的情況

 

在單體應用中, 后台DB往往只有一個, 所以使用數據庫事務即可. 在微服務環境下, 一個事務可能會涉及到多個微服務, DB connection 不是一個, DB 也可能不是一個, 分布式事務就是一個大問題, 目前的解決方案對比:
0. 接口內部實現本地事務, 接口之間不支持分布式事務, 然后輔以定期對賬機制進行修正.
1. 目前的XA實現, 代碼無侵入, 但對於並發和性能影響較大.
2. TCC實現, 代碼有侵入, 改造難度較大, 但性能較好, 時效性很好
3. 基於消息, 引入了消息中間件, 方案較復雜.

 

=================================
參考
=================================
從銀行轉賬失敗到分布式事務:總結與思考
https://www.cnblogs.com/xybaby/p/7465816.html
easy transaction 框架作者的文章:“若干分布式事務框架”與“我的偏見”( 測試/分析)
https://www.cnblogs.com/skyesx/p/10041923.html
https://github.com/QNJR-GROUP/EasyTransaction
如何選擇分布式事務形態(TCC,SAGA,2PC,基於消息最終一致性等等)
https://www.cnblogs.com/skyesx/p/9697817.html
各個開源框架的特性(框架支持/可靠日志存儲介質)
https://blog.csdn.net/yongyou890410/article/details/82719062
Spring Cloud的分布式事務框架壓測第一輪
http://springcloud.cn/view/374
拜托,面試請不要再問我TCC分布式事務的實現原理!
https://juejin.im/post/5bf201f7f265da610f63528a
分布式事務解決方案
https://github.com/clsaa/Distributed-Transaction-Notes
分布式事務解決方案與適用場景分析
https://www.jianshu.com/p/9e2670641119
關於開源分布式事務中間件Fescar
https://yq.aliyun.com/articles/688001
https://github.com/alibaba/fescar/wiki/Home_Chinese
4.0 atomikos JTA/XA全局事務
http://www.tianshouzhi.com/api/tutorials/distributed_transaction/386
6.0 柔性事務 :TCC兩階段補償型
http://www.tianshouzhi.com/api/tutorials/distributed_transaction/388
Spring Cloud分布式事務終極解決方案探討
本文推薦的方式是, 基於RabbitMQ的最終一致性解決方案
https://segmentfault.com/a/1190000012762869

 微服務架構下分布式事務解決方案——阿里GTS

https://www.cnblogs.com/jiangyu666/p/8522547.html

 

https://zhuanlan.zhihu.com/p/41446128
Sharding-Sphere 也正在支持分布式事務,


Apache ServiceComb-pack (基於Saga和TCC協議)的最終一致性解決方案
https://github.com/apache/servicecomb-pack/blob/master/docs/design_zh.md
https://github.com/apache/servicecomb-pack/blob/master/docs/user_guide_zh.md

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM