009 云原生之分布式事务模式
在采用微服务架构的场景中,我们通常不会使用数据库共享模式,而是遵循每个微服务单独使用一个数据库的设计原则。
分布式事务的实现主要有 5 种模式:传统的两阶段提交、早期的最终一致性 BASE、预留资源的 TCC、补偿机制的 Saga 和高效的 AT。
两阶段提交,顾名思义就是事务要分两步提交,而其中最知名的是 XA 协议。XA 协议是数据库事务管理器的接口标准。目前,Oracle、Informix、DB2 和 Sybase 等各大数据库厂家都提供对 XA 的支持。两阶段提交的设计逻辑非常简单、清晰,但是其在实际场景中的应用仍然存在不少问题,主要包括以下三点:1)同步阻塞问题 2)单点故障 3)潜在数据不一致风险。
BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的简写。核心思想是每个系统即使无法做到强一致性,也可以根据自身的业务特点,采用适当的方式,使系统达到最终的一致性。
在数据一致性同步和核查的设计中,binlog 是一个非常好的工具。通过 binlog 的复制,非常容易实现数据的同步和一致性的核查。
TCC 实际上是 Try、Confirm 和 Cancel 的简称,将事务的提交过程分为 try-confirm cancel 三个阶段。try 阶段完成业务检查、预留业务资源;confirm 阶段使用预留的资源执行业务操作;cancel 阶段取消执行业务操作,释放预留的资源。
Saga 模式是一种用于解决长事务的实现方案,是一种补偿协议。在该模式下,一个分布式事务内会有多个参与者,每个参与者都是一个带有补偿逻辑的服务,即该服务可以根据业务场景实现正向操作和逆向回滚操作。
AT(Automatic Transaction)事务模式是阿里巴巴中间件内部为了解决 HSF 跨服务一致性和 TDDL 分库分表一致性而演化出来的一种事务模式,在内部被称为 TXC(Taobao TransactionConstructor)事务模式。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/f4e754799cac57fa651fc187c】。文章转载请联系作者。
评论