CAP

定义

  • 一致性(Consistency): 除非读取失败,否则不管访问的是哪个节点,在同一时间的数据返回的数据都是完全一致的;
  • 可用性(Availability):服务总是能正常响应数据,但不保证是最新数据;
  • 分区容错性(Partition Tolerance):在分布式系统内,即使因部分节点或者网络分区故障,导致任意数量的请求响应丢失或者延迟已经发送,后续系统仍能够对外提供服务;

侧重点

  • 一致性强调的不是数据完整性,而是各个节点之间数据一致;
  • 可用性强调的是服务可用,但不保证数据的一致;
  • 分区容错性强调的是对分区故障的容错能力,即分布式系统不会因为已经发生过的故障导致整个系统会挂掉;

CAP权衡

CA

由于在分布式系统中,由于网络延迟或网络分区的存在,P是一个基本要求,CA在分布式系统中几乎不存在;

CP

必须保证分布式系统的一致性,以至于可以牺牲掉系统的可用作容许系统停机或长时间无响应。例如像Redis、HBASE等分布式存储系统以及想Zookeeper这种分布式协调组件,必须要保证数据的一致性;

AP

牺牲分布式系统的强一致性,保证分布式系统的可用性;

BASE理论

定义

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

参考

  1. 轻松理解CAP理论