分布式事务
分布式事务处理机制共有四种: 两阶段提交 TCC事务(事务补偿) 本地消息表(异步确保), MQ事务消息。 两阶段提交: 与数据库XA事务一样,两阶段提交使用XA协议。 两阶段提交这种方案属于牺牲了一部分可用性来换取的一致性。 优点:尽量保证了数据的强一致,适合对数据强一致要求很高的关键领域。 缺点:实现复杂,牺牲了可用性,对性能影响较大,不适合高并发高性能场景,如分布式系统跨接口调用。 TCC事务: TCC其实就是采用的补偿机制,其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿操作。分为三个阶段: Try阶段主要是对业务系统做检测和资源预留。 Confirm阶段主要是对业务系统做确认提交,Try阶段执行成功并开始执行Confirm阶段时,默认Confirm阶段是不会出错的。即:只要Try成功,Confirm一定成功。 Cancel阶段主要是在业务执行错误,需要回滚的状态下,执行的业务取消,预留资源释放。 优点:跟2阶段提交比起来,实现及流程相对简单了些,但数据的一致性也要比2阶段提交要差一些。 缺点:在2,3步中都可能失败。TCC是一种应用层的补偿方式,需要程序员在实现时写很多补偿的代码,一些场景中,一些业务流程用TCC不太好定义及处理。 本地消息表: 使用最多的,核心思想是将分布式事务拆分成本地事务进行处理,来源于ebay。 基本思路就是: 消息生产方