CAS理论和BASE理论 | 青训营笔记

314 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

CAP & BASE

CAP理论

CAP指出一个分布式系统,涉及读写操作时,满足分区容错后,只能满足其余的一点

  • Consistency 一致性:所有节点访同一份最新的数据副本

  • Availablity 可用性:非故障的节点在合理的时间内返回合理的响应

  • Partition Tolerance 分区容错性:分布式系统出现网络分区的时候,仍能够对外提供服务

    • 网络分区(network partition):存放数据的部分节点故障,导致网络分成几块,区之间无法通信

CP架构:ZooKeeper、HBase

AP架构:Cassandra、Eureka

为什么没有CAP? 如果系统出现了网络分区,某个节点正在写,如果为了保证C,就要禁止其他节点的读写操作,与A冲突;如果为了保证A,其他节点读写正常的话, 与C冲突。

如果没有发生P,那么CA是可以共存的。

BASE理论

一种对C和A的权衡

  • Basically Available,基本可用
  • Soft-State,软状态
  • Eventually Consistent,最终一致性

核心思想

牺牲数据的一致性来满足系统的高可用性,系统中一部分数据不可用或者不一致是,仍需要保持系统整体“主要可用”

基本可用

系统在出现故障时,允许损失部分可用性

  • 响应时间上的损失
  • 系统功能上的损失

软状态

指系统中的数据存在中间状态(一段时间内数据不一致),并认为这个中间状态不会影响系统整体可用性

最终一致性

系统中的所有数据副本,在经过一段时间的同步后,最终能达到一致。

各种一致性要求对比

  1. 强一致性:任何时候,系统写入的数据会同步到所有的副本。
  2. 弱一致性:不一定可以读取到最新写入的值,也不保证多少时间之后读取到的数据是最新的,只是会尽量保证某个时刻达到数据一致的状态
  3. 最终一致性 :弱一致性的升级版,系统会保证在一定时间内达到数据一致的状态。