分布式学习02-CAP理论

文章目录

  • CAP三指标
    • 一致性
    • 可用性
    • 分区容错性
  • CAP不可能三角
    • P存在的必要性
    • CP理论
    • AP理论

CAP理论对分布式系统的特性做了高度抽象,将其抽象为一致性、可用性、分区容错性。 并对特征间的冲突做了总结:CAP不可能三角。

CAP三指标

  • 一致性(Consistency)
  • 可用性(Availability)
  • 分区容错性(Partition Tolerance)

一致性

客户端的每次读操作,不管访问哪个节点,要么读到的都是同一份最新的数据,要么读取失败。一致性强调的是各节点的数据一致,而不是数据完整。
例子:2 个节点的 KV 存储,原始的 KV 记录为“X = 1”
在这里插入图片描述
随后,客户端向节点1发送写请求“SET X= 2“
在这里插入图片描述
如果节点 1 收到写请求后,只将节点 1 的 X 值更新为 2,然后返回成功给客户端,这个时候节点 2 的 X 值还是 1,那么两个节点是非一致性的。
在这里插入图片描述
如果节点 1 收到写请求后,通过节点间的通讯,同时将节点 1 和节点 2 的 X 值都更新为2,然后返回成功给客户端,那么在完成写请求后,两个节点的数据就是一致的了,之后,不管客户端访问哪个节点,读取到的都是同一份最新数据。
在这里插入图片描述

一致性是分布式系统非常重要的一个特性,强调的是数据的一致。在客户端看来,集群和单机在数据一致性上是一样的。

  • 弊端:当发生分区故障的时候,有时不能仅仅因为节点间出现了通讯问题,节点中的数据会不一致,就拒绝写入新数据,之后在客户端查询数据时,就一直返回给客户端出错信息。

可用性

任何来自客户端的请求,不管访问哪个节点,都能得到响应数据,但不保证是同一份最新数据。强调的是服务可用,但不保证数据的一致。
例:用户可以向节点1和2发起读请求,如果不管节点间的数据是否一致,只要节点服务器收到请求,就响应X的值,那个2个节点是满足可用性的。
在这里插入图片描述

分区容错性

当节点间出现任意数量的消息丢失或高延迟的时候,系统仍然可以继续提供服务。不管集群内部出现什么样的数据同步问题,集群会一直运行,对外提供服务。强调的是集群对分区故障的容错能力。
在这里插入图片描述
上图如果节点1和节点2之间的通信出现故障时,集群仍然能够对外提供服务,则此时集群具备分区容错性。如果此时不能对外提供服务,则此时不具备分区容错性。

CAP不可能三角

CAP 不可能三角说的是对于一个分布式系统而言,一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)3 个指标不可兼得,只能在 3 个指标中选择 2 个。
在这里插入图片描述

P存在的必要性

只要有网络交互就一定会有延迟和数据丢失,而这种状况我们必须接受,还必须保证系统不能挂掉。所以就像我上面提到的,节点间的分区故障是必然发生的。也就是说,分区容错性(P)是前提,是必须要保证的。

在不存在网络分区的情况下,也就是分布式系统正常运行时(这也是系统在绝大部分时候所处的状态),就是说在不需要 P 时,C 和 A 能够同时保证。只有当发生分区故障的时候,也就是说需要 P 时,才会在 C 和 A 之间做出选择。而且如果各节点数据不一致,影响到了系统运行或业务运行(也就是说会有负面的影响),推荐选择 C,否则选 A。
上述理论作为理解,一般情况下分布式系统设计必须考虑分区容错性,也就是分区故障的影响。

  • 单击版的MySQL可以理解为CA模型,但此时已经不是分布式系统了。

CP理论

选择了一致性(C)的时候,如果因为消息丢失、延迟过高发生了网络分区,部分节点无法保证特定信息是最新的,那么这个时候,当集群节点接收到来自客户端的写请求时,因为无法保证所有节点都是最新信息,所以系统将返回写失败错误,也就是说集群拒绝新数据写入。

CP 模型的分布式系统,一旦因为消息丢失、延迟过高发生了网络分区,就影响用户的体验和业务的可用性。因为为了防止数据不一致,集群将拒绝新数据的写入

  • ZooKeeper,Etcd 和 HBase

AP理论

选择了可用性(A)的时候,系统将始终处理客户端的查询,返回特定信息,如果发生了网络分区,一些节点将无法返回最新的特定信息,它们将返回自己当前的相对新的信息。

AP 模型的分布式系统,实现了服务的高可用。用户访问系统的时候,都能得到响应数据,不会出现响应错误,但当出现分区故障时,相同的读操作,访问不同的节点,得到响应数据可能不一样。

  • 典型应用就比如 Cassandra 和 DynamoDB。

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

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

相关文章

PostgreSQL Docker Error – 5432: 地址已被占用

PostgreSQL Docker Error – 5432: 地址已被占用 今天在学习【Spring Boot React】价值79.9美元,全栈开发,搭建个人网站、做毕业设计、试试这套课程第17~21节视频的时候,发现运行docker run --name demo-postgres -e POSTGRES_PASSWORDpass…

循环生成对抗网络——CycleGAN

系列文章目录 GAN生成对抗网络介绍 目录 系列文章目录 前言 二、应用 三、解决的问题 1、图像转译任务 2、原理 四、调试好的源码 前言 CycleGAN(循环生成对抗网络)是一种用于图像到图像的转换的深度学习模型,由Jun-Yan Zhu等人在20…

