美文网首页
分布式事务理论研究

分布式事务理论研究

作者: 大强斌 | 来源:发表于2019-12-01 19:55 被阅读0次

1 传统的分布式事务 基于数据库支持的xa两阶段提交事务

缺点 :

      1性能差,再xa 两阶段提交锁一直占有,协议是阻塞性协议。

      2可靠性低,如果xa协调程序宕机。所有的事务都阻塞

为了提升性能,采用强一致性降低到最终一致性的思路。将面向资源的事务,提升到面向业务的事务。降低锁的粒度。提高并发度,

出现了几种理论

    1saga 理论。将长事务分割成短事务,事务采用补偿机制,进行保持最终一致性。

特点

适应场景 1必须支持幂等性 2场景的独立性

  1性能高 2 业务改造成本低3 无法解决事务的隔离性 

阿里的seata框架,实现了saga模式。

https://seata.io/zh-cn/docs/user/saga.html参考 

saga实现理论

https://www.jianshu.com/p/e4b662407c66

2tcc 理论

Seata 框架把每组 TCC 接口当做一个 Resource,称为 TCC Resource。

将底层的资源模型,提升到业务层次。

TCC 模型的隔离性思想就是通过业务的改造,在第一阶段结束之后,从底层数据库资源层面的加锁过渡为上层业务层面的加锁,从而释放底层数据库锁资源,放宽分布式事务锁协议,将锁的粒度降到最低,以最大限度提高业务并发性能。

采用数据库锁与业务加锁的方式结合。由于业务加锁的特性不影响性能,因此,尽可能降低数据库锁粒度,过渡为业务加锁,从而提高业务并发能力。

1阶段 预占资源。

2阶段,决定提交还是回滚

特点

    1性能高2解决了隔离性的问题(二阶段只操作自己占用的资源。与其他事务无关,避免了并发性问题)

    3 业务的改造成本比较高

tcc 理论 https://www.infoq.cn/article/G33hCC-QoSJPlkt4e64E 理论 讲解了相对xa协议为啥提升了性能

https://juejin.im/post/5bf201f7f265da610f63528a具体例子

saga 模式

也是分2阶段提交。1阶段,申请并占有全局锁后会提交本地事务和事务日志 2阶段决定回滚还是提交

用全局锁实现了事务写隔离  默认读未提交事务隔离级别。可以实现 读已提交事务隔离。

如果应用在特定场景下,必需要求全局的读已提交,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句的代理。

SELECT FOR UPDATE 语句的执行会申请全局锁,如果全局锁被其他事务持有,则释放本地锁(回滚 SELECT FOR UPDATE 语句的本地执行)并重试。这个过程中,查询是被 block 住的,直到全局锁拿到,即读取的相关数据是已提交的,才返回。

出于总体性能上的考虑,Seata 目前的方案并没有对所有 SELECT 语句都进行代理,仅针对 FOR UPDATE 的 SELECT 语句。

参考https://seata.io/zh-cn/docs/overview/what-is-seata.html

特点

1实现了事务的隔离性

2把每个数据库被当做是一个 Resource 

3应用层基于SQL解析实现了自动补偿,从而最大程度的降低业务侵入性;

3相对其他性能差。5次rpc通信

分布式三大理论的总结

https://www.jianshu.com/p/917cb4bdaa03

感谢以上各位文章的作者无私的风险。

        

    

相关文章

  • 分布式事务理论研究

    1 传统的分布式事务 基于数据库支持的xa两阶段提交事务 缺点 : 1性能差,再xa 两阶段提交锁一直占有,...

  • 分布式事务与分布式锁

    一、分布式事务 什么事分布式事务 分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务。 分布式...

  • 微服务分布式事务--破局

    微服务架构下分布式事务设计实战 商品 订单 支付 分布式事务->长事务本地事务->短事务 分布式事务: 比如 下...

  • 分布式事务

    目录 分布式事务解决方案 长事务: saga 短事务: 设计的时候尽量短事务,能不用分布式事务尽量不用,分布式事务...

  • ATOMIKOS+JTA分布式事务记录

    ATOMIKOS+JTA是用来分布式事务的中间件,那么什么是分布式事务呢? 事务,分为单机事务,分布式事务;单机事...

  • 分布式事务

    一、什么是分布式事务 二、分布式事务产生的原因/分布式事务的应用场景 三、分布式事务的基础/理论 CAP/BASE...

  • 微服务 14:初探微服务分布式事务 - Seata

    1:什么是事务,什么是ACID 2:什么是分布式事务 3:分布式事务解决方案 4:Seata 分布式事务框架 5:...

  • 分布式事务的解决方案

    本文从以下几个方面介绍分布式事务的解决方案: 为什么会有分布式事务分布式事务经典模型分布式事务解决方案 为什么会有...

  • MySQL分布式事务支持

    MySQL分布式事务介绍 InnoDB存储引擎提供了对XA事务的支持,并通过XA事务来支持分布式事务的实现。分布式...

  • 微服务中分布式事务解决方案

    分布式事务解决方案 1、阿里巴巴seata分布式事务 2、 京东ShardingSphere分布式事务 3、tcc...

网友评论

      本文标题:分布式事务理论研究

      本文链接:https://www.haomeiwen.com/subject/sxqtgctx.html