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

  • 相关阅读:
    java中split()特殊符号"." "|" "*" "" "]"
    AJAX传递数组
    d3.js+svg的树形图
    d3.js之树形折叠树
    echarts之bootstrap选项卡不能显示其他标签echarts图表
    mysql 将时间戳与日期时间的转换
    ztree使用
    EL表达式之sessionScope
    struts2配置文件中的method={1}详解
    XML创建与解析常用方法介绍
  • 原文地址:https://www.cnblogs.com/harrychinese/p/transaction_control.html
Copyright © 2011-2022 走看看