CAP原则理解

news/2024/11/20 13:40:42/

CAP原则概述

  • C:Consistency(一致性)
  • A:Availability(可用性)
  • P:Partition tolerance(分区容错性)

CAP原则是分布式系统设计的重要原则,其具体含义是指在一个分布式系统中,最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项,不能同时满足这三项。

CAP原则定义

一致性

一致性,顾名思义,就是指数据更新操作成功后,所有节点的数据在同一时间保持一致。一致性模型有很多,包括弱一致性、强一致性、最终一致性等等。大多数人认为CAP原则中的一致性指的是强一致性。例如,在Zookeeper中,只有数据更新操作同步到所有节点后,才会返回写入成功。

可用性

可用性要求系统内的节点们接收到了无论是写请求还是读请求,都要能处理并给回响应结果。只是它有两点必须满足的条件:

条件 1:返回结果必须在合理的时间以内,这个合理的时间是根据业务来定的。业务说必须 100 毫秒内返回,合理的时间就是 100 毫秒,需要 1 秒内返回,那就是 1 秒,如果业务定的 100 毫秒,结果却在 1 秒才返回,那么这个系统就不满足可用性。

条件 2:需要系统内能正常接收请求的所有节点都返回结果。这包含了两重含义:如果节点不能正常接收请求了,比如宕机了,系统崩溃了,而其他节点依然能正常接收请求,那么,我们说系统依然是可用的,也就是说,部分宕机没事儿,不影响可用性指标。如果节点能正常接收请求,但是发现节点内部数据有问题,那么也必须返回结果,哪怕返回的结果是有问题的。比如,系统有两个节点,其中有一个节点数据是三天前的,另一个节点是两分钟前的,如果,一个读请求跑到了包含了三天前数据的那个节点上,抱歉,这个节点不能拒绝,必须返回这个三天前的数据,即使它可能不太合理。

分区容错性

首先解释下什么是分区。在一个分布式网络中,各个节点之间本来是正常互联互通的。但是,不论是网络故障,还是机器故障都会导致该网络的某些节点不连通。这些不连通的区域就叫分区。
当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。

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

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

总的来说就是,数据存在的节点越多,分区容忍性越高,但要复制更新的数据就越多,一致性就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性就会降低。

CAP的证明

https://zhuanlan.zhihu.com/p/335617791


http://www.ppmy.cn/news/431745.html

相关文章

B046-cms01-后台搭建 界面修改 分页 GirdManager

目录 cms项目介绍Maven跳转到后台首页视图解析器页面和静态资源准备资源分布controller控制器 跳转到文章展示页面index.JSPArticleControllerarticle.jsp gridManager初体验和显示文章数据时间和是否启用显示Articlearticle.jsp 展示文章类型ArticleServiceImplarticle.jsp 按…

【FPGA入门】第二篇、ISE软件的使用

目录 第一部分、新建工程 第二部分、添加顶层文件 第三部分、添加管脚约束文件 第四部分、生成bit文件 第五部分、连接开发板,下载bit文件 第六部分、总结 第一部分、新建工程 第一步、如果提前建立了工程文件夹,那么这里就需要去掉生成子文件夹的…

如何在Mac电脑中设置启动台的快捷键?

Mac电脑中的启动台,是Mac系统存放所有应用程序的地方。所以在日常使用电脑的过程中,我们会使用很多次的启动台,如何设置启动台的快捷键?下面分享在Mac电脑中设置启动台快捷键的操作步骤。 1、打开Mac电脑中的系统偏好设置&#x…

Windows系统常用快捷键以及设置

目录 winr输入“desk.cpl”快速调出屏幕分辨率、显卡详情刷新率 快速调出投影设置 Win7win10自带截图工具 -快捷键 调出搜索框 查看系统的激活情况 winr输入“desk.cpl”快速调出屏幕分辨率、显卡详情刷新率 快速调出投影设置 Win7win10自带截图工具 -快捷键 调出搜索框 …

计算机键盘怎么换键,电脑键盘快捷键怎么更改

许多用户朋友想更改自己电脑的快捷键?下面学习啦小编整理了解决更改电脑快捷键的方法,希望能帮到大家O(∩_∩)O哈哈~ 更改电脑快捷键的方法 点击电脑屏幕的最左下角的“开始菜单”,此时弹出总程序菜单,如图: 点击【所有程序】&am…

计算机快捷键怎么设置方法,打开软件快捷键怎么设置 电脑软件快捷键设置教程-电脑教程...

当我们想打开某软件时,往往会通过双击图标来实现,或者将常用软件固定在任务栏,其实,我们还可以这样做,对常用的一些软件设置快捷键,方便使用和启动,那么今天小编就为大家带来如何设置常用软件启…

怎么更改计算机快捷键,如何重新设置电脑中的所有快捷键

无法重新设置电脑系统中的所有快捷键,只能分别设置一些打开软件、功能的快捷键,一些基础操作的快捷键是无法重新设置的。以下以输入法的快捷键,打开应用程序的快捷键为例,介绍调整系统调整快捷键的方法。以下是详细介绍&#xff1…

快捷输入法怎么设置

快捷键可以帮助我们在工作时提高工作效率,搜狗输入法就有这一项功能,那么快捷输入法怎么设置呢? 前言 快捷键可以帮助我们在工作时提高工作效率,我们常用的输入法,比如搜狗输入法,也有快捷键这一项功能&am…