CAP定理20年回首:时代变了吗?

前言

10年前的今天,Eric Brewer 博士发表CAP Twelve Years Later—How the 'Rules' Have Changed,原文上万字,翻译并摘要、附注如下:

CAP Twelve Years Later 摘要

CAP理论(CAP Theorem)断言任何基于分布式数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但是通过显式处理分区情形,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。

Eric Brewer是 UC,Berkeley 的计算机科学教授,联系方式:brewer@cs.berkeley.edu

22年前,Eric Brewer在Principles of Distributed Computing大会上发表了CAP理论。2012年,作者在Computer杂志发表了回顾。

作者认为是三选二公式有误导性,CAP把三者的相互关系过分简单化了,强调没有必要为很小的概率去牺牲A和C。对分布式系统来说分区容忍性(P)是基本要求,但可用性和一致性在系统正常工作期间是好搭档,并非是矛盾。

引入 CAP 理论的十几年里,架构师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL 运动也将 CAP 理论当作对抗传统关系型数据库的依据。

译注:NoSQL实践中广为人知的应该就是HBase和Cassandra了。

HBase是CAP中的CP系统,即HBase是强一致性的。(在默认不开启Region replica的情况下)

  • HBase之所以是CP系统,和底层HDFS无关。它是CP系统,是因为每个Region同时只有一台RegionServer为它服务,对一个Region所有的操作请求,都由这一台Region server来响应,自然是强一致性的,跟单机的JVM差不多。
  • 在这台RegionServer 挂掉的时候,它管理的Region会failover到其他Region Server时,需要根据WAL-log来redo,进行redo的Region这时候是Unavailable(不可用)的,Region需要分钟级恢复来提供服务,所以HBase降低了可用性,提高了一致性。

Cassandra拥有分散式架构:任何节点都能执行任何操作,它提供了CAP原理中的AP(可用性和分区可容忍性)。

此外,MongoDB也是CP阵营的一员。

ACID(原子性、一致性、隔离性、持久性。)和 BASE 代表了两种截然相反的设计哲学,分区一致性 - 可用性分布图谱的两极。ACID 注重一致性,是数据库的传统设计思路,也有很多优点。

中文博大精深,此处英文也有异曲同工之妙💫。

ACIDBASE除了设计哲学上是大路朝天各走一边,而且在英文原意上也是冤家路窄,前者是“酸”,后者是“碱”。

出现较晚的 BASE 硬凑的感觉更明显,它是“Basically Available, Soft state, Eventually consistent(基本可用、软状态、最终一致性)”的首字母缩写。其中的软状态最终一致性这两种技巧擅于对付存在分区的场合,并因此提高了可用性。

当然,从数学逻辑的层面上讲,只有强一致性不一致。最终一致性等于没有一致性,或者不保证强一致,属于一致性模型的范畴。BASE的目的是弥合分区场合下A和C之间的裂痕——虽然墙体已然出现了缝隙,但表面上仍然是粉饰的平平整整。

综上,ACID在一致性的路上一往无前,BASE则试图对可用性进行改良。CAP是帽子,BASE更像是帽檐上的挂穗🎓。

CAP 与 ACID 的关系更复杂一些,也因此引起更多误解。其中一个原因是 ACID 的 C 和 A 字母所代表的概念不同于 CAP 的 C 和 A。

译注:

记得我们在学习ACID的概念时,总是会讲银行汇取款的故事来讲原子操作至关重要,所以金融系统几乎完全使用 ACID 数据库。在金钱方面,肯定有一方无法容忍不一致的发生。

总的来说,OLTP搭ACID,OLAP搭BASE已经尽善尽美了,然而,新的体系结构HTAP还是出现了,混合事务分析处理野心勃勃地要打破事务处理和分析之间的“墙”🔨————结合前面的分析来说,理论上是做不到的,只能在API层面(对用户来说透明)进行融合,底层则是缝合怪。

CAP 理论的经典解释,是忽略网络延迟的,但在实际中延迟和分区紧密相关。网络阻塞时,依靠多次尝试通信的方法来达到一致性,比如 Paxos 算法或者两阶段事务提交,但这仅是拖延了决策的时间,系统最终要做一个决定。无限期地尝试下去,本身就是选择一致性牺牲可用性的表现。

CAP 理论经常在不同方面被人误解,对于可用性和一致性的作用范围的误解尤为严重,如果用户根本获取不到服务,那么其实谈不上 C 和 A 之间做取舍。

译注:

所谓“存地失人,人地皆失;存人失地,人地皆得”。

实践中,大部分团体认为(位于单一地点的)数据中心内部是没有分区的,因此在单一数据中心之内可以选择 CA;CAP 理论出现之前,系统都默认这样的设计思路,包括传统数据库在内。然而就算可能性极低,单数据中心完全有可能出现分区的情况,一旦出现就会动摇以 CA 为取向的设计基础。最后,考虑到跨区域时出现的高延迟,在数据一致性上让步来换取更好性能的做法相对比较常见。

当代 CAP 实践应将目标定为针对具体的应用,在合理范围内最大化数据一致性和可用性的“合力”。这样的思路延伸为如何规划分区期间的操作和分区之后的恢复,从而启发设计师加深对 CAP 的认识,突破过去由于 CAP 理论的表述而产生的思维局限。

后语

CAP并不是牺牲三要素其一的挡箭牌,而是启发设计者就C&A进行更加高效合理的架构规约,没有万能的架构,只有最合适的场景。


后面我会另文探讨一下HTAP产品以及新生的大数据软件是真的结束了这场纷争🥂,亦或是新瓶装旧酒🍷?

欢迎访问我的博客小站~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容