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