一架梯子,一头程序猿,仰望星空!
分布式事务面试题 > 内容正文

什么是SAGA事务?它的应用场景是什么?


问题简答

SAGA事务,是一种长事务解决方案,也是一种分布式事务协议。Saga分布式事务将一个大的事务流程分解为多个本地事务。每个本地事务都有一个相应的补偿操作,用于回滚或撤销之前的操作。

问题详解:

Saga事务

SAGA事务,之所以是一种长事务解决方案,那是因为saga,把一个业务流程,分解为多个步骤,每个步骤对应一个本地事务,每个步骤都有一个补偿操作,Saga首先按流程顺序,执行流程中的每一个步骤(本地事务),如果出现异常,就会按流程顺序反向,执行补偿操作,用于回滚或撤销之前的操作。

示意图


说明:
saga事务,按顺序执行T1、T2、T3,这个时候T3执行失败了,那么就反向执行C3、C2、C1补偿操作,C1-C3就是T1-T3对应的撤销操作。

Saga事务应用场景

  • 业务流程长、业务流程复杂

Sage事务优势:

  • 一阶段提交本地事务,无锁,高性能
  • 事件驱动架构,参与者可异步执行,高吞吐
  • 补偿服务易于实现

Saga事务缺点

复杂性高

SAGA 模式需要对事务的执行顺序和补偿机制进行设计和管理,这增加了系统的复杂性和维护难度,需要更多的开发和运维资源。

并发性能差

SAGA 模式将一个分布式事务拆分为多个局部事务,每个局部事务之间需要等待前一个局部事务完成。

补偿机制复杂

SAGA 模式的补偿机制需要考虑到局部事务的执行状态、补偿事务的执行顺序和结果等因素,这增加了补偿机制的复杂性。

不支持强一致性

SAGA 模式的最终一致性无法保证强一致性,事务没有执行完成之前,数据会出现中间状态,只有事务执行完成数据才会一致。