【分布式篇】什么是CAP定理?

news2024/11/28 16:33:58

要求

  • 理解 CAP 定理

  • 知道常见的一致性级别

CAP 定理

  • Consistency 一致性:访问分布式系统中任意节点,总能返回一致的结果

    • Every read receives the most recent write or an error

  • Availability 可用性:分布式系统总能向客户端返回响应

    • Every request receives a (non-error) response, without the guarantee that it contains the most recent write

  • Partition tolerance 分区容忍:当分布式系统节点间通信发生了消息丢失或消息延迟,仍然允许系统继续运行

    • The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes

CAP 定理:最多三选二,无法兼得,通常在 CP 或者 AP 之间做出选择

不一致的产生

client 向 Node1 写入新值 v1

写入成功 Node1 更新成 v1

Node1 在没有将变更同步到 Node2 时,就向客户端返回了应答

client 发起向 Node2 的读操作

返回了旧值 v0(不一致)的结果

保证一致性

client 向 Node1 写入新值 v1

写入成功 Node1 更新成 v1,此时不能立刻向 client 返回应答,而是需要将 v1 同步到 Node2

同步 v1 成功

此时才能向 client 返回应答

 

如果此时 client 再去访问 Node2,不会出现不一致的情况

保 CP 失 A

当发生了网络分区,Node1 与 Node2 已经失去了联系,这时仍想对外提供服务(保 P)

client 向 Node1 写入新值 v1

写入 Node1 成功,但无法同步至 Node2

这时为了保证一致性,Node1 不能向 client 返回应答,造成操作挂起无法完成(失去可用性)

保 AP 失 C

当发生了网络分区,Node1 与 Node2 已经失去了联系,这时仍想对外提供服务(保 P)

client 向 Node1 写入新值 v1

写入 Node1 成功,但无法同步至 Node2

为了保证可用性,向 client 返回了应答(但牺牲了一致性)

一致性级别

CP 和 AP 之间需要做权衡,其实根据需求不同,也可以将一致性划分成几个级别,在这些级别里做一个权衡。

  • 强一致性:系统写入什么,读出来的也会是什么,但实现起来往往对性能影响较大,例如之前 CP 的例子

    • 例如:火车站售票,有就是有,没有就是没有,不能出现不一致的情况

    • 典型算法:Paxos、Raft、ZAB

  • 弱一致性:系统写入成功后,不承诺立刻可以读到写入的值,也不承诺具体多久后数据能达到一致,还可以细分为:

    • 会话一致性,同一个客户端会话中可以保证一致,其它会话不能保证

    • 用户一致性,同一个用户中可以保证一致,其它用户不能保证

    • 例如:网上购物,在商品详情页看到库存量还有好多,下单的瞬间才被提示“库存量不足”,实际上商品详情页展示的库存并不是最新的数据,只是在某个流程上才会做准确的检查

  • 最终一致性:是弱一致性的特例,保证在一定时间内,能够达到一个一致的状态

    • 例如:转账,转账完成后,会有一个提示,您的转账会在 24 小时内到账,一般用户也能接受,但最终必须是一致的

    • 典型协议:Gossip  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IoT Studio快速搭建前端

