前言:CAP定理是学习分布式所必备的知识点之一,所以先深入的理解一下这个知识点。初看CAP定理时,有些不以为意,在后续的学习中发现这是个特别值得仔细揣摩的点。

一、CAP定理

我们了解到分布式是将一个业务拆分成多个子业务,就有了我们的分布式系统,而CAP定理就是针对分布式系统的。CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),也称为帽子原理。

  1. C:Consistence,一致性(强一致性)。所有子业务在同一时刻读取的数据都具有相同的值。

  2. A:Availability,可用性,好的响应性能。每次请求都能获取到非错的响应。

  3. P:Partition tolerance,分区容忍性(分区容错性)。某个子业务发生故障时,系统仍能够继续运行

二、关于三选二

  • 通过字面意思我们可以理解为这是分布式系统的三个重要属性。也可以这样说,这个分布式系统有一致性,有可用性,有分区容错性(这里可能会因为这个词的陌生而觉着别扭,需要简单理解下)。
  • 很多资料说明对一个分布式系统来说不可能同时满足以上三点,只能实现其中俩点。  也有说分区容忍性是必须实现的,我们只能在剩余俩点中二选一。 可以看出矛盾点来自于分区容忍性,让我们来了解下。

三、分区容忍性

分区:一个分布式系统里各子业务的网络应该是连通的。因一些原因使得这些子业务之间的网络不通了,从而导致系统被切分成若干个孤立的区域。这就是分区。

分区容忍性:如果数据只保存在一个子业务中,那么出现分区时,其它子业务就访问不到数据了,这时出现的分区是无法容忍的。

如何提高分区容忍性:提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里,容忍性就提高了。

举个例子:一个简单的分布式商城,它有俩个业务,一个库存子业务,一个订单子业务。当用户通过订单子业务下单时,订单子业务需要告诉库存让其数量-1,当他们之间网络不通时,就形成了俩个孤立的区域,形成了分区。这时就没实现分区容忍性。我们想要避免这种情况就需要在下单时将下单进行复制同时告诉库存,这样即使出现了分区,下单这一数据项也分布到了这俩个区,容忍性就提高了。

然而,要把数据复制到多个子业务,就会带来一致性的问题,就是多个子业务上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部子业务写成功,而这等待又会带来可用性的问题。

小结

关系型数据库是单节点无复制的,因此不具备分区容忍性。所以CAP仅适用于原子读写的NOSQL场景中。而分布式系统都需要满足分区容忍性P。所以对于分布式系统来说我们要在一致性C与可用性A之间进行权衡。

四、一致性与可用性的矛盾

上面我们通过复制下单这一数据项提高了分区容忍性。解决问题的同时又出现了新的问题,如果订单业务写的时候出现错误,就会出现没订单但是库存却少了的情况,导致数据不一致。如果想要解决这个问题,我们就需要等待订单写成功后再写库存,这个过程中必须暂停库存的操作,就失去了可用性。所以在实际应用中就要根据实际场景来进行取舍。

五、思考

在这种情况下有没有办法进一步的优化呢,让我们带着这个疑问继续学习吧。

分布式学习(二)——CAP定理理解篇相关推荐

  1. 分布式理论(一) - CAP定理

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

  2. 强化学习Reinforcement Learning概念理解篇(一)

    在学习强化学习之前,应该对强化学习有一个大致的了解,即去分析一下强化学习的结构或者组成元素: 什么是强化学习?所谓强化学习,就是在与环境的互动当中,为了达到某一个目标而精心的学习过程,因此称之为Goa ...

  3. TH库学习(二): THTensorApply宏观理解(简化)

    特别说明,本文大多思路和解释都源于: [1] PyTorch源码浅析(一) [2] PyTorch源码浅析(二) [3] tiny_lib TensorApply系列的宏函数是TH实现各种张量元素操作 ...

  4. 分布式理论,看完这篇你定能有所获

    分布式架构系统回顾 分布式系统概念 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统. 简单点说,所谓分布式系统,就是一个业务拆分成多个子业务,分布 ...

  5. 佳文分享:CAP定理

    1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall ,Sex Pistols 乐队(注:Sex Pistols的经理 ...

  6. 分布式理论:CAP 是三选二吗?

    CAP 是什么 CAP 理论,被戏称为[帽子理论].CAP 理论由 Eric Brewer 在 ACM 研讨会上提出,而后 CAP 被奉为分布式领域的重要理论 [1]. 分布式系统的 CAP 理论:首 ...

  7. 《深入分布式缓存》之“分布式理论:CAP是三选二吗?”

    CAP是什么? CAP理论,被戏称为[帽子理论].CAP理论由Eric Brewer在ACM研讨会上提出,而后CAP被奉为分布式领域的重要理论[1] . 分布式系统的CAP理论:首先把分布式系统中的三 ...

  8. 分布式工作笔记001---分布式系统中CAP 定理的含义

    JAVA技术交流QQ群:170933152 分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的. 分布式系统的最大难点,就是各个节点的状态如何同步.CAP 定 ...

  9. 分布式之什么是CAP定理

    [版权申明] 非商业目的注明出处可自由转载 出自:shusheng007 文章目录 概述 历史 定义 如何理解 总结 概述 前段时间看到微服务注册中心的如何选择问题,在比较 Netflix eurek ...

最新文章

  1. 字体中字号,磅值和mm之间的转换
  2. ECCV 2020 DETR:《End-to-End Object Detection with Transformers》论文笔记
  3. 转的,程序员如何缓解压力
  4. pandas滑动窗口防止nan出现
  5. html如何实现字体逐个输入,HTML – 如何将字体真棒图标插入文本输入?
  6. oracle字符串转日期比较大小写,【varchar】oracle中比较日期大小日期定义的是varchar2类型的......
  7. can test 接收报文_电动汽车国标充电报文解析及应用
  8. zookeeper和ZAB协议
  9. HTML5射击鸭子小游戏
  10. 高精度定位系统精细测距定位
  11. 集束搜索(Beam Search Algorithm )
  12. 销售人员的月工资数量(月工资=基本工资+提成,提成=商品数*1.5)
  13. 思考总结:领域知识图谱平台构建与业务应用
  14. 数据安全和隐私保护(新生研讨课小论文)
  15. ARM及ZigBee技术实现智能家居控制器的设计
  16. PMP之项目经理的角色
  17. 纸上得来终觉浅(c语言小知识总结)
  18. private static final long serialVersionUID = 1L 的作用
  19. Powershell 挖矿病毒处理与防范,该病毒特性:病毒每天自动运行,生成的病毒程序杀毒软件能查到,但无法阻止powershell病毒的自动运行,每天都会生成新的病毒文件
  20. 激光在大气中传输特性

热门文章

  1. 考研英语 长难句训练day30
  2. GitBook 从懵逼到入门
  3. STM32 学习笔记2-智能小车循迹实验
  4. 如何在android模拟器中输入中文
  5. 铺管家教育开店有什么优势
  6. 百度地图调整字体大小怎么设置(2021)
  7. 南大通用GBase8s 常用SQL语句(四十)
  8. 【Electron】vue+electron代码签名(mac篇)
  9. C++程序员的职业寿命比Java长?Java程序员同意吗?
  10. 用scrapy爬虫设置了ip代理报错是怎么回事