分布式事务方案

分布式事务解决方案

  • 分布式事务是什么?

    ​ 如今系统中是个各种服务剥离,各个服务有各自的业务逻辑,对于不同的服务自然也会有不同的数据库操作,分布式事务就是指调用服务的时候,服务之间的事务一致性问题。

  • 如何解决事务一致性问题?

    1. XA协议两阶段提交

      特点:需要数据库支持XA协议,对性能影响较大

      交易中间件与数据库通过XA接口规范,形成两个阶段完成全局事务。

      阶段一:所有事务参与者将各自事务资源准备就绪。

      阶段二:事务协调器根据所有参与者事务执行状态的反馈,通知所有参与者一致提交或者回滚。

    2. TCC方案

      特点:业务入侵强,实现成本高

      事务调用者即业务应用调用在进行数据库操作之前,会通知事务协调器启动事务,然后进行所有服务的try接口,这一步是数据保存之前的一些操作;接着业务应用进行事务提交,事务协调器调用confirm接口或者cancel接口,进行数据库操作,调用失败会进行重试操作。

    3. 基于消息的最终一致性方案

      特点:业务入侵性较大 实现成本比tcc方案略好

      通过消息中间件,将分布式事务转换成多个本地事务的概念,然后依靠下游业务的不断重试机制保持最终的一致性。