CAP定理是用来提醒设计师在设计联网的共享数据系统时须要做出的权衡。CAP理论影响了不少分布式数据系统的设计。这几年来,CAP一直被普遍的误解为是用于对数据库进行分类的工具。也流传着许多关于CAP的错误的信息。不少关于CAP博客的观点极有多是错误的。面试
你须要进一步的了解CAP从而去分辨出关于CAP的错误的信息。数据库
CAP定理适用于存储状态的分布式系统。在2000年的PODC上,Eric Brewer推测在任何联网的数据共享系统中,一致性、可用性和分区容忍性之间本质上存在折中。在2002年,MIT的Seth Gilbert和Nancy Lynch发表了对Eric Brewer推论的证实。这个理论说明网络数据共享系统只能确保或是强有力的支持一下三个属性中的两个:服务器
ACID中的C和A与CAP定理中的C和A是不同的概念。微信
CAP定理将系统划分为三类:网络
一般用文斯图或是一个三角形来可视化CAP定理。各类各样的系统落入这三个圆圈相交的类型。分布式
文斯图或是三角形图对CAP的描述是错误的而且具备误导性。正确的理解是当须要进行网络分区时,设计师须要从可用性和线性一致性二选一。在任何一个联网的数据共享系统中,分区容忍性都是必须的。网络分区和消息的丢失是常态,必须合理的解决这个问题。简单来讲,网络分区迫使设计师必须从强一致性和强可用性直接二选一。选择一致性就意味着没法随时响应客户的查询,由于系统没法保证返回最近一次的写入结果,从而牺牲了可用性。网络分区会强制一些正常运行的节点拒绝响应客户端的请求,由于这些节点当前没法保证数据的一致性。工具
而与此相反,选择可用性意味着随时可以响应客户的请求,可是系统没法保证数据的一致性,好比最近的一次写入。高可用性的系统会尽量的提供最佳答案。spa
在正常的操做中(无网络分区的场景),CAP理论不会对可用性或一致性施加限制。设计
CAP定理负责引出关于分布式共享系统中各类折中的理论。它对于咱们加深对共享系统的理解起着重要的做用。然而,CAP的描述过于简单并具备误导性,Brewer 认可CAP理论简化了在网络分区中可用的选项。系统的设计者能够有多种方法从网络分区中恢复数据。每一个系统都应当尽力实现“基于特定应用最大程度的结合可用性和一致性”。教程
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注个人微信公众号!将会不按期的发放福利哦~