分布式事务和事务并发控制

近期阿里开源了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

 

posted @ 2019-01-21 16:29  harrychinese  阅读(1430)  评论(0编辑  收藏  举报