分布式事务基础理论
- 通过前面的学习,我们了解到了分布式事务的基础概念。与本地事务不同的是,分布式系统之所以叫分布式,是因为提供服务的各个节点分布在不同机器上,相互之间通过网络交互。不能因为有一点网络问题就导致整个系统无法提供服务,网络因素成为了分布式事务的考量标准之一。因此,分布式事务需要更进一步的理论支持,接下来,我们先来学习一下分布式事务的CAP理论。
CAP理论
理解CAP
- CAP是 Consistency,Availability,Partition tolerance三个词语的缩写,分别为表示一致性,可用性,分区容错性。
- 下边我们分别来理解:
- 为了方便理解CAP理论的理解,我们结合电商系统中的一些业务场景来理解CAP。
-
如下图,是商品信息管理的执行流程:
- 整体执行流程如下:
- 1.商品服务请求主数据库写入商品信息(添加商品,修改商品,删除商品)。
- 2.主数据库向商品服务响应写入成功。
- 3.商品服务请求从数据库读取商品信息。
C-Consistency:
- 一致性是指写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上,从任意结点读取到的数据都是最新的状态。
- 上图中,商品信息的读写要满足一致性就是要实现如下目标:
- 1.商品服务写入主数据库成功,则向从数据库查询新数据也成功。
- 2.商品服务写入主数据失败,则向从数据库查询新数据也失败。
如何实现一致性?
- 1.写入主数据库后要将数据同步到从数据库。
- 2.写入主数据库后,在向从数据库同步期间要将从数据库锁定,待同步完成后再释放锁,以免在新数据写入成功后,向从数据库查询到旧的数据。
分布式系统一致性的特点:
- 1.由于存在数据同步的过程,写操作的响应会有一定延迟。
- 2.为了保证数据一致性对资源暂时锁定,待数据同步完成释放锁定资源。
A-Availability
- 可用性是指任何事务操作都可以得到响应结果,且不会出现响应超时或响应错误。
- 上图中,商品信息读取满足可用性就是要实现如下目标:
- 1.从数据库收到数据查询的请求则立即能够响应数据查询结果。
- 2.从数据库不允许出现响应超时或响应错误。
如何实现可用性?
- 1.写入主数据库后要将数据同步到从数据库。
- 1.由于要保证从数据库的可用性,不可将从数据库的资源进行锁定。
- 3.即时数据还没有同步过来,从数据库也要返回要查询的数据,哪怕是旧数据,如果连旧数据也没有则可以按照约定返回一个默认信息,但不能返回错误或响应超时。
分布式系统可用性的特点:
- 1.所有请求都有响应,且不会出现响应超时或响应错误。
P-Partition tolerance:
- 通常分布式系统的各各结点部署在不同的子网,这就是网络分区,不可避免的会出现由于网络问题而导致节点之间通信失败,此时仍可对外提供服务,这叫分区容错性。
- 上图中,商品信息读写满足分区容错性就是要实现如下目标:
- 1.主数据库向从数据库同步数据失败不影响读写操作。
- 2.其一个节点挂掉不影响另一个结点对外提供服务。
如何实现分区容错性?
- 1.尽量使用异步取代同步操作,例如使用异步方式将数据从主数据库同步到从数据库,这样结点之间能有效的实现耦合。
- 2.添加从数据库结点,其中一个结点挂掉其他从结点提供服务。
分布式分区容错性的特点:
- 1.分区容错性是分布式系统具备的基本能力。