跳到主要内容

第六章 最终一致性分布式事务解决方案

一、最终一致性分布式事务概述

强一致性分布式事务解决方案要求参与事务的各个节点的数据时刻保持一致,查询任意节点的数据都能得到最新的数据结果。这就导致在分布式场景,尤其是高并发场景下,系统的性能受到影响。而最终一致性分布式事务解决方案并不要求参与事务的各节点数据时刻保持一致,允许其存在中间状态,只要一段时间后,能够达到数据的最终一致状态即可

1.典型方案

业界对于数据的一致性问题,一直在探索有效的解决方案。为了解决分布式、高并发场景下系统的性能问题,业界基于 Base 理论提出了最终一致性分布式事务解决方案

典型的最终一致性解决方案如下所示:

1、 TCC解决方案;
2、 可靠消息最终一致性解决方案;
3、 最大努力通知型解决方案;

2.适用场景

最终一致性分布式事务解决方案主要用于不要求结果数据时刻保持一致、允许存在中间状态,但经过一段时间后,各个节点的数据能够达到一致状态的场景

在电商支付场景中,会涉及订单服务、支付服务、库存服务、积分服务、仓储服务等环节,每个服务都是单独部署的。订单服务会调用支付服务生成交易流水,订单服务会调用库存服务扣减商品库存,订单服务会调用积分服务为用户的账户增加积分,订单服务会调用仓储服务生成出库单。如果这一系列的服务调用操作使用强一致性分布式事务,很容易造成系统性能低下,导致系统卡顿,并且服务与服务之间的交互是通过网络进行的,由于网络的不稳定性,就会导致服务之间的调用出现各种各样的问题,难以完成强一致性分布式事务的提交操作

上述电商支付场景就是最终一致性分布式事务解决方案的适用场景。在最终一致性分布式事务解决方案中,每个服务都存在中间状态,服务与服务之间不必保持强一致性,允许在某个时刻查询出来的数据存在短暂的不一致性,经过一段时间后,各个服务之间的数据能够达到最终一致性。这样,不仅各个服务的数据达到了最终一致性,还极大地提高了系统的整体性能并降低了分布式事务执行过程中出错的概率

3.优缺点

最终一致性分布式事务解决方案的优点如下:

1、 性能比较高,这是因为最终一致性分布式事务解决方案不要求数据时刻保持一致,不会因为长时间持有事务占用的资源而消耗过多的性能;
2、 具备可用性;
3、 适合高并发场景;

最终一致性分布式事务解决方案的缺点如下: