CAP定理

CAP定理

版权申明:本文为原创文章,转载请注明原文出处

原文链接:https://blog.it-follower.com/posts/1168162948.html

简介

CAP定理指的是一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

  • 一致性(C):分布式系统中多个主机之间是否能够保持数据一致的特性。即当系统数据发生变更后,各个主机中的数据仍然处于一致的状态。
  • 可用性(A):系统提供的服务必须一直处于可用的状态,即对于用户的每一个请求,系统总是可以在有限的时间内对用户做出响应
  • 分区容错性(P):分布式系统在遇到任何网络分区时,仍能保证对外提供满足一致性和可用性的服务。

对于分布式系统,网络环境相对是不可控的,出现网络分区是不可避免的,因此系统必须具备分区容错性。但其并不能同时保证一致性与可用性。CAP定理对于一个分布式系统来说,只可能满足两项,即要么是CP,要么是AP。

BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写,是CAP定理对应一致性与可用性权衡的结果。

BASE理论的核心思想是,即使无法做到强一致性,但每个系统都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

  • 基本可用:是指分布式系统在出现不可预知的故障时,允许损失部分可用性。例如响应时间的损失、功能上的损失
  • 软状态:是指允许系统数据存在的中间状态,并认为该中间状态的存在不影响系统的整体可用性,及允许系统主机间进行数据同步的过程存在一定的延时。软状态,其实就是一种灰度状态,过渡状态。
  • 最终一致性:其强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

ZK与CP、Eureka与AP

ZK遵循的是CP原则,即保证了强一致性,但牺牲了可用性。具体体现在,1、当ZK集群中的Leader宕机后,ZK集群会马上进行新的Leader选举。但选举时长一般在200毫秒内,最长不超过60秒,整个选举期间ZK集群是不接受客户端的读写操作的,即ZK集群处于瘫痪状态。2、Leader进行事务操作后,Follower节点会进行数据同步,这个同步时间然后很快,但是其同步过程也是不对我提供服务的。所以其不满足可用性。

Eureka遵循的是AP原则,即保证了可用性,但牺牲了一致性。

评论