简述 CAP 定理【重要】

简介: 简述 CAP 定理【重要】

CAP 定理示意图:

一、CAP 理论概述:

CAP 定理告诉我们,一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其中的两个。一致性和可用性永远无法存在一个两全其美的方案,只能尽可能地适用于某种情形。

二、那一致性,可用性,分区容错性到底指的是什么?
一致性:所有节点在同一时间的数据完全一致。

在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,如果能够针对一个数据项的更新操作执行成功后,所有的用户都可以读取到其最新的值,那么这样的系统就被认为具有一致性(或严格一致性)。

可用性:系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。

这里重点看下 “有限的时间内” 和 “返回结果”,有限的时间是指对于用户的一个操作请求,系统必须能够在指定的时间(即响应时间)内返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。

分区容错性:系统在遇到某节点或者网络分区故障的时候,仍然能够对外满足可用性或一致性的服务,除非整个网络环境都发生了故障。

三、在分布式系统中分区容错性是一定要满足的,为什么?怎么满足?

当我们的数据项只在一个节点保存时,一旦出现分区,那么其他部分就访问不到这个数据了,这是不能容忍的,所以我们需要把数据分布在多个节点上,那么当出现分区后,也不会影响我们拿到数据,从而提高容错性。但是当我们把数据放在多个节点中后,又会带来数据一致性的问题,为了保证数据一致,每次写(事务)操作就需要等待所有节点执行成功,而这等待又会带来可用性的问题.

四、最终一致性

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到数据一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不要求实时保证系统数据的强一致性。

事实上,最终一致性并不是只有那些大型分布式系统才涉及的特性,许多现代的关系型数据库都采用了最终一致性模型。

简述 CAP 定理_Java 大数据运动猿的博客 - CSDN 博客

相关文章
|
JavaScript 前端开发
原型与原型链,数形结合搞懂原型与原型链,真正理解原型链,面试官直呼内行。
原型与原型链,数形结合搞懂原型与原型链,真正理解原型链,面试官直呼内行。
373 0
|
数据安全/隐私保护 Windows
QT应用编程: QGraphicsView+QGraphicsTextItem动态编辑文本
QT应用编程: QGraphicsView+QGraphicsTextItem动态编辑文本
1107 0
QT应用编程: QGraphicsView+QGraphicsTextItem动态编辑文本
|
缓存 算法 NoSQL
【分布式详解】一致性算法、全局唯一ID、分布式锁、分布式事务、 分布式缓存、分布式任务、分布式会话
分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定的约束条件下相同,称之为副本一致性(consistency)。副本一致性是针对分布式系统而言的,不是针对某一个副本而言。强一致性(strong consistency):任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据。强一致性是程度最高的一致性要求,也是实践中最难以实现的一致性。单调一致性(monotonic consistency):任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。
1376 0
|
网络协议
TCP协议中TIME_WAIT状态的分析
`TIME_WAIT`状态是TCP协议设计中的一个重要组成部分,它通过确保数据传输的可靠性和连接的正确关闭来提升网络通信的稳定性。尽管 `TIME_WAIT`可能导致资源占用,适当的系统配置和网络编程实践可以最小化其潜在的负面影响。理解 `TIME_WAIT`状态及其背后的逻辑是每一位网络开发人员和系统管理员必须掌握的知识点。
1047 1
|
网络安全 数据安全/隐私保护 Windows
websocket优缺点
websocket优缺点
777 2
|
NoSQL 数据库
浅谈CAP原则
浅谈CAP原则
610 1
|
API 网络架构 Docker
podman与docker对比
Docker和Podman都是用于创建和管理容器的工具,它们对开放式容器倡议(OCI)的Docker和Podman都是用于创建和管理容器的工具,它们对开放式容器倡议(OCI)的运行时和镜像规范的支持以及映射命令以创建和管理容器的能力是相同的。然而,二者之间存在一些显著的区别。
584 1
公安部备案域名证书怎么获得?阿里云域名证书申请下载方法
在阿里云获取域名证书,需登录域名管理控制台,点击“域名列表”,选择域名后点击“管理”,再点击左侧的“域名证书下载”。过程免费且快速。
2118 3
|
移动开发 小程序 API
uniapp中uview组件库丰富的ActionSheet 操作菜单使用方法
uniapp中uview组件库丰富的ActionSheet 操作菜单使用方法
930 1