CAP BASE 理论 学习笔记

是分布式里面比较重要的理论

CAP

布鲁尔定理(Brewer's theorem)

  • Consistency(一致性):所有节点访问同一份最新的数据副本
  • Availability(可用性):非故障节点在合理时间内返回合理响应
  • Partition Tolerance(分区容错性):分布式系统出现网络分区的时候,仍然能对外提供服务

网络分区

因为某些故障,使得某些节点之间不再连通,网络就分成了几块,便是网络分区

不是3选2

当发生网络分区的时候,如果要继续服务,那么强一致性和可用性只能2选1

所以分布式系统理论上只能选择CP架构或者AP架构

系统没有发生分区的话,可以同时保证C和A

BASE

牺牲数据的一致性来满足系统的高可用性,是对CAP中AP方案的一个补充

  • Basically Available(基本可用)
  • Soft-state(软状态)
  • Eventually Consistent(最终一致性)

允许损失部分可用性

  • 响应时间上的损失
  • 系统功能上的损失(部分非核心功能不可用)

软状态

允许系统中的数据存在中间状态,允许系统在不同节点间的数据副本间进行数据同步的过程有延时

最终一致性

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

实现方式

  • 读时修复:读取数据时,检测数据的不一致,进行修复
  • 写时修复:写入数据时,检测数据的不一致,进行修复
  • 异步修复:定时对账检测副本数据的一致性,并修复

推荐写时修复,对性能消耗较低

分布式一致性

  • 强一致性:系统写入什么,就读出来什么
  • 弱一致性:会尽量保证某个时刻达到数据一致
  • 最终一致性:保证在一定时间内达到数据一致
img_show