CAP定理和BASE定理

CAP定义

CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统有三个特征:

  • 一致性(Consistency)
  • 可用性(Availability)
  • 分区容错性 (Partition tolerance)
    一个分布式系统最多满足其中两个特性,一张图足以说明。
    在这里插入图片描述

一致性

“all nodes see the same data at the same time”,即所有节点在同一时间的数据完全一致。
强一致性
对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。
弱一致性
如果能容忍后续的部分或者全部访问不到,则是弱一致性。
最终一致性
如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。

可用性

“Reads and writes always succeed”,即服务在正常响应时间内一直可用。

分区容错性

“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。
如果某个节点遇到故障,怎么取舍呢

  • 一牺牲数据一致性,响应旧的数据给用户;
  • 二牺牲可用性,阻塞等待,直到恢复正常;

BASE定理

Base 理论是对 CAP 中一致性和可用性权衡的结果,是基于 CAP 定理逐步演化而来的。其核心思想是:既是无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)

Basically Available(基本可用)

基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性。

  • 响应时间的损失:服务响应时间变大到可接受范围
  • 功能的损失:例如服务降级

Soft state(软状态)

允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。

Eventually consistent(最终一致性)

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性

  • 因果一致性(Causal consistency)如果节点 A 在更新完某个数据后通知了节点 B,那么节点 B 之后对该数据的访问和修改都是基于 A 更新后的值。于此同时,和节点 A 无因果关系的节点 C 的数据访问则没有这样的限制。
  • 读己之所写(Read your writes)节点 A 更新一个数据后,它自身总是能访问到自身更新过的最新值,而不会看到旧值。其实也算一种因果一致性。
  • 会话一致性(Session consistency)会话一致性将对系统数据的访问过程框定在了一个会话当中:系统能保证在同一个有效的会话中实现 “读己之所写” 的一致性,也就是说,执行更新操作之后,客户端能够在同一个会话中始终读取到该数据项的最新值。
  • 单调读一致性(Monotonic read consistency)如果一个节点从系统中读取出一个数据项的某个值后,那么系统对于该节点后续的任何数据访问都不应该返回更旧的值。
  • 5单调写一致性(Monotonic write consistency)指一个系统要能够保证来自同一个节点的写操作被顺序的执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值