Saga事务
SAGA事务,之所以是一种长事务解决方案,那是因为saga,把一个业务流程,分解为多个步骤,每个步骤对应一个本地事务,每个步骤都有一个补偿操作,Saga首先按流程顺序,执行流程中的每一个步骤(本地事务),如果出现异常,就会按流程顺序反向,执行补偿操作,用于回滚或撤销之前的操作。
示意图
说明:
saga事务,按顺序执行T1、T2、T3,这个时候T3执行失败了,那么就反向执行C3、C2、C1补偿操作,C1-C3就是T1-T3对应的撤销操作。
Saga事务应用场景
- 业务流程长、业务流程复杂
Sage事务优势:
- 一阶段提交本地事务,无锁,高性能
- 事件驱动架构,参与者可异步执行,高吞吐
- 补偿服务易于实现
Saga事务缺点
复杂性高
SAGA 模式需要对事务的执行顺序和补偿机制进行设计和管理,这增加了系统的复杂性和维护难度,需要更多的开发和运维资源。
并发性能差
SAGA 模式将一个分布式事务拆分为多个局部事务,每个局部事务之间需要等待前一个局部事务完成。
补偿机制复杂
SAGA 模式的补偿机制需要考虑到局部事务的执行状态、补偿事务的执行顺序和结果等因素,这增加了补偿机制的复杂性。
不支持强一致性
SAGA 模式的最终一致性无法保证强一致性,事务没有执行完成之前,数据会出现中间状态,只有事务执行完成数据才会一致。