CAP:高可用架构的另一基石

| 12 Comments

在上周六的 QClub 上,BASE 成为了一个热点话题,其实除了这个 BASE 之外,还有个 CAP 理论也是值得关注一下的。这个概念也来自 Inktomi 公司(被雅虎收购后已是明日黄花)的 Eric A. Brewer ,应该说他 10 年前的那篇 Lessons from Internet Services: ACID vs. BASE 是互联网技术最为重要的一篇文章了。

C: Consistency 一致性 
A: Availability 可用性
P: Tolerance of network Partition 分区容忍性(有翻译为耐受性的,个人觉得不妥)

CAP.png

熊掌与鱼不可兼得,三个目标不能同时满足。如果对"一致性"要求高,且必需要做到"分区",那么就要牺牲可用性;而对大型网站,可用性与分区容忍性优先级要高于数据一致性,一般会尽量朝着 A、P 的方向设计,然后通过其它手段保证对于一致性的商务需求。

CAP 不是什么高深的东西,应该说 CAP 只是一个经验理论,切不可钻牛角尖,号称自己做的东西能打破 CAP 理论,那只是无意义的事情罢了。

如果知道 ACID(酸) 、BASE(碱) 在词典中的含义,那么这个 CAP 的辞典含义也很有趣。

--EOF--

最后推荐阅读一下这篇:可伸缩性原则

12 Comments

“被雅虎收购后已是明日黄花”
呵呵,每次提起Inktomi ,你都不忘记加这么一句啊

让大家知道我这句成语用的很对

昨日黄花(错) vs. 明日黄花(对)

我还总给同事们解释说 P: 是 Performance.
原来有不同的意思.

@木匠

好多人用英文-中文之间的壁垒提升价值

你这个刚好反过来 :)

"反过来", 我猜你的意思是, 通过中文学了的知识,来'蒙骗'洋人,提高自己的价值.

这篇是通过你的链接,读了原文,好多篇,还看了两边录像.
http://www.infoq.com/articles/ebay-scalability-best-practices

>, 这篇是我们老板推荐给我的.
http://www.infoq.com/articles/scalability-principles
我就记住了一句: "On a final note, while it might be true that faster hardware can save your ass, don't count on it!". 还知道了scale out 和 scale up的区别.

小道消息, 我们公司要被亚马逊收购了, 简历更好看了.

读了原文,好多篇. 竟然记错了P: partition-tolerance, 实在是"露怯".

不过: partition-tolerance -> scale out -> better throughput performance, 这样顺竿子解释,还将就. :)

@木匠,

别误会

合并到 Amazon,估计有更多好的技术可以接触了,很羡慕啊

同时兼顾确实不易.

“有翻译为耐受性的,个人觉得不妥”
请问不妥在哪里?是觉得不应该有“to a degree”的意思吗?
如果写成“Tolerance to network Partitions”,那是非常符合字典里tolerance对应医学术语“耐受性”的义项。
如果写成“Tolerance of network Partition”,就是一般的容忍、忍耐了。
我比较偏向于最初是借用了一个医学术语。如果确实“容忍性”比较合适,我十分乐意改掉InfoQ上的翻译。

@HiugongGwok

容忍性我觉得更偏向 IT 一些,比如网络容忍性之类的说法

只是个人看法。

简短而信息丰富的文章!
Lessons from Internet Services: ACID vs. BASE 的链接失效了