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

在上周六的 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 thoughts on “CAP:高可用架构的另一基石

  1. 木匠

    “反过来”, 我猜你的意思是, 通过中文学了的知识,来’蒙骗’洋人,提高自己的价值.
    这篇是通过你的链接,读了原文,好多篇,还看了两边录像.
    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的区别.
    小道消息, 我们公司要被亚马逊收购了, 简历更好看了.

    Reply
  2. 木匠

    读了原文,好多篇. 竟然记错了P: partition-tolerance, 实在是”露怯”.
    不过: partition-tolerance -> scale out -> better throughput performance, 这样顺竿子解释,还将就. :)

    Reply
  3. HiugongGwok

    “有翻译为耐受性的,个人觉得不妥”

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

    Reply
  4. Arrix

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

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *