作用
分布式系统的最大难点,就是各个节点的状态如何同步。CAP定理正是解决这方面问题的基本定理,也是理解分布式系统的起点。
定义
分布式系统有三个指标:
Consistency
Availability
Partition tolerance
它们的首个字母分别是C,A,P
Consistency:即一致性。在分布式系统中,在一个节点写完后,在任意一个节点读数据,都能读到刚才写完的数据。
Avaliability:即可用性。意思是,只要收到客户端的请求,服务器(不管是哪个节点)必须给出回应,而不管回应是什么。
Partition tolerance:即分区容忍性。所谓分区容忍性,指的是网络发生分区时,还能继续提供服务(即容忍)。分区的含义举个例子,有S1、S2两台服务器,本来在同一个网络,但是现在它们之间网络连接断了,变成了两个网络,就出现了分区。
所谓指标就是希望能达到的目标,而CAP定理指的是这3个指标不能同时达到。
为什么成立
首先如果P达不到,意味着不能正常提供服务了,那就没有C、A可言,因此P肯定要达到。那CAP定理就演化成了,C和A不能同时达到。
那为什么C和A不能同时达到呢?举个例子,有服务器S1和S2,他们两个各自维护彼此一样的数据。现在用户往S1写数据,为了做到C,就必须让S2停止读写,等S1同步到S2后才能开放读写,而停止的操作,就出现S2不可用,这时A就不成立。反过来,如果A要成立,S2就要继续工作,就会导致用户取S2的数据时,不是刚才写的数据,就导致了C不成立。
最后
最后,可以重新理解一下CAP。之前我们的理解是,CAP不能同时存在,那现在可以再提炼为,P成立下,CA只能二选一。
参考链接
http://www.ruanyifeng.com/blog/2018/07/cap.html
https://www.zhihu.com/question/64778723