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. mysql 让别人连接我的数据库
  2. Node.js webpack中url-loader处理图片路径
  3. Android开发之Retrofit小试牛刀
  4. 图的表达与遍历--邻接矩阵和邻接表
  5. 【分享-免费下载】免费下载配乐/视频/平面设计/游戏素材
  6. CodeForces 980 E The Number Games
  7. android65535错误实现,Android 65535问题的解决方法
  8. 【uniapp小程序】—— APP项目云打包(安卓)
  9. 用51单片机怎么玩SG90舵机?
  10. Django 2.1文档
  11. 吃货在东京 -- 记那段吃不饱的日子 之四 台场的日本拉面
  12. 【多媒体基础知识】 --- 什么是流媒体技术
  13. mac小白的实用技巧
  14. 微信支付(java版本)
  15. oracle中对于TableSpace理解
  16. EAN13条形码绘制(Delphi版)
  17. Snackbars从顶部滑出的实现
  18. Oracle执行UPDATE语句的步骤
  19. uniapp 之 充值 微信支付下 之 传递输入金额参数
  20. centos 网卡设置

热门文章

  1. CodeForces - 1569B Chess Tournament
  2. Matlab 获取操作系统信息
  3. 七十八.ags4 -1.1.24
  4. 阿里easyexcel通过模板导出excel
  5. swiper插件实现轮播图
  6. 使用scikit-image feature计算图像特征与常见特征示例
  7. tomcat命名来源(歪批)
  8. Openwrt/lede软路由设置为ap模式
  9. 2020年长沙四大名校高考成绩统计
  10. Java总结 - 抽象类与接口 1