本方案设计的是强一致性的分布式事务,所有的事务都是强一致性提交,事务一般建议存储在Redis之中,读取比较快。然后事务采用本地事务自己处理的方式,这样在处理本地事物的时候,就能利用事务锁解决幂等性问题。不同服务的事务会最终绑定在一起,形成一个事务组,来进行事务的判定,各自事务独立try数据库,并且反馈,只要有一个无法成功,则整个事务全部回滚,全部成功以后才可以提交。
本方案中也可以自行增加事务补偿,因为幂等性问题,在本地事务环节就已经处理完成了,所以不用担心,做事务补偿的时候,确定事务中心的事务未曾提交就可以,但是事务补偿设计事务锁的释放,结合场景来使用,肯定会增加请求等待时间。
分布式事务成功的场景:
分布式事务失败的场景: