1. CAP理论介绍

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

  • 一致性(Consistency) (等同于所有节点访问同一份最新的数据副本)
  • 可用性(Availability)(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据)
  • 分区容错性(Partition tolerance)(以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。)

2. 为什么不能同时满足

对于CAP理论中,分布式系统要保障整体的服务,因此(Partition tolerance)分区容错性必然存在。那么为什么CA不能同时存在?因为分区之间的通信可能通信失败。

① 假设有两个数据分区DB1和DB2,存储着相同的一个数据,都是Version0。
② 有写请求进来,修改了DB1中的数据到Version1,正常情况下需要将修改同步到DB2,但是由于之间通信故障,DB2数据没能成功修改。
③ 当有读请求进来,请求DB1,返回正确数据Version1,请求DB2,由于数据没有成功修改,要么牺牲一致性,返回Version0,要么牺牲可用性,等故障恢复后再返回数据,阻塞掉请求。

因此,CAP理论中CA无法同时满足。那么可能存在两种情况:

  • CP without A
  • AP without C

3. 要A还是要C

CP without A:
有些系统中一致性是本质要求,例如Redis分布式存储,ZooKeeper任何时候访问ZK都可以获得一致性的结果。极端情况下可能丢弃一些请求,从而保障一致性。

AP without C:
比如有的网页对一致性要求不是那么高,对商品价格进行更改,但是要保障用户仍然能顺利的访问网页。但是会在付款的时候对价格进行再次验证。


Ref:

  1. 《CAP 定理的含义》阮一峰
  2. 《CAP定理》维基百科

CAP理论为什么不能同时满足相关推荐

  1. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  2. ZooKeeper和CAP理论及一致性原则

    ZooKeeper和CAP理论及一致性原则 一.CAP理论概述 CAP理论告诉我们,一个分布式系统不可能同时满足以下三种 一致性(C:Consistency) 可用性(A:Available) 分区容 ...

  3. cap理论与分布式事务的解决方案

    现在很火的微服务架构所设计的系统是分布式系统.分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency).可用性(Availablility)和分区容错(Partit ...

  4. 肝了3版才满意:分布式系统之CAP理论,我们对它的理解和误解

    引言 CAP 理论,相信很多人都听过,它是指: 一个分布式系统最多只能同时满足一致性(Consistency).可用性(Availability)和分区容错性(Partition tolerance) ...

  5. 浅论服务端应用程序开发中的CAP思想(非分布式系统中的CAP理论)

    本文从属于笔者的<服务端应用程序结构风格变迁之路> CAP理论是分布式系统构建中的基础理论之一,其中的C(Consistency),一致性即指所有的节点都能访问同一份最新的数据副本.A(A ...

  6. 分布式理论:CAP理论

    2019独角兽企业重金招聘Python工程师标准>>> 一.CAP理论原理 1.CAP理论介绍 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上 ...

  7. 分布式理论(一)CAP 理论

    分布式理论(一) CAP理论 一.CAP理论前言 CAP原则又称为CAP理论,主要思想是在任何一个分布式系统中都无法同时满足CAP. C(Consistency):表示一致性,所有的节点同一时间看到的 ...

  8. 学习分布式不得不会的CAP理论

    2018年07月16日 11:52:59 Hollis在CSDN 阅读数:161更多 个人分类: 架构 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP ...

  9. 「数据库系列四」分布式数据库CAP理论与最终一致性

    传统关系型数据库中事务有四个重要的特性,简称ACID,即 原子性 : 事务是一个不可分割的工作单位,事务中的操作要么都成功,如果有一个执行失败,所有的SQL将都被撤销,恢复到事务开始的状态 一致性 : ...

  10. base cap 分布式_神一样的CAP理论被应用在何方?

    " 对于开发或设计分布式系统的架构师工程师来说,CAP 是必须要掌握的理论. 图片来自 Pexels But:这个文章的重点并不是讨论 CAP 理论和细节,重点是说说 CAP 在微服务中的开 ...

最新文章

  1. 解读丨从自动驾驶到学习机器学习:科技发展的15大趋势
  2. 索引和长度必须引用该字符串内的位置--ArgumentOutOfRangeException
  3. libevent在windows下使用步骤详解
  4. 世界上最诡异的画,到底为何让无数人闻风丧胆?
  5. 5个令人震惊的统计数据证明日志不足
  6. 微信公招访问我服务器的那个端口,查看谁在使用某个网络端口
  7. 电力笔记-30个行业专业词汇(Ⅱ期)
  8. 使用Linux命令行测试网速
  9. MySQL 分页优化中的 “ INNER JOIN方式优化分页算法 ” 到底在什么情况下会生效?...
  10. 【Elasticsearch】es 电台 收听 笔记
  11. linux系统电脑的权限设置,Linux下的文件权限设置修改详解linux操作系统 -电脑资料...
  12. 预处理器loader总结
  13. 扬州大学广陵学院c语言试卷,扬州大学广陵学院交直流调速复习题答案(试卷)
  14. iOS开发中的HTML解析
  15. 数据库接口实验--php实现--
  16. php下添加pdo_mysql扩展
  17. easypoi 导入错误返回流_金九银十面试准备季:异常+IO与NIO流
  18. 关于静态博客的评论系统
  19. java web 发送短信_java程序或javaweb(网站)向手机发送短信
  20. php爬虫严选,用 Python 爬取网易严选妹子内衣信息,探究妹纸们的偏好|python爬虫|python入门|python教程...

热门文章

  1. 中科创达怎么样?科技实力来说话
  2. MySQL日期格式化函数DATE_FORMAT(‘2020-09-14 14:08:16‘,‘%y%m%d %H%I%S‘)
  3. 不爱打空格的小孟c语言,语言学专家:很多年轻人发信息不爱用句号,其实都是有原因的...
  4. docker -v :rw :ro
  5. testufo测试刷新率测试_高刷屏比低刷屏强多少?用UFO Test工具一目了然
  6. 人大金仓和达梦的空间数据能力对比
  7. redis如何设置定时过期_redis设置过期时间
  8. [JSON] JSON基础知识
  9. dhcp服务器(dhcp服务器怎么设置)
  10. 漏洞解决方案-SQL注入攻击