C(consistency): 一致性
A(availability): 可用性
P(partion tolerance): 分区容错
CAP原理即在分布式系统中,这三个指标不能同时满足。
1.partion tolerance
大多数分布式系统都分布在多个网络,每个子网就叫一个区,分区容错的意思是,区间通信可能存在失败,比如,一台服务器在中国,一台服务器在美国,他们之间可能无法通信。
上图中,S1和S2是跨区部署的两台服务器,S1向S2发送一条消息,S2可能收不到。
一般来说,分区通错是无法避免的,因此可以认为CAP中的P总是成立,CAP定理告诉我们,剩下的C和A无法同时满足。
2.consistency
一致性的意思是写操作之后的读操作,必须返回该值,
3.availability
可用性的意思是只要收到用的请求,服务器就必须作出应答。
4.可用性和一致性是相互冲突的,
上图中,s1更新缓存中的某个值时,此时,s2读该值的时候,
- 如果为了满足可用性,则读到的是更新之前的值,不满足一致性
- 如果为了满足一致性,则必须等到s1更新完成之后再去读,不满足可用性