分布式柔性事务
倘若限界上下文之间采用跨进程通信,且遵循零共享架构,各个限界上下文访问自己专有的数据库,这时的架构就演变为微服务风格。微服务架构不能绕开的一个问题,就是如何处理分布式事务。如果微服务访问的资源支持 X/A 规范,可以采用诸如二阶段提交协议等分布式事务来保证数据的强一致性。当一个系统的并发访问量越来越大,分区的节点越来越多时,用这样一种分布式事务去维护数据的强一致性,成本是非常昂贵的。
作为典型的分布式系统,微服务架构受到CAP平衡理论的制约。所谓的 CAP 就是 Consistency(一致性)、Availablity(可用性)和 Partition-tolerance(分区容错性)的缩写:
- 一致性:要求所有节点每次读操作都能保证获取到最新数据;
- 可用性:要求无论任何故障产生后都能保证服务仍然可用;
- 分区容错性:要求被分区的节点可以正常对外提供服务。
CAP 平衡理论是 Eric Brewer 教授在 2000 年提出的猜想,即“一致性、可用性和分区容错性三者无法在分布式系统中被同时满足,并且最多只能满足其中两个!”这一猜想在 2002 年得到 Lynch 等人的证明。由于分布式系统必然需要保证分区容忍性,在这一前提下,就只能在可用性与一致性二者之间进行取舍。如果要追求数据的强一致性,就只有牺牲系统的可用性,保障强一致性的手段就是遵循XA协议的方案包括二阶段提交协议,以及基于它进行改进的三阶段提交协议。
许多业务场景对数据一致性要求并非不能妥协。这个时候BASE理论就体现了另一种平衡思