文章字数:576,阅读全文大约需要2分钟
CAP
原则是只一个分布式系统中,一致性Consistency
、可用性Availability
、分区容错性Partition tolerance
,三个要素只能同时实现两点,不可能三者兼顾。
具体解释
- 一致性
c
: 在分布式系统中,所有的数据备份,在同一时刻是否相同的值。(节点一收到变更数据的请求之后马上通知其他节点,保证数据的统一。) - 可用性
A
: 在集群中一部分节点故障后,集群整体是否还能相应客户端的读写请求。(只要有数据请求,就必须给回应。即使部分节点故障) - 分区容错性
P
: 大多数分布式系统分布在多个子网中,每个子网就是一个区。区之间通信可能失败,应对这种情况的设计就是保证分区容错性。(p
一般是无法避免的,所以剩下的c
和a
无法同时做到)
Consistency
和Availability
的矛盾
因为通信失败的情况常有可能发生,所以分区容错性很重要。根据CAP
原则,Consistency
和Availability
就只能选择其一了。
保证数据一致性则需要数据完全同步之后再开放读写,如果此时通信有问有,就无法保证可用性了,因为有部分节点必然被锁定。或者通信有问题,节点没有获取到最新的数据变更请求,从而达不到数据一致性。