打开阿里云平台 阿里云-计算,为了无法计算的价值 (aliyun.com) 打开物联网平台 然后点击右边的控制台打开物联网平台物联网平台 (aliyun.com) 创建项目和关联产品 备注一个项目可能包括多个产品 开启空调设备模拟调试(通过代码书写实现效果&#xff0…

白帽黑客最常用的十款工具,你知道几款?

1 Nmap nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络…

宿主启动没有在AndroidManifest中声明的Activity/Service

启动没有在AndroidManifest中声明的插件Activity 在前一篇文章中,我们已经可以在宿主中启动一个插件中的Activity了,但该Activity 必须在宿主的AndroidManifest文件中声明,否则会抛出ActivityNotFound异常。 我们需要做的是欺上瞒下的做法&a…

kafka题集 - kafka 命令行操作面试题总结

文章目录 01. kafka 主题命令行操作02. kafka 生产者命令行操作03. kafka 消费者命令行操作04. Kafka 命令行工具有哪些常用的命令?05. 如何创建一个 Kafka 主题?06. 如何列出 Kafka 中所有的主题?07. 如何向 Kafka 主题发送消息?…

六种基本网络拓扑结构详解

目录 1、总线型网络拓扑结构 2、星型网络拓扑结构 3、环形网络拓扑结构 4、树型网络拓扑结构 5、网状网络拓扑结构 6、混合网络型拓扑结构 常见的网络拓扑结构有以下6种:1.总线型网络拓扑结构;2.星型网络拓扑结构;3.环形网络拓扑结构&a…

Oracle SQL 性能优化

向量I/O 回表 SQL 不一样,plan 一样的 除了统计信息,session 参数导致COST不对 历史执行计划 filter 不同于nest loop 会distinct 之类 放进PGA 不再是SGA中块访问了吧 sql profile fzw rman target / 慢的原因 降低驱动表的row source集 指定nl表的驱动…

EasyRecovery16绿色版安装下载及使用教程

如果你已经在下载了PC版本的EasyRecovery,那么该如何安装EasyRecovery呢?现在就呈上EasyRecovery教程,以便顺利完成安装。EasyRecovery不仅能够恢复多种类型的数据,更能够适用于不同媒体介质,其中包括计算机&#xff0…

Kylin从入门到精通以及案例实操系列

1、Kylin 基础知识 1.1、了解 Kylin 的基本概念、原理和架构 1.1.1、Kylin 定义 Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc开发并贡献…

书评 | 《新程序员005:开源深度指南 新金融背后的科技力量》

目录 书评 | 《新程序员005:开源深度指南 & 新金融背后的科技力量》 内容介绍 书籍优点 书评 书评 | 《新程序员005:开源深度指南 & 新金融背后的科技力量》 内容介绍 《新程序员005:开源深度指南&新金融背后的科技力量》特…

八、Spring Cloud Alibaba-seata分布式事务

一、引言 1、事务简介 事务(Transaction)是访问并可能更新数据中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语向组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomic…

用Java 的锁机制实现多线程售票案例

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"及“慕课网公众号”! 作者:王军伟Tech | 慕课网讲师 1. 前言 本文内容主要是使用 Java 的锁机制对多线程售票案例进行实现。售…

logback高级特性使用

一、业务需求 日志级别的分类 日志的级别分为: trace:微量,少许的意思,级别最低info:普通的打印信息debug:需要调试时候的关键信息打印warn:警告,不影响使⽤,但需要注…

windows系统python3.7版本pyspider安装

环境:很多的python版本都尝试过安装pyspider,网上多数让python3.6安装,说是这个环境是最佳的环境,测试安装最方便快捷,但是一直报result_worker starting…!!!,卡死在界面…

软件测试技术才是王道,43岁照样拿到年薪70W+,太强了...

最近挺丧的, 可能是之前弦绷的有点紧,现在有点受不了了。 所以突然就泄了气,每天忙完工作的事后就躺在家里打游戏。其实感觉每年都有一段时间是这样丧的。所以我自己其实并不是特别努力的类型,我没办法一直绷着弦的去卷&#xff0…

0基础想入门互联网选择什么好?

互联网岗位划分 研发:技术岗,需要有相关的专业知识。 测试:技术岗,通过相关的程序查找产品中相应的bug。 设计:需要美术素养。 产品经理:设计制定产品的原型,制定每个功能的需求以及输出相应…

论文解读 | IROS 2022:MV6D:在RGB-D图像上使用深度逐点投票网络进行多视角6D姿态估计

原创 | 文 BFT机器人 01 研究背景 在计算机视觉领域,6D姿态估计是一种重要的任务,用于确定物体在3D空间中的位置和方向。它在许多应用领域具有广泛的应用,如机器人操作、虚拟现实、增强现实、物体跟踪等。 然而,传统的6D姿态估计方…

Jmeter实现分布式并发

Jmeter实现分布式并发,即使用远程机执行用例。 环境: VMware Fusion Windows系统是win7。 操作过程 1、Master在jmeter.properties添加remote_hosts 2、Slave在jmeter.properties添加server_port 同时把remote_hosts修改为和主机(Master…

超100篇! VAD论文梳理汇总!

GitHub的一位博主整理了上百篇语音活动检测(VAD)的论文,按照其中使用的特征方法以及适用的环境进行了分类整理,时间跨度为从198*年至2019年。此外,还提供了几个VAD代码,它们的性能表现较好。需要的同学可以…

我的创作纪念日---[需要更开阔的视野!]

文章目录 头绪收获日常 憧憬英语人工智能 希望 头绪 工作很长时间之后,才发现知识的根本,还是在于积累。俗话说好记性不如烂笔头。不管是特定产品相关的知识还是系统类的知识,又或者是语言类的知识,都有很多知识点需要积累。有了…

不会数据分析?无从下手?一文帮你打开数据分析思路

掌握了很多数据分析工具和技能,却依然做不好数据分析。 面对具体的业务问题,我们还是容易两眼一抹黑?除了数据和专业之外,还需要一定的方法论支撑。 文章有点长(误区解释方法论分享)但干货满满&#xff0c…