分布式理论—-CAP理论与Base理论

CAP 理论

【1】CAP 理论指出对于一个分布式计算系统来说,不可能同时满足以下三点:

1)一致性:在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。【指强一致性】

2)可用性:每次请求都能获取到正确的响应,每一个操作总是能在确定的时间内返回,但是不保证获取的数据为最新数据。

3)分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

【2】一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

【3】在这三个基本需求中,最多只能同时满足其中的两项,P 是必须的,因此只能在 CP 和 AP 中选择,zookeeper 保证的是 CP,对比 spring cloud 系统中的注册中心 eureka实现的是 AP。【 与其说是三项中选两项,本质上是在C与A之间进行二选一

【4】分析高可用性与强一致性之间存在违背的地方:

1.先说说可用性:每次请求都能在限定的时间内获取到正确的响应。

2.再说强一致性:每次写入的时候,都会在leader(主节点)上先写入,然后同步给其他节点,在此阶段是不对外提供服务的。故而,follower(从节点)越多,其实不可控的时间也就越长。

3.所以说可用性在强一致性同步数据阶段得不到保障,这就是问题。

【5】故而市面上常说的CAP理论,其实是最终一致性,可用性,与分区容错性。如zookeeper ,说是CP架构:

1)Leader接收Client的写请求,广播给其他Follower节点,其他节点将消息加入待写队列,向Leader发送成功消息,过半的Follower同意后,Leader向所有节点发送提交消息,Follower会落实写请求。(并不满足全部节点都写入,只是保证大多数节点的写入。此时系统的各节点数据并不保证完全一致)

2)每一次写入的时候Leader(写入操作只能由Leader进行)都会有个ZXID,而从节点也会按照ZXID来进行顺序写入,从而最终达到与Leader的数据一致(顺序一致性)。

3)所以总结起来zookeeper保证的是线性写,顺序读。但是拿到的数据不保证一致。

BASE 理论

【1】BASE 是 Basically Available(基本可用)、Soft-state(软状态) 和 Eventually Consistent(最终一致性) 三个短语的缩写。

1)基本可用:在分布式系统出现故障,允许损失部分可用性(服务降级、页面降级)。

2)软状态:允许分布式系统出现中间状态。而且中间状态不影响系统的可用性。这里的中间状态是指不同的 data replication(数据备份节点)之间的数据更新可以出现延时的最终一致性。

3)最终一致性:data replications 经过一段时间达到一致性。

【2】BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是: 我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性

一致性的类型

Original: https://www.cnblogs.com/chafry/p/16804832.html
Author: 忧愁的chafry
Title: 分布式理论—-CAP理论与Base理论

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/711413/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球