CAP 是分布式数据库中的重要理论之一。为了更好的理解分布式数据库,咱们须要对 CAP 理论有个简单的理解。数据库
CAP 证实了,对于一个分布式数据库系统,存在这样三个指标:服务器
原子
的,当写操做完成后,全部后续的读取操做获取获得的都必须是新值),而你只能在这三个指标中同时照顾好两个。网络
根据 CAP 理论,当你在设计/使用分布式数据库时,你须要作出选择:在 Consistent, Available, Partition tolerant 中放弃什么。架构
Partition tolerant 是个架构选择(数据库是不是分布式),因此通常而言,你须要选择是更在乎 Consistent 仍是 Available。分布式
理解 CAP 理论对于作出正确的选择是相当重要的。设计
为了更好地理解 CAP,这里以现实生活中的例子作个类比code
假设这个世界是一个巨大的分布式系统,关于暴走漫画的知识是系统中存储的数据,暴漫的粉丝是这个分布式系统中的一个个节点。事件
假设今天你刚刚看了最新一期暴走大事件(第三季43集),而今天的日期是 2015年4月18日
,忽然有一伙儿神秘人闯进你家门,把你抓到了深山里,让你参与建造方舟,而且与世隔绝。it
时光如梭,一转眼 5 年过去了,到了 2020年1月2日
。方舟建成,你被送回了家乡。在回家的路上,你遇到一个路人,问了你一个问题:io
暴走大事件最新一期是第几季第几集了?
这时候,你须要作一个选择:
你能够回答你知道的最新一期(第三季43集,5年前的最新一期)。若是你选择回答,那你就是 Available
的。或者你能够选择不回答,由于你已经与世隔绝了 5 年,你知道你的答案极可能和世界上其他暴漫粉丝的答案不一致(Consistent
),这样这个路人得不到答案,可是整个世界是 Consistent
的。
即:你能够选择确保路人能获得答案(Available),或者确保世界的一致性(Consistent)。