如何理解 CAP 定理

背景

CAP 定理也是近些年最热的定理之一了,谈分布式必扯 CAP 。但是我觉得没有理解透彻,于是就想写一篇 blog 来记录下自己的理解。有新的理解会更新内容。

理解

读了下这篇文献的第一部分。

The CAP theorem [Bre12] says that you can only have two of the three desirable properties of:

  • C: Consistency, which we can think of as serializability for this discussion;
  • A: 100% availability, for both reads and updates;
  • P: tolerance to network partitions.

This leads to three kinds of systems: CA, CP and AP, based on what letter you leave out.

说下我的理解,以三台机器( x ,y ,z )组成的网络为例:

这里 C 是最好理解的。A 和 P 的概念比较模糊,容易混淆。

下面说三种组合:

如果 x ,y 和 z 之间网络断了,

CA 是 paxos/raft ,是大多数协议,牺牲了 P ,少数派节点完全沉默。CP 是只读系统,如果什么系统是只读的,之间有没有网络其实也无所谓,网络分区容忍无限大。AP 适合只追加不更新的系统,只 insert 不 delete 和 update,最后把结果合并到一起,也能用。

Comments

comments powered by Disqus