CAP定理 (又称CAP原则) 是指一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分布式系统分布在多个子网络,每个子网络就叫做一个 分区(partition)。分区出错(出现故障)的意思是,分区之间通信可能会出现故障,那么分区之间就可能无法通信。
在分布式系统中,分区通信是基础条件,更是必要条件。如果分布式系统中,区间通信出现故障,那消息传递是不可达的。所以P是分布式系统中,P是必选的,更据CAP定理,那么只能从C和A中选一个,就出现CP和AP的架构。
原因还是因为 分区容错性 ,如果出现网络故障将会出现以下两种情况:
①如果追求 一致性(Consistency) ,分区会等待、追求所有节点的最新数据,分布式系统将不可用的;
②如果追求 可用性(Availability),分区就无法去追求所有节点的最新数据,也就无法满足一致性;
所以一般只有CP和AP两种选型。
BASE 基本可用(Basically Available)、软状态(Soft state)、最终一致(Eventually consistent)三个短语的缩写。BASE 理论是对 CAP定理 中 一致性 和 可用性 权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于 CAP定理 逐步演化而来的,其核心思想是即使无法做到 强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到 最终一致性(Eventual consistency)。
在分布式系统分区出现故障时,允许损失部分可用性来用于权衡一致性,但系统会处于基本可用的状态;
① 牺牲响应延时:本来一次请求-响应的时间是0.5ms,为了到达一致性,可延时到3s,这样既达到了基本可用,也满足了一致性;
② 牺牲可用功能:本来一次正常的查找钱余额查找应该显示正确的余额,牺牲可用功能后,将用于请求引导到正在处理界面。
软状态 是指运行系统中的数据允许存在 中间状态 ,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
最终一致性 强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。