参考:
http://blog.csdn.net/mine_song/article/details/64118963
http://www.cnblogs.com/dinglang/p/5679542.html
1、什么是分布式事务
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
2、常见的分布式事务解决方案
1)基于XA协议的两阶段提交
XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。XA实现分布式事务的原理如下:
总的来说,XA协议比较简单,而且一旦商业数据库实现了XA协议,使用分布式事务的成本也比较低。但是,XA也有致命的缺点,那就是性能不理想,特别是在交易下单链路,往往并发量很高,XA无法满足高并发场景。XA目前在商业数据库支持的比较理想,在mysql数据库中支持的不太理想,mysql的XA实现,没有记录prepare阶段日志,主备切换回导致主库与备库数据不一致。许多nosql也没有支持XA,这让XA的应用场景变得非常狭隘。
2)消息事务+最终一致性
所谓的消息事务就是基于消息中间件的两阶段提交,本质上是对消息中间件的一种特殊利用,它是将本地事务和发消息放在了一个分布式事务里,保证要么本地操作成功成功并且对外发消息成功,要么两者都失败,开源的RocketMQ就支持这一特性,具体原理如下:
1、A系统向消息中间件发送一条预备消息
2、消息中间件保存预备消息并返回成功
3、A执行本地事务
4、A发送提交消息给消息中间件
通过以上4步完成了一个消息事务。对于以上的4个步骤,每个步骤都可能产生错误,下面一一分析:
- 步骤一出错,则整个事务失败,不会执行A的本地操作
- 步骤二出错,则整个事务失败,不会执行A的本地操作
- 步骤三出错,这时候需要回滚预备消息,怎么回滚?答案是A系统实现一个消息中间件的回调接口,消息中间件会去不断执行回调接口,检查A事务执行是否执行成功,如果失败则回滚预备消息
- 步骤四出错,这时候A的本地事务是成功的,那么消息中间件要回滚A吗?答案是不需要,其实通过回调接口,消息中间件能够检查到A执行成功了,这时候其实不需要A发提交消息了,消息中间件可以自己对消息进行提交,从而完成整个消息事务
基于消息中间件的两阶段提交往往用在高并发场景下,将一个分布式事务拆成一个消息事务(A系统的本地操作+发消息)+B系统的本地操作,其中B系统的操作由消息驱动,只要消息事务成功,那么A操作一定成功,消息也一定发出来了,这时候B会收到消息去执行本地操作,如果本地操作失败,消息会重投,直到B操作成功,这样就变相地实现了A与B的分布式事务。原理如下:
虽然上面的方案能够完成A和B的操作,但是A和B并不是严格一致的,而是最终一致的,我们在这里牺牲了一致性,换来了性能的大幅度提升。当然,这种玩法也是有风险的,如果B一直执行不成功,那么一致性会被破坏,具体要不要玩,还是得看业务能够承担多少风险。
相关推荐
微服务架构的分布式事务解决方案,完整31讲。,百度云资源 非加密,无密码,
常用的分布式事务解决方案介绍.ppt常用的分布式事务解决方案介绍.ppt常用的分布式事务解决方案介绍.ppt常用的分布式事务解决方案介绍.ppt常用的分布式事务解决方案介绍.ppt
### 微服务架构下的分布式事务解决方案 #### 一、引言 随着互联网技术的发展和企业级应用需求的增长,传统的单体应用已经难以满足高并发、高性能的要求。微服务架构因其高度解耦、易于扩展等特性成为了当前软件开发...
分布式事务解决方案「手写代码」,完整版视频教程下载。 课程大纲 1.基础概念:了解事务的ACID、CAP理论、BASE理论,为分布式方案打基础 2.2PC/3PC:通过2PC演化各种方案:XA方案、JTA、LCN、Seata 3.TCC:TCC不依赖...
分布式锁与信号量微服务架构中基于MQ的分布式事务解决方案分布式锁与信号量微服务架构中基于MQ的分布式事务解决方案分布式锁与信号量微服务架构中基于MQ的分布式事务解决方案分布式锁与信号量微服务架构中基于MQ的...
根据提供的标题、描述、标签及部分内容链接,我们可以推断出该视频全集主要围绕“微服务架构中的分布式事务解决方案”这一主题展开。接下来,我们将基于这些信息深入探讨相关的知识点。 ### 微服务架构简介 微服务...
### 完整版微服务架构的分布式事务解决方案 在当今高度分布式的软件开发环境中,微服务架构因其灵活性、可扩展性和可维护性等优势而受到广泛欢迎。然而,随着微服务数量的增加,如何处理跨服务的数据一致性问题成为...
如果不想使用JTA,Spring还提供了一种基于编程式事务管理的解决方案,称为PROPAGATION_REQUIRED。在这种模式下,开发者需要手动调用`TransactionTemplate`或在Service方法上使用`@Transactional`注解来开启和管理...
第03节--常用的分布式事务解决方案介绍 第04节--消息发送一致性方案探讨(可靠消息的前提保障) 第05节--JMS规范的消息发送与接收特点 第06节--消息重复发送问题及业务接口的幂等性设计 第07节--可靠消息服务...
尤其是在订单业务、资金业务等系统核心业务流程中,一定要有可靠的分布式事务解决方案来保证业务数据的可靠性和准确性。 为了解决大家在实施分布式服务化架构过程中关于分布式事务问题的困扰,本教程将基于支付系统...
### Java微服务系统分布式事务解决方案 #### 一、CAP定理与分布式系统设计原则 **CAP理论**在分布式系统的设计中扮演着至关重要的角色。它指出,在分布式计算环境中,任何共享数据系统都无法同时保证一致性...
### 微服务架构下的分布式事务解决方案 在当前的软件开发领域中,随着业务复杂度的不断提升,传统的单体架构已无法满足高效、灵活的需求变化。因此,越来越多的企业选择了微服务架构来构建其业务系统。然而,在...
微服务架构的分布式事务解决方案,无解压缩密码,通过百度网盘下载即可学习使用
### 分布式事务解决方案及其优缺点对比 #### 背景与重要概念 在现代分布式系统尤其是微服务架构中,确保跨多个服务的数据一致性成为了一项挑战性的任务。分布式事务作为保证这种一致性的关键技术手段,其核心在于...
本资料包"分布式事务解决方案.zip"深入探讨了分布式事务的各种解决策略,包括理论分析、案例实践以及配套的代码和原型工程,还有相关的视频教程,为学习者提供了全方位的学习资源。 1. **分布式事务理论基础**:...
一种常见的微服务分布式事务解决方案是基于补偿事务(Compensating Transaction)的TCC(Try-Confirm-Cancel)模式。在TCC模式中,每个服务提供尝试操作(Try)、确认操作(Confirm)和取消操作(Cancel)三个接口。...
分布式事务解决方案Seata 框架学习代码 Demo 。里面包含了完成的seata使用代码,包括AT、TCC、XA等模式的直接使用案例。开箱即用。 分布式事务解决方案Seata 框架学习代码 Demo 。里面包含了完成的seata使用代码,...