下面的总结参考自阮一峰的blog
http://www.ruanyifeng.com/blog/2018/07/cap.html
1,什么是CAP,
- Consistency 一致性
- Availability 可用性
- Partition tolerance 分区容错
CAP定理:分布式系统不能同时保证,一致性,可用性,分区容错
分区容错:
大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。
一致性:不同的分区,数据保持一致性,例如:两台服务器,无论访问那台服务器,总能得到相同的数据
可用性:只要收到用户请求,就必须返回结果
CAP定理:三个特性不可能同时满足
分区容错,分区直接通信时,必须要进行容错,这个在分布式系统中是必须,否则,网络问题,可能导致系统整体崩溃。
因此一致性,和可用性,只能选择一个特性进行保留。
举例如下:
服务器:S1,S2,其中有字段F=V1,
用户连接S1设置F=V1,
如果要保证一致性,则连接S1时,要先锁定S2,设置F=V2,然后释放锁,这个期间肯定会导致S2服务器不可用。
如果要保证可用性,则S2可能返回V1,
因此C和A不能同时保证
在一致性要求不高的情况下,可以优先保证可用性,例如,web页面缓存,用户在升级时,如果取到了,旧的页面,但是不影响使用,后续刷新页面,得到新的页面。
在获取系统配置时,如果获取到旧的配置,可能导致系统失败,这时,一致性就比可用性要高