分布式事务和常见的分布式事务包括 2PC、3PC、TCC、本地消息表、消息事务、最大努力通知。
2pc 和 3pc都是数据库层面的强一致性事务,有数据不一致阻塞风险。
tcc(Try - Confirm - Cancel):TCC可以跨数据库、跨不同的业务系统来实现事务。入侵业务比较严重。
Try 指的是预留,即资源的预留和锁定,注意是预留。
Confirm 指的是确认操作,这一步其实就是真正的执行了。
Cancel 指的是撤销操作,可以理解为把预留阶段的动作撤销了。
撤销和确认要注意幂等性问题。
本地消息表(最终一致性):把需要执行的任务放在表中,成功了调用下一个,失败了重试(幂等和最大重试次数),一直不成功报警人工处理,实现最终一致性。
消息事务:rocketmq支持消息事务。
1、先给broker发送事务消息(半消息),发送成功后执行本地事务,根据本地结果向broker发送commit(订阅方收到这条消息)或者rollback(订阅方收不到)。
redis: