C(一致性) A(可用性) P(分区容错性)中一致性和可用性的理解 和 BASE

怎么理解:一致性和可用性不可兼得呢?

现在有3个节点node1、node2、node3,其中node3因为网络原因暂时不可用了,但是,依然有些请求已经到达了, node1和node2数据是同步的,node3节点虽然存活,但是因为网络原因,并没有同步过来最新数据。

如何保证:node3的数据也是对的呢? 那就是先阻塞哪里,等网络恢复,数据同步好了再返回。 此时就是:牺牲了可用性,恢复前暂时不可用了嘛! 所以说:为了一致性, 可用性可能暂时不可用。C(一致性) A(可用性) 二选一。

而P:分区容错性,也就是,有些节点挂掉了,依然要保持系统能提供服务,这肯定是必须的。

所以:要么是CP,要么是AP。

但是,由于分布式系统各个系统之间是通过网络连接的。网络是复杂的,因此,一定会出现P, 也就是分区容错性(健康和不健康的分开)这种问题。

-------------

思考题:那么es是cp还是ap呢?

es当有节点故障时,是先发出警告,等会就会从集群中被移除,因此这个节点变得不可用。它上面的数据会被分片到其它可用的节点上,最终变得可用。 因此es是牺牲了可用性,因此es是CP。

-----------base理论

BA:基本可用。 // 允许损失部分可用性,保证核心可用。

        如:es有问题的节点恢复后,又会重新加入集群中,又可用。

S:软状态。// 允许出现临时不一致

E:最终一致性。

--------------------

得失的权衡!

---------BASE理论解决分布式事务问题

1.AP模式:各个事务分别提交,允许出现结果不一致,然后采用补救措施。恢复数据,最终保证一致。 (各个事务提交后,看看对方有问题没有,一看有问题,采用补救措施)

2.CP: 各个事务执行后相互等待,都没问题了,同时提交。出现问题了,同时回滚。

缺点就是:提交前,服务是不可用的。

因此,必须有协调者。当有失败时,协调者进行通知。

子事务是:分支事务。 协调者是:全局事务。

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

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

相关文章

Django_admin数据管理后台

目录 一、基础操作 二、自定义后台操作数据行为 源码等资料获取方法 admin数据管理后台是django内置的一个后台管理界面,能查看已注册模型类的数据结构,以及对数据的增删改。 一、基础操作 1.1 检查项目目录下的urls.py有没有如下配置 1.2 创建djan…

技术讨论:我心中TOP1的编程语言

欢迎关注博主 六月暴雪飞梨花 或加入【六月暴雪飞梨花】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术…

关于我对杀毒软件的个人见解(六)

这期我们来聊一聊火绒安全。 说到火绒,相信大家都并不陌生。 火绒是一款国产的杀毒软件,图标是一个黄色的盾牌。大家对火绒的第一印象是———杀毒质量好。可真的是这样吗? 作者在这里其实对火绒安全的杀毒能力是可以肯定的,但是万…

什么是Ajax,其底层原理是什么

在我们平时做项目时,基本选择使用像axios和fetch这样的工具库来处理数据交互。这些工具库提供了简洁而强大的API,使得开发人员能够轻松地进行HTTP请求和处理响应。然而,很少有人真正了解它们背后的底层原理,以及它们是如何实现数据…

Flutter——最详细(NavigationBar)使用教程

NavigationBar简介 Material 3 导航栏组件! 导航栏提供了一种持久且便捷的方式来在应用程序的主要目的地之间进行切换。 使用场景: 底部菜单栏模块 属性作用onDestinationSelected选择索引回调监听器selectedIndex目前选定目的地的索引destinations存放菜单按钮back…

小程序:调用手机的相册

1、需求 点击按钮,调用手机相册选择图片上传 2、解决方案 Button 上加 openType"chooseAvatar";onChooseAvatar 写方法,必须用button 按钮,更改下样式看不出来就行。 3、代码 //解决方案 // 1、Button 上加 openTy…

3.安装和配置 IntelliJ IDEA

安装和配置 IntelliJ IDEA 本文将详细介绍如何安装和配置 IntelliJ IDEA,这是一款流行的Java集成开发环境(IDE),提供强大的开发工具和功能,帮助您高效地编写和调试Java应用程序。 步骤 1:下载 IntelliJ I…

