终于有人把“分布式事务”说清楚了

一个复杂的系统往往都是从一个小而简的系统发展衍化而来,为了满足日益增长的业务需求,不断的增加系统的复杂度,从单体架构逐步发展为分布式架构,而分布式系统架构的设计主要关注:高性能,高可用,高拓展 。
 

终于有人把“分布式事务”说清楚了

文章插图
 
 
图片来自 Pexels
分布式事务
高可用是指系统无中断的执行功能的能力,代表了系统的可用程度,是进行系统设计时必须要遵守的准则之一 。
而高可用的实现方案,无外乎就是冗余,就存储的高可用而言,问题不在于如何进行数据备份,而在于如何规避数据不一致对业务造成的影响 。
对于分布式系统而言,要保证分布式系统中的数据一致性就需要一种方案,可以保证数据在子系统中始终保持一致,避免业务出现问题 。
这种实现方案就叫做分布式事务,要么一起成功,要么一起失败,必须是一个整体性的事务 。
理论基础
在讲解具体方案之前,有必要了解一下分布式中数据设计需要遵循的理论基础,CAP 理论和 BASE 理论,为后面的实践铺平道路 。
CAP 理论
CAP,Consistency Availability Partition tolerance 的简写:
  • Consistency:一致性,对某个客户端来说,读操作能够返回最新的写操作结果 。
  • Availability:可用性,非故障节点在合理的时间内返回合理的响应 。
  • Partition tolerance:分区容错性,当出现网络分区后,系统能够继续提供服务,你知道什么是网络分区吗?
因为分布式系统中系统肯定部署在多台机器上,无法保证网络做到 100% 的可靠,所以网络分区一定存在,即 P 一定存在 。
在出现网络分区后,就出现了可用性和一致性的问题,我们必须要在这两者之间进行取舍,因此就有了两种架构:
  • CP 架构
  • AP 架构
①CP 架构
 
终于有人把“分布式事务”说清楚了

文章插图
 
 
当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性:
  • 当没有出网络分区时,系统 A 与系统 B 的数据一致,X=1 。
  • 将系统 A 的 X 修改为 2,X=2 。
  • 当出现网络分区后,系统 A 与系统 B 之间的数据同步数据失败,系统 B 的 X=1 。
  • 当客户端请求系统 B 时,为了保证一致性,此时系统 B 应拒绝服务请求,返回错误码或错误信息 。
上面这种方式就违背了可用性的要求,只满足一致性和分区容错,即 CP,CAP 理论是忽略网络延迟,从系统 A 同步数据到系统 B 的网络延迟是忽略的 。
CP 架构保证了客户端在获取数据时一定是最近的写操作,或者获取到异常信息,绝不会出现数据不一致的情况 。
②AP 架构
 
终于有人把“分布式事务”说清楚了

文章插图
 
 
当网络分区出现后,为了保证可用性,系统 B 可以返回旧值,保证系统的可用性:
  • 当没有出网络分区时,系统 A 与系统 B 的数据一致,X=1 。
  • 将系统 A 的 X 修改为 2,X=2 。
  • 当出现网络分区后,系统 A 与系统 B 之间的数据同步数据失败,系统 B 的 X=1 。
  • 当客户端请求系统 B 时,为了保证可用性,此时系统 B 应返回旧值,X=1 。
上面这种方式就违背了一致性的要求,只满足可用性和分区容错,即 AP,AP 架构保证了客户端在获取数据时无论返回的是最新值还是旧值,系统一定是可用的 。
CAP 理论关注粒度是数据,而不是整体系统设计的策略 。
BASE 理论
BASE 理论指的是基本可用 Basically Available,软状态 Soft State,最终一致性 Eventual Consistency,核心思想是即便无法做到强一致性,但应该采用适合的方式保证最终一致性 。
BASE,Basically Available Soft State Eventual Consistency 的简写:
  • BA:Basically Available 基本可用,分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用 。
  • S:Soft State 软状态,允许系统存在中间状态,而该中间状态不会影响系统整体可用性 。
  • E:Consistency 最终一致性,系统中的所有数据副本经过一定时间后,最终能够达到一致的状态 。
  • BASE 理论本质上是对 CAP 理论的延伸,是对 CAP 中 AP 方案的一个补充 。
分布式事务协议
X/Open XA 协议
XA 是一个分布式事务协议,由 Tuxedo 提出 。XA 规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口 。


推荐阅读