https://www.cnblogs.com/mingorun/p/11025538.html
https://www.cnblogs.com/duanxz/p/5229352.html
一.CAP理论
1.介绍
CAP理论是分布式系统的理论基础。CAP理论表明:最多满足其中两个特性,不能够同时满足这三个特性。
- C:一致性(Consistency)
- A:可用性(Available)
-
P:分区容错性(Partition tolerance)
深度截图_选择区域_20201225140735.png
2.理解
- 分区容错性(P):指的是分布式系统中某个节点或者网络出现故障的时候,整个系统仍能够对外提供满足一致性和可用性的服务。也就是说:部分故障不影响整体使用。
P不满足:表示出现部分故障,则整个系统不可用。相当于只有一个分区,也就没有后续的一致性和可用性了。 - 可用性(A):一直可以征程的做读写操作。不会出现系统不可用情况。
- 一致性(C):这里的一致性是指强一致性。表示:在分布式系统完成某写操作后,任何读操作都应该获取最新写入的值。相当于要求分布式系统中的各个节点时刻保持数据一致性(强一直性)
3.CAP如何取舍
- CA:优先保持一致性和可用性,放弃分区容错。这也意味着放弃系统的扩展性,系统不再是分布式的,有违设计的初衷。
- CP:优先保证一致性和分区容错性。在数据一致性要求比较高的场合(zk)是比较常见的做法,一旦发生网络故障或者消息丢失,就会出现牺牲用户体验,等恢复之后用户才能逐渐访问。
- AP:优先保证可用性和分区容错性,放弃一致性。NoSQL中的Cassandra就是这种架构。跟CP一样,放弃一致性不是说一致性就不保证了,而是逐渐变的一致。
4.副本一致性
- 强一致性(strong consistency):任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据。强一致性是程度最高的一致性要求,也是实践中最难以实现的一致性。
- 单调一致性(monotonic consistency):任何时刻任何用户一旦读到某个数据再某次更新后的值,这个用户不会再读到比这个值更旧的值。
单调一致性是弱于强一致性却非常实用的一种一致性级别。 - 会话一致性(session consistency):任何用户在某一次会话内一旦读到某个数据在某次更新后的值,这个用户再这次会话过程中,就不会读到比这个值更旧的值。会话一致性:只保证单个用户单次会话内的单调一致性。
- 最终一致性(eventual consistency):最终一致性要求一旦更新成功,各个副本数据最终将会达到一致状态,但达到完全一致状态所需要的时间不能保障。
对于最终一致性系统而言,一个用户只要始终读取某一个副本数据,则可以实现类似单调一致性的效果,但一旦用户更换数据副本,则无法保障任何一致性。 - 弱一致性(week consistency):一旦某个更新成功,用户无法在一个确定时间内读到这次更新的值,且即使在某个副本上读到更新的值,也不能保证在其他富恩尚可以读到新的值。
二.BASE理论
1.介绍
- BA:基本可用(Basically Available)
- S:软状态(Soft state)
- E:最终一致性(Eventually consistent)
BASE是对CAP中一致性和可用性权衡的结果,是基于CAP定理逐渐演化而来。其核心思想:即使无法做到强一致性,但每个应用都可以结合自身业务特点,采用适当的方式来达到最终一致性。
2.解释
- 基本可用
基本可用是指分布式系统在出现不可预知的故障时,运行损失部分可用性。但绝不等价于系统不可用。比如:
- 响应时间上的损失:正常一次响应0.5s,但由于异常,查询结果的响应时间增加到2s
- 功能上的损失:正常情况下,顺利完成一笔购物订单。但是在大促期间,部分消费者可能会被引导在一个降级页面。
- 弱状态:也称为软状态,和硬状态相对。是指允许系统中的数据存在中间状态,并认为该中间状态不会影响整体可用性。即允许系统在不同节点的数据副本之间进行同步存在延迟。
- 最终一致性:最终一致性强带哦的是系统中所有的数据副本,在经过一段时间的 同步后,最终能达到一个一致的状态。因此,最终一致性的本质是需要保证最终数据达到一致,而不需要实时保证系统数据的强一致性。
总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统事物的ACID特性是相反的,它完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。
网友评论