分布式事务

两阶段提交(Two-phase commit protocol,2PC)

通常用于通过支持XA(或JTA)的JDBC驱动来实现跨多个Data source的事务。2PC性能低下,也不能完全解决数据不一致的情况,应尽量避免使用。

TCC协议

TCC全名是Try-Confirm-Cancel,它也分为两个阶段,也有一个协调者负责协调整个分布式事务的流程。和2PC提交不同的是,业务系统需要负责整个分布式事务的执行,而不能全权交给底层的数据库,因为TCC的Cancel操作不是事务的回滚,而是业务的回滚。

Saga

使用一系列本地事务实现最终一致性的事务管理。本地事务是Saga参与者执行的工作单元。作为Saga一部分的每个操作都可以通过补偿事务回滚。补偿事务必须是幂等且可重试的。Sagas分为两种实现方案,Choreography(编舞)和Orchestration(编排),区别在于是每个参与者进项协调下一步操作还是由一个中央协调者做全局协调。Sagas一般使用消息队列(如Kafka)进项事件通知和数据分发。

参考资料