zoukankan      html  css  js  c++  java
  • 分布式事务和事务并发控制

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

  • 相关阅读:
    Ahoi2013 作业
    bzoj 2502 清理雪道 (有源汇上下界最小流)
    zoj 3229 Shoot the Bullet(有源汇上下界最大流)
    TCP协议和socket API 学习笔记
    http、TCP/IP协议与socket之间的区别
    ios多线程和进程的区别(转载)
    iOS进程间通信之CFMessagePort
    功能强大的Xcode辅助工具Faux Pas:帮你找到各种隐形的bug
    [深入浅出Cocoa]iOS程序性能优化
    IOS之禁用UIWebView的默认交互行为
  • 原文地址:https://www.cnblogs.com/harrychinese/p/transaction_control.html
Copyright © 2011-2022 走看看