CAP定理及BASE理论
CAP定理及BASE理论
C:Consistency(一致性)
一致性指写操作之后进行读操作,无论读哪个节点都要返回刚才写的值。即多个节点满足强一致性
A:Availability(可用性)
可用性指集群中一部分节点故障后,集群整体是否还能响应客户端的请求。即是否具有高可用性
P:Partition Tolerance(分区容错性)
分区容错性:多个节点区间通信可能会失败,失败就意味着出现了分区情况,当网络出现分区后,系统依然能继续提供服务。
满足CA则不能满足P:如果要满足CA,那肯定要使用集群(A可用性),同时要满足一次写操作多个节点都要成功(C一致性),那么必然会使用分布式事务,写操作没完成之前必须要锁住其他节点。期间这些节点不可以读写。假如出现节点通信失败,事务就会阻塞,用户操作失败。那么 P-分区容错性不满足
满足CP则不能满足A:既要满足C又要满足P,那么只能使用单节点。如果这个节点宕机则节点上数据无法访问,不能响应客户端请求那么A-可用性不满足。
满足AP则不能满足C:满足A必须使用集群,满足P则可能出现分区情况,出现数据不一致,那么必然不会满足C(一致性)
BASE理论
BASE理论是对CAP中的一致性及可用性进行一个权衡的结果,其核心思想是:我们无法做到强一致性,那么我们可以通过牺牲强一致性获得可用性, 一般应用于服务化系统的应用层或者大数据处理系统中,采用适当的方式 达到最终一致性。
BA:Basically Available(基本可用)
基本可用:是对A(可用性)的一个妥协,比如秒杀场景下,或者雪崩的业务场景下,可以降级处理,使核心功能可用,而不是所有的功能可用。或者延迟完成,比如通过削峰限流,来延迟响应
S:Soft state(软状态)
指允许部分节点数据存在一定的延时,这个延时不影响可用性。例如一次写操作只更新了一个结点就返回成功。那么其他节点和这个节点的数据时不一致的。此时的数据状态就是软状态。该状态不能一直存在,必须要有个期限,系统保证在没有后续更新的前提下,在这个期限后,系统最终返回上一次更新操作的值,从而达到数据的最终一致性,这个容忍期限(不一致窗口的时间)取决于通信延迟,系统负载,数据复制方案设计,复制副本个数等,DNS是一个典型的最终一致性系统
E:Eventually consistent(最终一致性)
指最终数据要实现一致性,例如:软状态的数据最终我们要通过一些手段将数据同步到其他数据节点上。例如使用mq。