Redis数据库与GO(一):安装,string,hash

安装包地址:https://github.com/tporadowski/redis/releases 建议下载zip版本,解压即可使用。解压后,依次打开目录下的redis-server.exe和redis-cli.exe,redis-cli.exe用于输入指令。 一、基本结构 如图,redis对外有个…

【ubuntu】ubuntu20.04安装chrome浏览器

1.下载 https://download.csdn.net/download/qq_35975447/89842972 https://www.google.cn/chrome/ 2.安装 sudo dpkg -i google-chrome-stable_current_amd64.deb 3.使用

【AI学习】Mamba学习(一):总体架构

论文:《Mamba: Linear-Time Sequence Modeling with Selective State Spaces》 作者1:Albert Gu,现在是CMU(卡内基梅隆大学)助理教授,曾在DeepMind 工作。多年来一直推动SSM架构发展。 作者2:Tri Dao,现为…

文件上传之%00截断(00截断)以及pikachu靶场

pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断, 第13关0x00截断 差不多了,今天先学文件上传白名单,在网上看了资料,差不多看懂了,但是还有几个地方需要实验一下&#…

老年人意外跌倒感知技术

意外跌倒是导致老年人仙游的6大原因之一,尤其多余80岁以上的老年人。跌倒已成为我国 65 岁以上老年人因伤致死的首位原因(来源:IT之家)。 跌倒最容易发生在两个地方,卫生间和过道。主要可能是卫生间没有安装扶手&…

【案例】平面云

教程案例视频:Unity Shader Graph - 云教程 开发平台:Unity 2022 开发工具:Unity ShaderGraph   一、效果展示 二、ShaderGraph 路线图 三、案例分析 核心思路:使用 Noise(噪声)模拟云层状态   3.1 说明…

C++异步操作实现线程池

文章目录 std::future用法async函数promise::get_futurepackaged_task::get_future 线程池实现 std::future std::future是C11标准库中的一个模板类,表示异步操作的结果 当我们在进行多线程中使用异步任务时,std::future是用来帮我们在需要的时候获取任务执行的结果 他的一个…

基于spring boot的篮球论坛系统

作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…

快停止这种使用U盘的行为!

前言 现在各行各业的小伙伴基本上都需要用电脑来办公了,你敢说你不需要用电脑办公? 啊哈哈哈,用iPad或者手机办公的也算。 有些小伙伴可能经常996,甚至有时候都是007。有时候到了下班时间,工作还没做完,…

图文深入理解Oracle DB企业级集中管理神器-GC的安装和部署

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。今天继续宅继续写。 本文承接上篇,介绍GC的安装和部署。咱们不急,慢慢来,饭要一口一口地吃才能吃得踏实自然。 限于篇幅,本节将重点介绍关键步…

VRRP协议个人理解+报文示例+典型配置-RFC2338/RFC3768/RFC5798/RFC9568

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。 因此本文将在VRRP协议报文的基础上进行介绍。 VRRP协议发展 关于VRRPv2基本原理,可重点参考2004年发布的RFC3768-Virtual Ro…

深入理解NumPy库:常用函数详解与数组操作指南

在数据科学和数值计算领域,NumPy无疑是一个强大的工具,它为Python提供了高效的多维数 组处理能力。无论是进行数据分析、构建机器学习模型,还是进行复杂的科学计算,NumPy都是 不可或缺的核心库之一。 numpy.array 是 NumPy 库中…

UART通信—基于江科大源码基础进行的改进和解析

我就不讲理论了,CSDN上大佬属实多,我就只讲代码了,串口的基本理论,大家去看其他大佬写的吧 一、源文件的组成 1、包含的头文件 stm32f10x.h 是STM32F10x系列微控制器的标准外设库(Standard Peripheral Library&…

【算法业务】数据驱动的用户增长实践、收益及思考

这篇内容是多年之前(2020年)的用户增长项目时自己写的总结,这里做一下对于实践和思考的回顾,便于知识的记录和经验分享,内容涉及用户增长理解、个性化推送系统框架、个性化推送问题建模、推送内容池构建、智能文案生成…

zotero使用koofr+google drive/onedrive同步

最早了解到这个思路是来自 知乎-【从零开始使用Zotero】(3) Zotero文献同步方式 和 How to Sync Zotero Files Using WebDAV and Google Drive with Koofr: A Step-by-Step Guide 虽然周围很多人都在用Readpaper这种web端的了,但是经常逛Arxiv而且zotero的web插…

MATLAB|电气互联系统有功-无功协同优化模型

目录 1 主要内容 模型示意图 目标函数 程序亮点 2 部分程序 3 程序结果 4 下载链接 1 主要内容 本程序基本复现《“碳中和”目标下电气互联系统有功-无功协同优化模型》,文献模型提供了一个很好的创新思路,把常规电气互联系统的调度和有功无功优化…

Android Framework AMS(01)AMS启动及相关初始化1-4

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容分析过多,因此拆成2个章节,本章节是第一章节&…

10.4学习

1.Transactional 注意事项: ①事务函数中不要处理耗时任务,会导致长期占有数据库连接。 ②事务函数中不要处理无关业务,防止产生异常导致事务回滚。 ●事务传播属性 ①REQUIRED(默认属性) 如果存在一个事务&#…