七大排序算法——冒泡排序,通俗易懂的思路讲解与图解(完整Java代码)

文章目录 一、排序的概念排序的概念排序的稳定性七大排序算法 二、冒泡排序核心思想代码实现 三、性能分析四、七大排序算法 一、排序的概念 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或…

C++之工厂模式

目录 一、为什么要使用工厂模式 优点 缺点 二、简单工厂(Simple Factory) 好处: 不足: 三、工厂方法: 好处: 不足: 四、抽象工厂(Abstract Factory) 一、为什…

最长公共子序列

题目 给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M。 第二行包含一个长度为 N 的字符串,表示字符串 A。 第三行包含一个长度为 M 的字符串&#xff0…

【HCIA】10.VLAN间通信

VLAN间通信的解决方法 使用路由器的物理接口 路由器三层接口作为网关,转发本网段前往其它网段的流量。路由器三层接口无法处理携带VLAN Tag的数据帧,因此交换机上联路由器的接口需配置为Access。路由器的一个物理接口作为一个VLAN的网关,因此…

Django_re_path_使用正则匹配url

与path定义的路由相比,re_path 定义的路由可以使用正则表达式匹配url。 需要注意的是: 如果未定义匹配结果的变量名,匹配的结果默认传入视图的第2个形参。如果定义了匹配结果的变量名,匹配的结果会传给视图的同名字段&#xff0…

【GitOps系列】从零上手GitOps

文章目录 GitOps 介绍如何将业务代码构建为容器镜像?如何将容器镜像部署到K8s?K8s如何实现自动扩容和自愈?1.传统的扩容和自愈2.k8s自愈机制3.k8s弹性扩容 如何借助GitOps实现应用秒级自动发布和回滚?1.传统 K8s 应用发布流程2.从…

【Arduino小车实践】陀螺仪的使用

一、MPU6050简介 MPU6050是一款陀螺仪模块,可以测量X、Y、Z三轴的角速度和加速度,还带有温度传感器和数字运动处理器(DMP)。 二、学习步骤 1. I2C协议 MPU6050是通过I2C协议进行驱动的,配置寄存器和获取数据都需要通过I2C协议去实现开发板与…

三、用 ChatGPT 写 PPT

目录 一、实验介绍 二、背景 三、如何让 ChatGPT 写 PPT 3.1 ChatGPT 能直接生成 PPT 文件吗?

CentOS环境下的Nginx安装

Nginx 安装 下载 nginx 下载地址:http://nginx.org/en/download.html 将下载好的压缩包拷贝到根目录下 通过xshell如果出现 bash: rz: 未找到命令 ,需要先运行下面的命令 yum -y install lrzsz安装 解压到当前目录 tar -zxvf nginx-1.22.1.tar.gz安…

Hive SQL 迁移 Flink SQL 在快手的实践

摘要:本文整理自快手数据架构工程师张芒,阿里云工程师刘大龙,在 Flink Forward Asia 2022 生产实践专场的分享。本篇内容主要分为四个部分: Flink 流批一体引擎 Flink Batch 生产实践 核心优化解读 未来规划 点击查看原文视频…

走进人工智能| Computer Vision 数字化时代的视觉启示录

前言: 计算机视觉是通过模仿人类视觉系统的工作原理,使计算机能够感知、理解和解释图像和视频的能力。 文章目录 序言背景适用领域技术支持应用领域程序员如何学总结 序言 计算机视觉是人工智能领域的一个重要分支,它涉及使计算机能够“看”…

靶场的安装

sqli-lab 1.将安装包解压放到WWW目录下 2.修改 db-creds.inc文件里面的数据库的用户名密码为自己的用户名密码 路径:D:\phpStudy_64\phpstudy_pro\WWW\sqli-labs-master\sql-connections\db-creds.inc 3. 更改php版本位5.9版本,不然会报错 4.安装数…

【Sa-Token】SpringBoot 整合 Sa-Token 快速实现 API 接口签名安全校验

在涉及跨系统接口调用时,我们容易碰到以下安全问题: 请求身份被伪造请求参数被篡改请求被抓包,然后重放攻击 sa-token api-sign 模块将帮你轻松解决以上难题。(此插件是内嵌到 sa-token-core 核心包中的模块,开发者无…