CAP理论(一个分布式系统至多只能满足三项中的两项)

一致性(Consistency)    所有节点在同一时间访问到的数据完全一致

可用性(Availability)   非故障节点对每一个请求能做出响应

分区容错性(Partition Tolerance)   当集群中的某些结点无法联系时仍能正常提供服务

说说一致性:

一致性是因为多个数据拷贝下并发读写才有的问题

若从客户端和服务端两个不同的视角来看

  • 客户端:一致性主要指的是数据更新后,在多并发访问时如何获取
  • 服务端:指更新如何分布到整个系统,以保证数据最终一致

一致性,可以分为强/弱/最终一致性三类

从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。

  • 强一致性:关系型数据库,要求更新过的数据能被后续的访问都能看到
  • 弱一致性:能容忍后续的部分或者全部访问不到
  • 最终一致性:经过一段时间后要求能访问到更新后的数据

CAP的证明

上图是证明CAP的基本场景,网络中有两个节点N1和N2,他们之间网络可以连通,N1、N2中均有一个应用程序A/B,和一个数据库V。两个V0是分布式系统的数据存储的两个子数据库

在满足一致性的时候,N1和N2中的数据是一样的,V0=V0

在满足可用性的时候,用户不管是请求N1或者N2,都会得到立即响应

在满足分区容错性的情况下,N1和N2有任何一方宕机,或者网络不通的时候,都不会影响N1和N2彼此之间的正常运作

如上图,分布式系统正常运转下,用户向N1机器请求数据更新,程序A更新数据库V0为V1,分布式系统将数据进行同步操作M,将V1同步到N2中的V0,使得N2中的数据V0也更新为V1,N2此时响应读数据请求则与N1中一致

现在假设一种极端情况,N1和N2之间的网络断开了,分布式系统要支持这种网络异常,相当于要满足分区容错性,能不能同时满足一致性和响应性呢?

假设在N1和N2之间网络断开的时候,有用户向N1发送写数据请求,那N1中的数据V0将被更新为V1,由于网络断开,分布式系统无法同步操作M,故N2中的数据依旧是V0

此时,有用户向N2发送读数据请求,由于数据还没有进行同步,应用程序没办法立即给用户返回最新的数据V1,怎么办呢?有二种选择:

第一,牺牲一致性,响应旧的数据V0给用户

第二,牺牲可用性,阻塞等待,直到网络连接恢复,数据更新操作M完成之后,再给用户响应最新的数据V1

这个过程,证明了要满足分区容错性的分布式系统,只能在一致性和可用性两者中,选择其中一个

CAP权衡

CA without P:舍弃P(不允许分区容错),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA

CP without A:舍弃A(可用性),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长。很多传统的数据库分布式事务都属于这种模式
AP wihtout C:舍弃C(一致性),要高可用并允许分区,一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性,现在众多的NoSQL都属于此类

高可用性:指系统无中断地执行其功能的能力,代表系统的可用性程度

其度量方式,是根据系统损害、无法使用的时间,以及由无法运作恢复到可运作状况的时间,与系统总运作时间的比较。计算公式为: 

A(可用性),MTBF(平均故障间隔),MDT(平均修复时间)

在线系统和执行关键任务的系统通常要求其可用性要达到5个9标准(99.999%)---年故障时间为5分15秒

分布式系统基础--CAP理论相关推荐

  1. 什么是分布式系统的CAP理论?

    什么是分布式系统的CAP理论? 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lyn ...

  2. 分布式系统之----CAP理论

    分布式的优点是大大的,最明显的就是可以同时处理很多事情,可以同时响应很多请求. 分布式的缺点也是大大的. 机器之间需要花费不少时间精力来沟通,这就是分布式的缺点. 沟通到机器认识在一个水平,数据状态一 ...

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

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

  4. 分布式系统之CAP理论

    一.CAP起源 CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他认为在设计一个大规模可扩放的网络服务时候会遇到三个特性:一致性(consistency).可用性(Avail ...

  5. cap理论具体含义_分布式系统:CAP 理论的前世今生

    CAP 理论是分布式系统设计中的一个重要理论,虽然它为系统设计提供了非常有用的依据,但是也带来了很多误解.本文将从 CAP 诞生的背景说起,然后对理论进行解释,最后对 CAP 在当前背景下的一些新理解 ...

  6. 分布式系统:CAP 理论的前世今生

    CAP 理论是分布式系统设计中的一个重要理论,虽然它为系统设计提供了非常有用的依据,但是也带来了很多误解.本文将从 CAP 诞生的背景说起,然后对理论进行解释,最后对 CAP 在当前背景下的一些新理解 ...

  7. [分布式]:分布式系统的CAP理论

    2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP.之后, ...

  8. 分布式系统原理 之9 CAP 理论

    分布式系统原理 CAP 理论 CAP 理论是由 Eric Brewer 提出的分布式系统中最为重要的理论之一[8].本文将 CAP 理论安排在原理部分的最后介绍是为了利用前面已经介绍过的几种分布式协议 ...

  9. 分布式系统CAP理论解析

    在分布式系统架构下,CAP理论已经成为公认的定理,随着二十年技术的发展,CAP理论的解读也发生了些变化.本文简要介绍CAP理论的原理及证明思路,以及在分布式架构下的适用性,以加深理解. 1.CAP简介 ...

最新文章

  1. 交通优化需求下 智能交通已达千亿市场
  2. Direct I/O
  3. VS.NET中的生成解决方案和重新生成解决方案有什么区别?
  4. window 2008 和 windows vista windows 7 安装 MSMQ
  5. Asp.Net中用javascript实现弹出窗口永远居中
  6. 建立Win32 Console Project时会出“error LNK1123” 错误
  7. LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)
  8. SQL Server 列存储索引强化
  9. OpenJDK8 JAVA应用窗口在不同缩放比例下的表现(Windows10)
  10. SQL 2008 r2(MSSQLSERVER)服务启动错误代码3414
  11. python初步学习笔记(上)
  12. java 判断当前时间节气,请问js获取阴历节气后根据节气判断春夏秋冬四季?该怎么写呢...
  13. Excel Vba快速界面设计入门
  14. Unix File Permissions ACLs in OS X(part 2)
  15. 第 05 篇 如何使用 SQL 语句进行模糊查找?
  16. 第一天:外企面试英语口语常用语
  17. 蚁群算法优化旅行问题
  18. 【SpringBoot DB系列】Jooq批量写入采坑记录
  19. 阿里云备案服务码怎么申请?
  20. 【Linux】LINUX内核目录文件说明

热门文章

  1. java udp心跳机制_心跳包机制整理汇总
  2. ASEMI整流桥GBU808参数,GBU808介绍,GBU808详解
  3. springboot疑难杂症
  4. 新栏目上线|我是戴小乐-集美貌与才华于一身~
  5. 在Linux中直接通过wget从网上下载jdk1.8
  6. 2022.02.23
  7. 计算机博士5篇sci,8篇SCI论文,5篇TOP期刊——一个博士的独白
  8. 印度人撮合办公室恋情
  9. 职场上个人价值的三个驱动力
  10. Windows Server 2016之RDS部署之添加RD虚拟化主机