分布式是提供服务的各个节点分布在不同机器上,相互之间通过网络交互。不能因为有一点网络问题就导致整个系统无法提供服务,网络因素成为了分布式事务的考量标准之一。因此,分布式事务需要进一步的理论支持 ,接下来,我们先来学习一下分布式系统的CAP理论。

理解CAP

CAP是Consistency、Availability、Partition tolerance三个词语的缩写,分别表示一致性、可用性和分区容忍性。

C - Consistency

分布式系统一致性的特点:

1、由于存在数据同步的过程,写操作的响应会有一定的延迟。
2、未来保证数据一致性会对资源暂时锁定,待数据同步完成释放锁定资源。
3、如果请求数据同步失败的结点则会返回错误信息,一定不会返回旧数据。

A - Availability

可用性是指任何事务操作都可以得到响应结果,且不会出现响应超时或响应错误。

追求可用性将导致不满足一致性

P - Partition tolerance

通常分布式系统的各个结点部署在不同的子网,这就是网络分区,不可避免的出现由于网络问题而导致结点之间通信失败,此时仍可以对外提供服务,这叫分区容忍性。

如何实现分区容忍性?
1、尽量使用异步操作取代同步操作,例如使用异步方式将数据从主数据库同步到从数据,这样结点之间实现松耦合。
2、添加从数据库结点,其中一个从结点挂掉其他从结点提供服务

分区容忍性是分布式系统具备的基本能力。

CAP组合方式

在所有分布式事务场景中不会同时具备CAP三个特性,C和A是不能共存的。

1)AP:

放弃一致性,追求分区容忍性和可用性,这是很多分布式系统设计时的选择。BASE理论就是根据AP理论拓展而来。

2)CP:

放弃可用性,追求分区容忍性和一致性,zookeeper就是追求强一致。

3)CA:

放弃分区容忍性,即不进行分区,不考虑网络不通或结点宕机的问题,那么系统将不再是一个分布式系统。关系型数据库就能满足CA。