分析&回答


CAP 理论是针对分布式数据库而言的,它是指在一个分布式系统中,一致性(Consistency, C)、可用性(Availability, A)、分区容错性(Partition Tolerance, P)三者不可兼得。

一致性(C)

一致性是指“all nodes see the same data at the same time”,即更新操作成功后,所有节点在同一时间的数据完全一致。

一致性可以分为客户端和服务端两个不同的视角:

  • 从客户端角度来看,一致性主要指多个用户并发访问时更新的数据如何被其他用户获取的问题;
  • 从服务端来看,一致性则是用户进行数据更新时如何将数据复制到整个系统,以保证数据的一致。

一致性是在并发读写时才会出现的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。

可用性(A)

可用性是指“reads and writes always succeed”,即用户访问数据时,系统是否能在正常响应时间返回结果。

好的可用性主要是指系统能够很好地为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。在通常情况下,可用性与分布式数据冗余、负载均衡等有着很大的关联。

分区容错性(P)

分区容错性是指“the system continues to operate despite arbitrary message loss or failure of part of the system”,即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

分区容错性和扩展性紧密相关。在分布式应用中,可能因为一些分布式的原因导致系统无法正常运转。分区容错性高指在部分节点故障或出现丢包的情况下,集群系统仍然能提供服务,完成数据的访问。分区容错可视为在系统中采用多副本策略。

相互关系

CAP 理论认为分布式系统只能兼顾其中的两个特性,即出现 CA、CP、AP 三种情况,如图所示。

CA without P

如果不要求 Partition Tolerance,即不允许分区,则强一致性和可用性是可以保证的。其实分区是始终存在的问题,因此 CA 的分布式系统更多的是允许分区后各子系统依然保持 CA。

CP without A

如果不要求可用性,相当于每个请求都需要在各服务器之间强一致,而分区容错性会导致同步时间无限延长,如此 CP 也是可以保证的。很多传统的数据库分布式事务都属于这种模式。

AP without C

如果要可用性高并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了实现高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。

反思&扩展


在实践中,可根据实际情况进行权衡,或者在软件层面提供配置方式,由用户决定如何选择 CAP 策略。

CAP 理论可用在不同的层面,可以根据 CAP 原理定制局部的设计策略,例如,在分布式系统中,每个节点自身的数据是能保证 CA 的,但在整体上又要兼顾 AP 或 CP。

对于一个分布式系统而言,P是前提,必须保证,因为只要有网络交互就一定会有延迟和数据丢失,这种状况我们必须接受,必须保证系统不能挂掉。所以只剩下C、A可以选择。要么保证数据一致性(保证数据绝对正确),要么保证可用性(保证系统不出错)。

说说Base 理论是什么?


为了大家更加方便的刷题,我们对文章进行了分类和整理,免费为大家提供刷题服务。程序员不欺骗程序员,赶紧扫码小程序刷起来!

为了一站式解决面者刷题问题,部分内容可能存在摘录情况,如有侵权辛苦您留言联系我们,我们会删除文章或添加引用文案,Thanks!

说说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. cp命令的编写——浅谈系统调用
  2. ASP.NET Core MVC Tag Helpers 介绍
  3. [阅读笔记]Zhang Y. 3D Information Extraction Based on GPU.2010.
  4. centos7 编译安装mysql-5.7.18
  5. 为什么美团全面推动 K8S 落地,咬紧牙关也要搞云原生?
  6. 内网外网同时连接方法
  7. 16年的大数据经验,为了搞定数字化转型,我和老板做了个赌注
  8. uml活动图 各个功能的操作流程和分支_uml活动图
  9. Leetcode 318. Maximum Product of Word Lengths
  10. PostgreSQL 13 新特性之 FETCH FIRST WITH TIES
  11. 在网页上面录制声音(chrome、firefox浏览器可用)
  12. Should be compatible with WP_Widget::widget($args, $instance)
  13. UE4 昵称修改后客户端的同步
  14. 乐趣国学—品读“富润屋,德润身。”中的智慧
  15. 微信小程序聊天客服工具
  16. Mac:TexStudio 中文论文模版
  17. Nova组件源码分析之冷迁移与Resize
  18. 推荐学java——Spring之AOP
  19. 【数据库】数据库设计一
  20. 收藏微软面试智力题 (附答案)

热门文章

  1. go语言实现网易云音乐爬虫
  2. 混迹职场N年后,人过中年,如何不被社会所淘汰?
  3. 杨辉三角杨辉三角 || (JavaScript)
  4. 【图像去噪】基于三边滤波器实现图像去噪附matlab代码
  5. 关于H.264 x264 h264 AVC1
  6. Android-PickerView系列之源码解析篇(二)
  7. Zion无代码赋能企业中台构建
  8. PHP实验报告 点餐系统,点餐系统软件工程实验报告.doc
  9. 前端复习之DOM、BOM
  10. url scheme 实现跳转到小程序页面