标签:
在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer‘s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
我觉得,理解CAP可以从两个阶段去考虑。
比如,一个数据在两台机器上,然后这两台机器之间无法通信了,即我们首先选择了P;然后,此时,我认为已经不可能做到C了。因为这两台机器之间已经无法通信,那就无法保证两台机器之间的数据一致性了。也就是说,要在P的情况下,做到C是不可能的。【这点相信有很多人会有意见,欢迎大家和我交流】
这个会复杂很多。由于分布式系统,我们无法不选择P,因为由于网络的不可靠性,必定会导致两个机器节点之间无法进行网络通信,从而导致数据无法同步。这样的现实导致我们必须选择P。然后,在这个前提下,我们要么选择A,要么选择C。下面分析一下原因:
答案就是NRW算法。
假设总共有五个节点(N),我们只要保证写入数据的节点数(W)+ 读取数据的节点数(R)大于总节点数。即保证W+R>N,那就能保证对客户端而言,总是能读取到最新的数据。比如写入节点数为3,那读取节点数也只要为3,那就能保证总是能读取到最新的数据。有了这样的数据公式的保证。我们就可以根据情况灵活选择W,R了。
因为我们不需要保证5台机器全部都写入成功,只需要保证3台写入成功即可。这就意味着,我们允许5台机器中的2台出现问题,也就是提高了系统的可用性。
标签:
原文地址:http://www.cnblogs.com/netfocus/p/4385347.html