CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标:

Consistency(一致性): 所有的节点上的数据时刻保持同步,强一致性;
Availability(可用性): 每个请求都能接受到一个响应,无论返回的数据是否一致;
Partition tolerance(分区容错性): 系统应该能持续提供服务,即使在遇到某节点或网络分区故障的时候。
它们的第一个字母分别是 C、A、P。
Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。

下面分别讲述下这三个概念:

1.分区容错性
相对于单点系统,分布式系统会部署在多台机器上,机器之间有可能是跨区域的,比如服务器机房一个在北京,一个在上海,如果在这两个机房之间构建了分布式系统,那么这两个区域的机器是需要通信的,而只要通信就有可能出现通信失败,所以分区容错性P是我们在设计分布式系统中必须要考虑到的问题。

2.一致性
一致性是说客户端从分布式系统中拿数据,不管从那一台机器中获取,都应该是最新的。

假设某一时间client向server1服务器更新vo->v1,之后不管从server1还是从server2取值都是v1,这样才满足一致性。而如果cleint往server1写过数据后,从server2中去获取值,此时server1和server2之间还未同步,那么就会依然获取到vo,那么就不满足一致性。

3.可用性
可用性是指,不管任何时候,client向任意一台server发起请求,都能得到响应,不管获得的数据是v0还是v1。

一致性和可用性之间的矛盾

因为分区容错P的必然性,所以一致性C和可用性A无法同时成立。

如果保证 Server2的一致性,那么 Server1 必须在写操作时,锁定 Server2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,Server2 不能读写,这样可用性就无法满足。

如果保证 Server2 的可用性,那么就不能锁定 Server2,所以一致性不成立。

综上所述,Server2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求强一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到强一致性。

分布式理论CAP定理相关推荐

  1. 分布式理论-CAP定理

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

  2. 分布式理论——CAP定理

    CAP定理:对于一个分布式计算系统来说,不可能同时满足以下三点 一致性(Consistency):所有节点访问时都是同一份最新的数据副本 PS:客户端在数据写入任何一台服务器并成功响应后,之后的客户端 ...

  3. 分布式理论-CAP理论

    一 CAP理论简述      海量数据管理中的一致性理论,包括CAP理论,BASE理论,数据一致性理论模型,以及现有的经典数据一致性技术.其中CAP (Consistency, Availabilit ...

  4. 分布式理论:CAP、BASE | 分布式存储与一致性哈希

    文章目录 分布式理论 CAP定理 BASE理论 分布式存储与一致性哈希 简单哈希 一致性哈希 虚拟节点 分布式理论 CAP定理 一致性(Consistency): 在分布式系统中的所有数据副本,在同一 ...

  5. 分布式系统概念 | 分布式理论:CAP、BASE

    文章目录 CAP定理 BASE理论 CAP定理 一个分布式系统不可能同时满足一致性(Consistency).可用性(Availability).分区容错性(Partition Tolerance)这 ...

  6. CAP定理与BASE理论

    CAP定理与BASE理论 CAP定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想.2年后,麻省理工学院的 Seth Gilb ...

  7. 分布式--CAP定理

    原文网址:分布式--分布式架构_IT利刃出鞘的博客-CSDN博客 简介 本文介绍分布式的CAP定理. CAP定理概述 说明 一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A ...

  8. 分布式CAP定理,为什么不能同时满足三个特性?

    在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理. 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可 ...

  9. 分布式理论之BASE理论

    原文链接:https://segmentfault.com/a/1190000018019595https://segmentfault.com/a/1190000018019595 什么是BASE理 ...

最新文章

  1. 如何使用React提前三天计划
  2. Global.asax使用1
  3. 范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
  4. 统计函数——汇总统计时间类数据
  5. matlab对图像进行均值滤波_用K均值进行图像分割
  6. Java面试题及答案,java底层实现原理
  7. leetcode46. 全排列(回溯)
  8. 聊聊最近的CPA心得吧
  9. 24.两两交换链表中的节点(力扣leetcode) 博主可答疑该问题
  10. Socket服务端与网络调试助手模拟串口服务器通讯示例
  11. 南航计算机考研专业课复习重点
  12. 三星GAST考试分享
  13. 批量给 Word、Excel、PPT 和 PDF 设置文件保护打开密码和只读密码
  14. 新手云服务器系统,新手云服务器系统
  15. iphone相册照片路径_如何使用相册整理iPhone照片
  16. Qt之预览WPS的word文件
  17. 最好用的股市技术指标
  18. python中ipaddr库用法详解
  19. python写后端提供api_python写后端api
  20. 输入一个有大写和小写的字符串,把其中的大写转化为小写,小写转化为大写。

热门文章

  1. “捆绑”住用户,需要优秀的产品(经验分享)
  2. 【job】2013年5-5阿里巴巴暑期实习招聘笔试题目及部分答案
  3. 让你的Silverlight程序部署在任意服务器上
  4. 学习笔记(51):Python实战编程-ListBox
  5. python怎么用lambda和map函数_Python之lambda匿名函数及map和filter的用法
  6. c#操作html dom元素,C#获取与修改HTML DOM元素信息
  7. java tbase_使用Java从firebase获取数据
  8. springboot 关闭懒加载_SpringBoot新手入门篇
  9. 2018-2019-1 20165202 20165210 20165214 实验一 开发环境的熟悉
  10. [Vue]组件——通过$emit为组件自定义事件