一篇文章搞清楚什么是分布式系统 分布式cap工作原理( 二 )



网络分区
为了满足分区容错,我们的系统必须在任何网络分区下都能正常工作 。
CAP定理的证明
现在我们已经理解了一致性、可用性和分区容错的概念,我们可以证明一个系统不能同时满足这三个属性 。
假设有一个系统同时满足这三个属性,我们首先要做的就是把这个系统划分成网络,如下图所示:

一篇文章搞清楚什么是分布式系统 分布式cap工作原理


网络分区
客户端向G1发送写请求,将V的值更新为v1 。由于系统可用,G1必须响应客户端的请求,但是由于网络被分区,G1无法将其数据复制到G2 。
一篇文章搞清楚什么是分布式系统 分布式cap工作原理


由于网络分区造成的不一致
然后,客户端向G2发送读取V的请求,再次因为系统可用,G2必须响应客户端的请求,又因为网络被分区,G2无法从G1更新V的值,所以G2向客户端返回旧值v0 。
一篇文章搞清楚什么是分布式系统 分布式cap工作原理


由于网络分区造成的不一致
客户端发起写请求将G1上的V值改为v1后,从G2读取的值仍然是v0,违背了一致性 。
总结我们假设存在一个满足一致性、可用性和分区容错的分布式系统,但是我们证明在某些情况下,系统表现出不一致的行为,所以证明不存在这样的系统 。
【一篇文章搞清楚什么是分布式系统 分布式cap工作原理】对于分布式系统,P是基本要求 。三个cap中,C和A只能根据系统要求来权衡,要尽一切努力提高p 。
,

推荐阅读