CAP理论
CAP是Consistency,Availablity和partition-tolerance缩写,分别是:
一致性(Consistency):数据一致更新,所有数据变动都是同步的。每次读操作都能返回最新数据
Availability(可用性):好的响应性能,任何一个没有发生故障的节点,会在合理的时间内返回一个正常的结果。
Partition tolerance(分区容忍性):可靠性,当节点间出现网络分区,照样可以提供服务。
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
单机肯定不存在分区的问题,所以只能保证CA。对于分布式系统,P肯定是占的,当出现节点间往来中断的情况,如果选择一致性CP,意味着在网络恢复,数据在节点间同步完成之前是不可用的;如果选择可用性AP意味着我们放弃了各个节点直接的同步;在实际操作的时候一般的服务都要保证服务的可用性,所以一般会选择AP,然后在网络恢复后得到最终一致性。
根据CAP原理将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类:
CA--单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大
CP--满足一致性,分区容忍性的系统,通常性能不是特别高
AP--满足可用性,分区容忍性的系统,通常可能对一致性要求低一些
![5d12207b0a0e68375245d5ba797b705d.png](https://i-blog.csdnimg.cn/blog_migrate/b25856a116828245c598dd232b602418.jpeg)
BASE理论
base理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP理论的一致性就是强一致性),但应用可以采用合适的方式达到最终一致性(Eventual Consitency)。
BASE是指基本可用(Basically Available),软状态(Soft State),最终一致性(Eventual Consistency)
基本可用(Basically Available)
基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,既保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务,这既是损失部分可用性的体现。
软状态(Soft State)
软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。
最终一致性(Eventual Consistency)
最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。