分布式事务小记

随着企业的数字化程度日趋变高,各种系统的交互接也变得日益紧密,随之而来的是,性能、领域拆分、事务一致性等需要面对、解决的问题。这里总结一下在分布式、微服务的系统中,如何去实现、保障事务的一致性。

常见分布式事务实现及对比

类型

实现原理

性能

代码入侵

异常回滚

实现方案

可靠事件队列

远程服务的事务先通过本地事务持久化消息,然后定任务不断重试

无补偿

支持事务消息的消息队列(RocketMQ)or 自行基于xxljob、Elastic-Job实现

TCC

2阶段提交,try + confirm/cancel

高,须实现Try、Confirm、Cancel 3种逻辑

自动取消

Seata、TCC-TRANSACTION

SAGA

将大事务拆解成小事务,针对小事务依次提交或者补偿式回滚

中,须额外实现补偿逻辑

自动补偿,存在补偿失败的异常情况,需要人工介入

Seata

AT

在SAGA的基础上,优化为数据补偿方式(db的回滚日志)

中,存在全局锁

自动补偿

Seata

XA

基于 XA 协议的分布式事务处理

自动回滚

Seata

参考资料

Comment