CAP

CAP是Consistency、Availablity、Partition-tolerance的缩写,由计算机科学家埃里克·布鲁尔在2000年提出的,所以又称布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点。

  • Consistency(一致性):如果对任意一个节点的数据就行修改成功后,所有其他节点都能读取到最新的值,那么这个系统就被认为具有严格的一致性。
  • Availability(可用性):每次请求都能获取到非错的响应,即单节点宕机可从其他节点获取到响应,但是不能保障获取到的数据为最新的数据,即和一致性互斥
  • Partition tolerance(分区容错性):当节点间出现网络分区(不同节点处于不同的子网络,子网络之间是联通的,但是子网络之间是无法联通的,也就是被切分成了孤立的集群网络),照样可以提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。

任何一个分布式系统只能满足三选二,即只能AP或 CP,必须要有P 。为什么是如此,我们来作简单的分析。
由于我们是分布式系统,所以我们必须要将系统部署在多节点,多网络分区,这才是分布式系统,而存在网络分区,我们就必须要保证P,,分区容错性

假设我们有两个节点A和B,不在同一个网络。

此时A、B之间的网络断开。此时如果我们要满足分区容错性继续对外提供服务,那么我们还能同时满足一致性和可用性吗?
假设现在用户对A节点进行了数据修改操作,而B与A直接网络通信断开了,A的数据修改操作没发同步给B,用户又对B进行了数据请求,那么他们之间的数据就不一致了。这时我们就只能二选一了:

  1. 牺牲数据一致性©,将B的旧值返回给用户,保障可用性,选择AP
  2. 牺牲可用性(A),等待A、B之间的网络通信,阻塞用户的请求,满足一致性,选择CP

在设计系统时是选择CP还是AP就要看自己系统的业务所决定,不过在一些开源分布式系统中比如zookeeper、mongodb、hbase 他们都是基于CP来实现的即强一致性,如果发生网络分区导致数据不一致则都不能提供服务

BASE

BASE 是由 Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)缩写而来的。BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性,让CAP三者同时基本实现。

  • Basically Available:基本可用,就是在某个节点宕机或者发生网络分区的情况,可以让所有请求都强制走主节点,这样保证了数据的一致性可可用性,如果主节点压力比较大可以触发降级熔断机制等,或者限流等,让原先0.5秒响应的请求以更长的时间去相应
  • Soft state:软状态相对原子性来说各个要求都有所降低,原子性(硬状态),要求多个节点的数据副本都是一致的,这是一种"硬状态"。软状态(弱状态)允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延迟
  • Eventually consistent:最终一致性,一致性也分强一致性和弱一致性,而最终一致性属于弱一致性,就是系统并不保证连续进程或者线程的访问都会返回最新的更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。但会尽可能保证在某个时间级别(比如秒级别)之后,可以让数据达到一致性状态。

参考

维基百科
博客

分布式系统核心理论之CAP、BASE理论相关推荐

  1. 002 分布式核心概念-CAP帽子理论分析及BASE理论分析

    分布式事务.一致性的主流解决手段 互联网的ACID.CAP.Base理论: ACID:数据库的四个特性(原子性,隔离性,一致性,持久性) 首先要很清楚的认知什么是ACID,一般关系型数据库都会保证AC ...

  2. CAP 原则与 BASE 理论

    导航 引言 一.CAP 原则 1.1 Consistency 一致性 1.2 Available 可用性 1.3 Partition tolerance 分区容错性 1.4 CAP 的矛盾 1.5 C ...

  3. 分布式系统中的FLP不可能原理、CAP理论与BASE理论

    前言 分布式系统是由多个不同的服务节点组成,节点与节点之间通过消息传递进行通信和协调.根据消息传递的不同,分布式系统的运行模型可以分为异步模型系统 和同步模型系统. 1.同步与异步 同步和异步关注的是 ...

  4. BASE理论(基本可用策略+ 最终一致性实现)

    目录 实现基本可用的几个策略 1.流量削峰(不同地区售票时间错峰出售) 2.延迟响应,异步处理(买票排队,基于队列先收到用户买票请求,排队异步处理,延迟响应) 3.体验降级(看到非实时数据,采用缓存数 ...

  5. ACID+CAP+BASE+Transaction(事务)

    ACID+CAP+BASE+Transaction(事务) 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity).一致性(Consis ...

  6. 常见分布式理论(CAP、BASE)和一致性协议(Gosssip协议、Raft一致性算法)

    一.CAP理论与BASE理论: 1.什么是 CAP 理论: C:Consistency 一致性:指强一致性,分布式系统中的所有节点在同一时刻具有同样的值.都是最新的数据副本,一致性保证了不管向哪台服务 ...

  7. 【分布式】1、CAP原则(CAP定理)、BASE理论

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  8. 分布式系统概念 | 分布式理论:CAP、BASE

    文章目录 CAP定理 BASE理论 CAP定理 一个分布式系统不可能同时满足一致性(Consistency).可用性(Availability).分区容错性(Partition Tolerance)这 ...

  9. 10分钟了解分布式CAP、BASE理论

    CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理.C ...

最新文章

  1. 元宇宙,分三层!香港中文大学再现「校园元宇宙」原型
  2. Python基于socket实现的TCP客户端
  3. [linux]cp和mv对文件和链接影响的区别
  4. ux.form.field.Verify 验证码控件
  5. python 包和模块的区别_3分钟带你搞懂Python模块、包的区别和使用
  6. 梯度下降和随机梯度下降_梯度下降和链链接系统
  7. php面向对象魔术方法,PHP面向对象中的魔术方法
  8. .net面试问答(大汇总)(转)
  9. python古诗词生成_唐诗生成器
  10. Insyde uefi 隐藏设置_固件级安全,微软安全工具新增UEFI扫描功能
  11. 软件测试的技术(互联网篇)
  12. c语言用标准体重判断是否,输入身高、体重、性别,判断是否是标准体重,男性标准=(身高-100)+-3,女性标准=(身高-110)+-3...
  13. Block-scoped declarations (let, const, function, class) not yet supported outs报错解决
  14. web前端开发教学视频,web前端开发职业
  15. nginx 负载均衡安装及升级步骤
  16. 网页端、移动端导航设计模式全解
  17. VMWare删除虚拟机
  18. Hibernate笔记+相关面试题
  19. x264源代码简单分析:编码器主干部分-1
  20. 思维题:12个硬币中有1个假币,假币的重量与真币不同,如何用天平最多称量3次找出假币?

热门文章

  1. 十二天宫之摩羯篇(一)——一个冷酷的星座
  2. AUTOSAR FEE 评估策略分析
  3. arcmap点图层获取tif图像素值,ArcMap中输出tif图片时的Write GeoTIFF Tags选项,Engine中如何实现?...
  4. 四川科技馆智能控制协议设计
  5. 浏览器控制台过滤无用的提示和报错
  6. 利用python编写批量修改文件名后缀
  7. CommonTableCollectView:使用例子,增删cell,以及label解析html
  8. 计算机毕业设计Android图书馆借阅系统app(源码+系统+mysql数据库+Lw文档)
  9. @f_webp 图片转 jpeg, png
  10. python爬取网页某一个a标签_Python爬虫获取某个网页所有的a标签中的超链接网址...