分布式事务解决方案
分布式事务是什么?
如今系统中是个各种服务剥离,各个服务有各自的业务逻辑,对于不同的服务自然也会有不同的数据库操作,分布式事务就是指调用服务的时候,服务之间的事务一致性问题。
如何解决事务一致性问题?
XA协议两阶段提交
特点:需要数据库支持XA协议,对性能影响较大
交易中间件与数据库通过XA接口规范,形成两个阶段完成全局事务。
阶段一:所有事务参与者将各自事务资源准备就绪。
阶段二:事务协调器根据所有参与者事务执行状态的反馈,通知所有参与者一致提交或者回滚。
TCC方案
特点:业务入侵强,实现成本高
事务调用者即业务应用调用在进行数据库操作之前,会通知事务协调器启动事务,然后进行所有服务的try接口,这一步是数据保存之前的一些操作;接着业务应用进行事务提交,事务协调器调用confirm接口或者cancel接口,进行数据库操作,调用失败会进行重试操作。
基于消息的最终一致性方案
特点:业务入侵性较大 实现成本比tcc方案略好
通过消息中间件,将分布式事务转换成多个本地事务的概念,然后依靠下游业务的不断重试机制保持最终的一致性。