CAP
CAP 曾被过誉为分布式系统的基础理论。在多节点读写中,C A P 三者不可得兼。
Consistency: Atomic + Consistency
一致性=传统意义上的原子性+持久性。
Availability
可用性。
即使部分节点故障,仍能对外提供响应。注意这里没有提到响应的延迟程度。
Partition Tolerance
分区容错性。
实际应用中这是对通信时限的要求。系统如果不能在一定时限内达成一致,则称发生了分区,此时需要就情况在 C A 间做出选择。
但这种区分度不是非常完善,因为你会下意识地以为 NoSQL 的设计者们放弃 C 是为了 A P,但事实上这并不绝对,也不充分。
CAP 的概念被分布式系统的设计者们滥用了。
PAC-ELC = P then AC else LC
这里的 L 是 latency 延迟程度。
当出现分区(P)时,系统需要在可用性(A)和一致性(C)之间做出权衡;
当运行正常(E)时,系统需要在延迟程度(L)和一致性(C)之间做出权衡。
这是 Abadi 在文章 Problems with CAP, and Yahoo’s little known NoSQL system 中谈到的内容,这个理论似乎更加解除你在听别人谈论 CAP 时遇到的困惑。
参考:
Julian Browne, Brewer’s CAP Theory 或者 译文
D. Abdi, Problems with CAP, andYahoo’s little known NoSQL system
网友评论