分布式理论基础

1.CAP理论

CAP定理是分布式系统中的重要理论,在一个分布式系统中最多只能同时满足一致性(Consistency)可用性(Availability)分区容错性(Partition tolerance)这三项中的两项,不能同时满足这三项。

  • 数据一致性(consistency):一旦数据更新完成并成功返回客户端后,分布式系统中所有节点在同一时间的数据完全一致。对于客户端的每次读操作,要么读到的是最新的数据,要么读取失败。
  • 服务可用性(availability):服务一直可用,而且是正常响应时间。任何客户端的请求在一定时间内都能得到响应数据,不会出现响应错误,但不保证数据最新
  • 分区容错性(partition-tolerance):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。(更通俗的解释:当任意数量的消息被节点间的网络丢失或延迟到达时,系统仍会继续提供服务,不会挂掉。或者说一个节点挂掉不影响其他节点对外提供服务

概念补充

  • Partition (分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。
  • Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务

对于分布式架构来说则必须保证P,因为分布式系统节点通过网络连接,一定会出现分区问题,即网络延迟、故障、丢包等问题。在这种情况下,一个分布式系统必须能够在网络分区发生时继续运行,即保证系统的分区容错性。因此,P是分布式系统中必须满足的特性

当发生分区现象时,为了保证 C,系统需要禁止写入,当有写入请求时,系统返回error (例如,当前系统不允许写入),这又和A冲突了,因为A要求返回no error和no timeout因此,分布式系统只能选择 CP 或者 AP 架构

假设有三个副本

  1. W=1,一写,向三个副本写入,但一个副本返回写入成功即认为成功
  2. W=3,三写,向三个副本写入,三个副本都返回写入成功才认为成功

用CAP理论分析分布式数据库

  • 对于NoSOL数据库,更加注重可用性,所以就会是一个AP系统。
  • 对于分布式关系型数据库,必须要保证一致性,所以就会是一个CP系统。但分布式关系型数据库仍有高可用性需求,虽然达不到CAP理论中的100%可用性,但一般都具备五个9 (99.999%) 以上的高可用。

我们可以把分布式关系型数据库看作CP+HA(high availability,采取了主备切换、重新选举的措施)的系统。也由此产生了两个广泛应用的指标:

  • RPO(Recovery Point Objective):恢复点目标,指数据库在灾难发生后会丢失多长时间的数据。分布式关系型数据库RPO=0。
  • RTO(Recovery Time Objective):恢复时间目标,指数据库在灾难发生后到整个系统恢复正常所需要的时间。分布式关系型数据库一般RTO<几分钟。

实际上,我们在设计一个系统时,更多的是要选择C和A中的一个,对其进行“降级”,以此进行妥协,也就是trade off的一个过程。

用CAP视角看目前成熟的分布式方案

Quorum  NWR

Quorum NWR 的三要素:

  • N 表示副本数,又叫做复制因子(Replication Factor):表示集群中同一份数据有多少个副本。副本数可以不等于节点数,不同的数据可以有不同的副本数。在实现 Quorum NWR 的时候,需要实现自定义副本的功能。也就是说,用户可以自定义指定数据的副本数。
  • W,又称写一致性级别(Write Consistency Level):表示成功完成 W 个副本更新,才完成写操作。
  • R,又称读一致性级别(Read Consistency Level):表示读取一个数据对象时需要读 R个副本。即,读取指定数据时,要读 R 副本,然后返回 R 个副本中最新的那份数据。

当 W + R > N 的时候,对于客户端来讲,整个系统能保证强一致性,一定能返回更新后的那份数据。
当 W + R < N 的时候,对于客户端来讲,整个系统只能保证最终一致性,可能会返回旧数据。

共识算法

副本之间有交互,leader提供读写,leader宕机了选一个新leader,只有选举的短暂过程不可用。所以共识算法是 CP+HA 的设计。

2.Base理论

cap理论的一种妥协,由于cap只能二取其一,base理论降低了发生分区容错时对可用性和一致性的要求,是对可用性和一致性的权衡。BASE是由 Basically Available(基本可用),Soft state(软状态),和 Eventually consistent(最终一致性)三个短语的缩写。

  1. 基本可用:算作完全可用和完全不可用中的一种折中,允许可用性降低 ,可能响应延长、可能服务降级(服务降级指的是当某个服务繁忙,不能让客户端的请求一直等待,应该立刻返回给客户端一个备选方案)
  2. 软状态:指允许系统中的数据存在中间状态。相对于软状态,就是硬状态,就是数据的状态是确定的。最终一致性的系统中,数据的读出来的不一定是最新的,软状态即一种短暂的临时状态。
  3. 最终一致性:强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。到达最终一致性的时间,就是不一致窗口时间,在没有故障发生的前提下,不一致窗口的时间主要受通信延迟,系统负载和复制副本的个数影响。

3.数据一致性模型

  • 强一致性:当更新操作完成之后,任何多个后续进程的访问都会返回最新的更新过的值,这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。根据 CAP 理论,这种实现需要牺牲可用性。
  • 弱一致性:系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。用户读到某一操作对系统数据的更新需要一段时间,我们称这段时间为“不一致性窗口”。
  • 最终一致性:强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。到达最终一致性的时间,就是不一致窗口时间,在没有故障发生的前提下,不一致窗口的时间主要受通信延迟,系统负载和复制副本的个数影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值