美文网首页
分布式事务

分布式事务

作者: 飞_侠 | 来源:发表于2020-02-24 22:04 被阅读0次

      业务量级扩大之后的分库,以及微服务落地之后的业务服务化,都会产生分布式数据不一致的问题。既然本地事务无法满足需求,因此分布式事务就要登上舞台。

      什么是分布式事务?我们可以简单地理解,它就是为了保证不同数据库的数据一致性的事务解决方案。

      CAP原则和BASE理论

      CAP原则是Consistency(一致性)、Availability(可用性)和Partition-tolerance(分区容错性)的缩写,它是分布式系统中的平衡理论。在分布式系统中,一致性要求所有节点每次读操作都能保证获取最新数据;可用性要求无论任何故障产生后都能保证服务仍然可用;分区容错性要求被分区的节点可以正常对外提供服务。事实上,任何系统只可同时满足其中两个,无法三者兼顾。对于分布式系统而言,分区容错性是一个最基本的要求。那么,如果选择了一致性和分区容错性,放弃可用性,那么网络问题会导致系统不可用。如果选择可用性和分区容错性,放弃一致性,不同的节点之间的数据不能及时同步数据而导致数据的不一致。

      BASE理论针对一致性和可用性提出了一个方案,BASE是Basically Available(基本可用)、Soft-state(软状态)和Eventually Consistent(最终一致性)的缩写,它是最终一致性的理论支撑。简单地理解,在分布式系统中,允许损失部分可用性,并且不同节点进行数据同步的过程存在延时,但是在经过一段时间的修复后,能够达到数据的最终一致性。BASE强调的是数据的最终一致性。相比于ACID而言,BASE通过允许损失部分可用性来获得一致性。

      比较常用的分布式事务解决方案包括强一致性的两阶段提交协议、三阶段提交协议,以及最终一致性的可靠事件模式、补偿模式、阿里的TCC模式。

      其中,XA协议是一个分布式事务协议,它有两个角色:事务管理者和资源管理者。我们可以把事务管理者理解为协调者,而把资源管理者理解为参与者。XA协议通过二阶段提交协议保证强一致性。顾名思义,二阶段提交协议具有两个阶段:第一阶段准备,第二阶段提交。

      三阶段提交协议,三阶段提交协议很好地解决了二阶段提交协议带来的同步阴塞问题,是一个非常有参考意义的解决方案。但是,极小概率的场景下可能会出现数据的不一致性。因为三阶段提交协议引入了超时机制,如果出现资源管理者(参与者)超时场景就会默认提交成功,如果其没有成功执行,或者其他资源管理者(参与者)出现回滚,那么就会出现数据的不一致性。二阶段提交协议存在诸多潜在问题,因此三阶段提交协议出台了。三阶段提交协议是二阶段提交协议的改良版本,它与二阶段提交协议的不同之处在于引入了超时机制来解决“同步阻塞”问题,此外加入了预备阶段,尽可能提早发现无法执行的资源管理者(参与者)并终止事务,如果全部资源管理者(参与者)都可以完成,才发起第二阶段的准备和第三阶段的提交。否则,其中任何一个资源管理者(参与者)回复执行,或者超时等待,那么就终止事务。总结一下,三阶段提交协议包括第一阶段预备、第二阶段准备和第二阶段提交。

      三阶段提交协议很好地解决了二阶段提交协议带来的同步阻塞问题,是一个非常有参考意义的解决方案。但是,极小概率的场景下可能会出现数据的不一致性。因为三阶段提交协议引入机制,如果出现资源管理者(参与者)超时场景就会默认提交成功,如果其没有成功执行,或者其他资源管理者(参与者)出现回滚,那么就会出现数据的不一致性。

引自《高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh》

相关文章

  • 分布式事务与分布式锁

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

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

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

  • 分布式事务

    目录 分布式事务解决方案 长事务: 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...

  • 解密分布式事务框架-Fescar

    1.分布式事务 我曾经能不用分布式事务就别用分布式事务,因为会引入很多的复杂度。虽然再网上有很多开源的分布式事务框...

网友评论

      本文标题:分布式事务

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