CAP定理:对于一个分布式计算系统来说,不可能同时满足以下三点

  • 一致性(Consistency):所有节点访问时都是同一份最新的数据副本
    PS:客户端在数据写入任何一台服务器并成功响应后,之后的客户端从其他服务器读取到的都是刚写入的数据
  • 可用性(Availability):每次请求都能获取到非错的响应,但是不能保证数据最新
    PS非故障节点收到请求后必须要有相应的响应给客户端
  • 分区容错性(Partition tolerance):遇到网络分区故障时,仍能对外提供满足一致性和可用性服务,除非整个网络环境都发生了故障
    PS:如下图G1和G2可能因为各种意外情况,导致无法成功进行同步,分布式系统要能容忍这种情况。

    论证为什么不能同时满足:假设存在三者全满足的系统,以上图为例,client向G1服务器写入一个v0=1的数据,因为满足分区容错性原则,即可能因某些原因导致G1、G2不能同步,所以client在读取数据时,由于要满足可用性原则所以一定要返回数据,G1返回v0=1,G2返回v0=0,两者不一致,不满足一致性原则,即 !C A P

CAP三者如何权衡

  • CA (Consistency + Availability):对一致性非常严格,系统不能容忍网络错误或节点错误,一旦出现错误,整个系统就会拒绝写请求
  • CP (consistency + partition tolerance):它关注的是系统里大多数的一致性协议。这样的系统只需要保证大多数结点数据一致,而少数的结点会在没有同步到最新版本的数据时变成不可用的状态。这样能够提供一部分的可用性
  • AP (availability + partition tolerance):这样的系统不能达成一致性,需要给出数据冲突,给出数据冲突就需要维护数据版本

如何进行三选二

放弃了一致性,满足分区容错,那么节点之间就有可能失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会容易导致全局数据不一致性。对于互联网应用来说,机器数量庞大,节点分散,网络故障再正常不过了,那么此时就是保障AP,放弃C的场景,而从实际中理解,像网站这种偶尔没有一致性是能接受的,但不能访问问题就非常大了
如:淘宝、京东、苏宁易购等网站
对于银行来说,就是必须保证强一致性,也就是说C必须存在,那么就只用CA和CP两种情况,当保障强一致性和可用性(CA),那么一旦出现通信故障,系统将完全不可用。另一方面,如果保障了强一致性和分区容错(CP),那么就具备了部分可用性。实际究竟应该选择什么,是需要通过业务场景进行权衡的(并不是所有情况都是CP好于CA,只能查看信息但不能更新信息有时候还不如直接拒绝服务)

CAP——————BASE理论

既然无法同时满足CAP,所以出现了BASE理论:
BASE:Basically Available(基本可用)Soft state(软状态), Eventually consistent(最终一致性) 三个短语的缩写 ,Base 理论是对 CAP 中一致性和可用性权衡的结果,其核心思想是: 既是无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

  • Basically Available(基本可用)
    假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言:
    响应时间上的损失:正常情况下的搜索引擎 0.5 秒即返回给用户结果,而基本可用的搜索引擎可以在 1 秒返回结果。
    功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单,但是到了大促期间,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面(如双十一期间的-------哎呀,服务器被挤爆啦,请稍后再试)
  • Soft state(软状态)
    相对于原子性而言,要求多个节点的数据副本都是一致的,这是一种 “硬状态”。
    软状态指的是:允许系统中的数据存在中间状态,并认为该状态不会影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
  • Eventually consistent(最终一致性)
    上面说软状态,然后不可能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据一致性。从而达到数据的最终一致性。这个时间期限取决于网络延时,系统负载,数据复制方案设计等等因素。

分布式理论——CAP定理相关推荐

  1. 分布式理论-CAP定理

    CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)Availability(可用性).Partition tolerance(分区容错性)这三个基本需求,最多只能同时 ...

  2. 分布式理论CAP定理

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

  3. 分布式理论-CAP理论

    一 CAP理论简述      海量数据管理中的一致性理论,包括CAP理论,BASE理论,数据一致性理论模型,以及现有的经典数据一致性技术.其中CAP (Consistency, Availabilit ...

  4. 分布式理论:CAP、BASE | 分布式存储与一致性哈希

    文章目录 分布式理论 CAP定理 BASE理论 分布式存储与一致性哈希 简单哈希 一致性哈希 虚拟节点 分布式理论 CAP定理 一致性(Consistency): 在分布式系统中的所有数据副本,在同一 ...

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

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

  6. CAP定理与BASE理论

    CAP定理与BASE理论 CAP定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想.2年后,麻省理工学院的 Seth Gilb ...

  7. 分布式--CAP定理

    原文网址:分布式--分布式架构_IT利刃出鞘的博客-CSDN博客 简介 本文介绍分布式的CAP定理. CAP定理概述 说明 一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A ...

  8. 分布式CAP定理,为什么不能同时满足三个特性?

    在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理. 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可 ...

  9. 分布式理论之BASE理论

    原文链接:https://segmentfault.com/a/1190000018019595https://segmentfault.com/a/1190000018019595 什么是BASE理 ...

最新文章

  1. python数据分析面试_python数据分析面试
  2. s插件——SlimScroll滚动美化插件
  3. php mysql防卡_php mysql防止sql注入详解
  4. 用SD卡下载uboot、linux内核和文件系统
  5. 【C#】byte[]数据转化相关操作
  6. db链接相关链接相关参数理解
  7. json数据格式基础知识
  8. 关于启动PPT时,出现错误对话框的问题的解决.
  9. 瑞友杯虚拟化征文---瑞友天翼应用虚拟化之实战演示
  10. echarts 柱状图设置边框_echarts柱状图
  11. raize控件的安装注意
  12. 强化学习算法TRPO之共轭梯度优化
  13. 计算机键盘标注,电脑键盘上怎么打√和×
  14. 计算机特殊社会环境,计算机应用职业生涯规划书
  15. Scikit-learn中的Lasso/LassoCV以及R^2可决系数的分析与讨论
  16. 马来西亚动画片《Ribbit》将在尼亚加拉电影节中首映
  17. 微信小程序实现活动轨迹回放
  18. .js文件中的下划线
  19. 修改多台远程服务器,电脑默认用户名Administrator
  20. c# 傅里叶变换 频域_C# 傅里叶变换 逆变换 调用MathNet包

热门文章

  1. SpringBoot事务传播机制
  2. 三星浏览器vr_通过WebVR在浏览器中带来VR体验
  3. error LNK2005: _DllMain已经在dllmain.obj 中定义
  4. 银河麒麟操作系统获知系统安装时间
  5. 程序化交易软件的作用
  6. Matlab编程语言(五)--条件语句
  7. loadrunner-录制脚本
  8. 机械原理葛文杰P47页牛头刨床运动分析代码,画图精致
  9. 获取WebShell思路
  10. 仿小皮手游网帝国CMS模板源码 大型手游门户网站系统源码+手机版+火车头采集