java面试题一:分布式事务方案有哪些?

常见的分布式事务解决方案介绍,可以作为面试话术,希望对大家有帮助。

一,基于可靠消息MQ的解决方案:

  1. 原理是异步提交,主业务成功,该业务涉及的消息事务一定成功调用,否则丢弃该事务消息

  2. 特点:异步实现系统解耦和并发的缓冲

  3. 场景:异步业务中使用,通用性扩展性较高

java面试题一:分布式事务方案有哪些?_第1张图片

rocketMq

二,TCC分布式事务:

  1. 模式的核心在于TCC接口的设计,用户根据业务场景将原先的一步操作,拆解成业务资源预留和预留资源提交,撤销的两阶段设计

  2. 原理是两阶段提交,一阶段执行try 业务检查,预留资源; 根据try交易反馈,二阶段执行:confirm 业务事务执行提交/ cancel 业务取消,释放预留资源

  3. 特点:使用业务锁,实现不同事物隔离;交易过程中不锁数据库资源,高性能;需要对应用的业务TCC适配改造,业务场景侵入性和改造较大

  4. 使用场景:账务核算,借贷等银行业务场景,

三,saga分布式事务解决方案:

  1. 模型原理冲正补偿: 一个事务有多个参与者,每个参与者都实现正向交易和反向补偿交易; 业务流程中执行各参与者正向交易;当出现失败时则补偿前面已完成交易的反交易.在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

  2. 特点:业务流程不锁数据库资源,按交易流程顺序执行,高性能;正向交易完成后业务立即落地,数据客户可见; 补偿模式易于实现

  3. 场景: 适用于工作流,业务流等自身隔离性较强的业务,不适用高并发及一致性要求高的场景

举个例子:目前阿里开源的分布式事务框架seata介绍

seata原理:定义一个分布式事务我们可以把-个分布式事务理解成一个包含了若干分支事务的全局事务,全局事务的职责是协调其下管辖的分支事务达成致,要么一起成功提交,要么一起失效回滚。此外,通常分支事务本身就是一个满足ACID的本地事务。这是我们对分布式事务结构的基本认识,与XA是一致的。

协议分布式事务处理过程的三个组件

  1. Transaction Coordinator (TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提支

  2. Transaction Manager :控制全局事务的边界,负责开启子-个全局事务,并最终发起全局提交或全局回

  3. Resource Manager (RM):控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分

的提交和回滚。

一个典型的分布式事务过程:

TM 向TC 申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的 XID:xID 在微服务调用链路的上下文中传播;RM 向TC注册分支事务,将其纳入 XID对应全局事务的管辖,TM向TC发起针对 XID 的全局提交或回滚决议;TC 调度XId下管辖的全部分支事务完成提交或回滚请求

你可能感兴趣的:(java,spring,spring,boot,架构,spring,cloud)