分布式事务
1、AT,通过生成反向SQL实现数据回滚,需要在数据库额外附加UNDO_LOG表。
特点:性能高,是AP(高可用)模式,难易程度简单,靠Seata自己解析生成反向SQL并回滚。
使用要求:所有的服务是自己的服务,自己有管辖权,总不能要求第三方应用在它的数据库中添加UNDO_LOG表吧。
应用场景:高比发互联网项目,允许数据出现短暂的不一致,可通过对账系统或补录来保证最终一致性。
2、TCC,Try尝试阶段,对资源进行锁定,Confirm确认阶段,对资源进行确认,Cancel取消阶段,对资源进行还原操作。需要对原始的数据表进行修改。例如库存需要添加冻结库存字段。
特点:性能高,是AP(高可用)模式,难易程度复杂,Seata只负责全局事务的提交和回滚,具体回滚需要程序员自己实现。
使用要求:所有的服务是自己的服务,自己有管辖权,支持不同的数据库。
应用场景:高比发互联网项目,允许数据出现短暂的不一致,可通过对账系统或补录来保证最终一致性。
3、SAGA,Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。
特点:性能取决于三方服务。AP模式,复杂,提交和回滚有程序员编写。无法保证隔离性。
应用场景:需要和第三方交互,如支付宝
4、XA模式,基于数据