上图是CAP原理图,看到之后,不禁引入下面几个问题,让我们一一带着问题去了解CAP。

1.什么是CAP?

2.什么是分区?

3.为什么只有3选2?

4.可用的抉择?

1. 什么是 CAP 定理

CAP原理指:一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。这三个要素,最多只能实现其中俩点,三者不能兼得。

一致性(C):在分布式系统中,访问所有节点中的数据是一致的(严格一致性)。

可用性(A):在集群中某一节点出现故障后,集群整体是否能响应,客户端的读写请求。

分区容错性(P):分区相当于系统时限要求,系统如果不能在时限内达成数据的一致性,就意味着出现了分区情况;当前操作,就需要在C和A中2选一,进行抉择。

2. 什么是分区

数据的复制是冗余的过程,冗余会增加可用性,可以有效负载均衡读取。而数据的分区是一个整体转换为局部的过程。将整体拆分,局部存储在多个较小空间内。这种思想映射到计算机上,当数据量过大,单个存储节点不足与存储这些数据时,就需要将数据集拆解并规整。数据分区的意义,它是用来提高数据系统的可扩展性而引入的技术方法。

3. 为什么只能 3 选 2

CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP,有如下结果。

4.可用的抉择

CAP理论在分布式存储系统中,最多只能实现上面的两点。而由于网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地。

  1. 数据库事务一致性需求
      很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求并不高。允许实现最终一致性。

  2. 数据库的写实时性和读实时性需求
      对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说发一条消息之 后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。

  3. 对复杂的SQL查询,特别是多表关联查询的需求
      任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

分布式基础--CAP原理相关推荐

  1. 分布式数据库CAP原理

    分布式数据库CAP原理 CAP简介 CAP理论 CAP总结 CAP简介 传统的关系型数据库事务具备ACID: (1)A :原子性 (2)C :一致性 (3)I :独立性 (4)D :持久性 分布式数据 ...

  2. redis学习-分布式数据库CAP原理

    传统的ACID分别是什么 A (Atomicity) 原子性 C (Consistency) 一致性 I (Isolation) 独立性 D (Durability) 持久性 关系型数据库遵循ACID ...

  3. base cap 分布式_分布式基础(1):CAP原理、BASE思想和最终一致性

    CAP,BASE和最终一致性是NoSQL数据库存在的三大基石. CAP C: Consistency 一致性 A: Availability 可用性(指的是快速获取数据) P: Tolerance o ...

  4. 分布式CAP原理:一致性、可用性、分区容错

    目录 CAP概念 分区容错(Partition tolerance) 一致性(Consistency) 可用性(Availability) 一致性和可用性之间的矛盾 使用场景 CAP概念 单机系统由于 ...

  5. CAP原理应用与分布式矩阵

    CAP原理是描述一致性,可用性,和分区兼容性的理论,但这个原理用在实际情况下时往往让人很困惑.什么样的情况适用于这样的原理?有哪些先决条件?如何创建一个同时满足一致性和可用性,分区兼容性的分布式系统? ...

  6. 分布式数据库中CAP原理CAP+BASE

    一.传统的ACID 分别是什么 1.A: atomicity 原子性 2.C: Consistency 一致性 3.I: Isolation 独立性 4.D: Duraility 持久性 二.CAP ...

  7. 分布式系统以及CAP原理

    分布式系统以及CAP原理 文章首发于微信公众号:大数据每日哔哔.文章:分布式系统以及 CAP 原理 ● 本文主要分为以下几个部分:<br />什么是分布式系统<br />对 C ...

  8. 来!带你深入理解分布式事务:原理与实战!

    随着互联网的不断发展,互联网企业的业务在飞速变化,推动着系统架构也在不断地发生变化.总体来说,系统架构大致经历了 单体应用架构→垂直应用架构→分布式架构→SOA架构→微服务架构的演变. 如今微服务技术 ...

  9. 分布式系统:FLP Impossibility/CAP原理

    分布式系统: 分布式系统的概念: 分布式系统是一组自治计算机系统的集合,这些系统在物理上是分开的,但通过配备分布式系统软件的集中式计算机网络连接起来.自治计算机将通过共享资源和文件并执行分配给它们的任 ...

最新文章

  1. python判断密码是否正确_第一个python程序-判断登陆用户名和密码是否正确
  2. python小游戏系列记忆宫殿,儿时的回忆
  3. java环形数组_Java数组模拟环形队列
  4. c语言编程数学黑洞,一个数学黑洞——6174
  5. 一个经典的对象级别插件的开发
  6. javadoc解析成java 生成 api文档
  7. 你会装系统吗?(安装macOS系统-使用OpenCore引导吃上黑苹果)
  8. SpringBoot+Vue+Cas单点登录与登出
  9. 程序员跟产品经理打起来了,事情的真相是...
  10. 进化树构建的方法原理及检验
  11. 信号与系统——卷积和
  12. java高德地图api开发平台_【高德地图API】从零开始学高德JS API(一)地图展现...
  13. 经典背包问题3——背包问题求方案数 、背包问题求具体方案
  14. 一篇文章带你认识数学建模中的方程与方程组
  15. 那个经常加班的人后来怎么样了?
  16. Excel 2007版的常用功能(1):Excel基本操作
  17. 一个完整的python文件即是一个模块_README.md
  18. fiddler抓包工具安装,配置https、移动端抓包、弱网设置
  19. 北京科技大学计算机保研,北京科技大学考研/保研怎么样?这些数据必须知道!...
  20. latex中输入数学中的“属于” 符号

热门文章

  1. libusb使用指南
  2. linux创建用户,添加及修改shell
  3. Linux之Xinetd服务介绍
  4. Excel相关操作(二)Springboot框架使用easyexcel工具
  5. Linux:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cann
  6. python全套教程百度云-老男孩python全套视频教程百度云资源下载
  7. 关于人工智能不会使大脑变懒惰的议论文_自律,拒绝懒惰和放纵,不枉余生
  8. mongoshake
  9. 如何一键拼图?不妨试试这三个一键拼图软件
  10. 主菜单在c语言中的作用,C语言 如何实现返回主菜单????