【分布式系统】FLP、CAP、BASE、ACID理论简介

news2025/1/15 6:27:25

分布式系统一致性模型

在说FLP,CAP,BASE,ACID理论前,必须先说说分布式系统的一致性模型,它是其他理论的基础知识。

依次介绍几个相关的概念:

  • 分布式系统是由多个不同的服务节点组成,节点与节点之间通过消息传递进行通信和协调。根据消息传递的不同,分布式系统的运行模型,可以分为异步模型系统同步模型系统
    • 同步:系统中的各个节点的时钟误差存在上限;且消息传递必须在一定时间内完成,否则认为失败;同时各节点完成处理消息的时间是一定的。
    • 异步:系统中各个节点可能存在较大的时钟差异,同时消息传输时间是任意长的,各节点对消息进行处理的时间也可能是任意长的。
  • 一致性:对于给定一系列操作,分布式系统中的节点对处理结果达成一致。
  • 数据一致性:分布式系统各个节点具有关联性的数据在逻辑上完整且正确。

所以一致性模型就是要保证在分布式系统数据和状态的一致性。它又可以被分为强一致性模型弱一致性模型

强一致性模型

在强一致性模型中,一旦数据写入成功,在任意时间,任意副本都可以读取数据当前的新值,且所有后续操作都将在新值的基础上展开,直到这个数据被再次更新。

image-20240503175004758

弱一致性模型

与强一致性模型相对,在弱一致性模型中,数据写入成功后,某个副本上不一定能立刻读到新值也不确定何时能读到。但随着时间的迁移,不同副本上的关联数据最终会达到一致性状态。

最终一致性模型可看作是弱一致性模型的特殊情况,数据写入成功后,某个副本上不一定能立刻读到当前数据的新值,但可以保证在一段时间后最终读到并进行相关操作,这段时间被称为不一致窗口

image-20240503175248036

FLP、CAP、BASE、ACID理论简介

FLP理论

FLP理论:在网络可靠并且存在节点失效的异步模型系统中,不存在一个可以解决一致性问题的确定性算法。在异步通信的模型下即使只有一个进程失效,也没有任何算法能够保证其他进程达到一致性。
启示:在异步分布式系统中不存在任何场景下都能实现一致性的算法。

image-20240503175525321

FLP不可能理论给出了分布式一致性问题的上界!

CAP理论(ph试纸)

CAP:分布式系统的ph试纸,用它来测分布式系统的酸碱度

让我们先来看看CAP各个字母分别表示什么意思吧?

  • C:Consistency,一致性。分布式系统中多个节点进行数据共享时需要保证各个副本之间的数据一致性。这里的一致性指的是强一致性,即保证在每次写操作之后,在任意节点上读操作时读到的都是最新的数据。
  • A:Availability,可用性。是指系统为用户提供服务的能力。具有良好可用性的系统能够尽量避免用户操作失败和访问超时等情况。每个非故障节点需要保证在有限时间内对用户请求做出响应。即使系统中有部分节点出现故障,系统内仍能在正常响应时间内提供可用服务。
  • P:Partitiontolerance,分区容忍性。分区容错性中的“分区”是指网络意义上的区域划分。网络通信并非一直可靠,当节点间无法正常通信时就会产生网络分区。若此时分布式系统仍能正常对外提供服务,则该系统具有良好的分区容错性。

image-20240503175953944

根据上图即可明白:CAP理论指的是一个分布式系统中不可能同时满足一致性、可用性和分区容错性。选择满足其中两个要素时,就需要对剩下的一个做出部分程度的牺牲。在设计分布式架构时,需要根据系统特性在三个要素之间进行合理权衡和取舍。

当然不同选择会带来不同的结果,也就会设计出不同的产品,下图是一个示例:

image-20240503192242822

BASE理论(碱)

BASE在英文中是碱的意思。跟CAP理论一样,先来看看各个字母代表的含义吧!

  • BA:Basically Available,基本可用性。 指系统在突发故障时允许损失部分 可用性。这种损失通常包含两方面内容:一是响应时间的损失,即系统返 回结果的时间略微延长;二是部分系统功能的损失,即只要保证核心模块 可用,其他服务可能做一定的降级处理。
  • S:Soft state,软状态。 指在不影响系统整体可用性的情况下,允许数据 存在中间状态。即接受不同节点中的数据副本进行同步过程中存在延时。
  • E:Eventually consistent,最终一致性。 指系统中的数据副本经过不一 致窗口后最终会达到一致性状态。

BASE理论的核心思想是通过牺牲分布式系统的强一致性来获得高可用性。允许数据副本存在中间状态,只需要保证最终一致即可。

ACID理论(酸)

ACID在英文中是酸的意思。熟悉数据库理论的同学应该都知道,这是关系数据库中的事务的四个性质,这里再简单说明:

  • A:Atomicity,原子性。事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个环节。
  • C:Consistency,一致性。事务必须使数据库从一个一致性状态转换到另一个一致性状态。这意味着在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
  • I:Isolation,隔离性。隔离性是指一个事务所做的修改在最终提交之前,对其他事务是不可见的。这样可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
  • D:Durability,持久性。一旦事务提交,其所做的修改就是永久性的,即使系统发生故障也不会丢失。持久性可以确保数据的可靠性和稳定性。

可以看到,ACID理论和BASE理论作为CAP理论的酸碱两面,前者追求一致性,后者追求可用性

ACID:CAP的“酸”,追求一致性BASE:CAP的“碱”,追求可用性
原子性(Atomicity)基本可用(Basically Available)
一致性(Consistency)软状态/柔性事务(Soft state)
隔离性(Isolation)最终一致性(Eventual consistency)
持久性(Durability)

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

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

相关文章

VMware虚拟机安装Linux(CentOS)【超详细】

参考大佬文章:VMware虚拟机安装Linux教程(超详细)_vmware安装linux虚拟机-CSDN博客 目录 一、获取映射文件 二、新建虚拟机 三、安装操作系统 四、切换系统用户 一、获取映射文件 参考大佬文章获取映射文件,以及对应修改后缀名的方法 二、新建虚拟…

电阻 电容 电感

电阻理论基础 电阻定义 电阻决定式 温度对电阻的影响 一般电阻都是在-200-500ppm这个范围内 电阻选型 贴片电阻的标值 数字位数 3位和4位 字母R 除了数字和字母R的其他标注 需要查表 电阻精度 电阻功率和温度的关系 电阻的额定电压 零欧姆电阻 零欧姆电阻又称为跨…

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(三)

本系列课程,将重点讲解Phpsploit-Framework框架软件的基础使用! 本文章仅提供学习,切勿将其用于不法手段! 继续接上一篇文章内容,讲述如何进行Phpsploit-Framework软件的基础使用和二次开发。 当我们点击 submit 提…

【云原生】Docker 实践(四):使用 Dockerfile 文件的综合案例

【Docker 实践】系列共包含以下几篇文章: Docker 实践(一):在 Docker 中部署第一个应用Docker 实践(二):什么是 Docker 的镜像Docker 实践(三):使用 Dockerf…

【多数组合 数学 字符串】2514. 统计同位异构字符串数目

本文涉及知识点 多数组合 数学 字符串 LeetCode2514. 统计同位异构字符串数目 给你一个字符串 s ,它包含一个或者多个单词。单词之间用单个空格 ’ ’ 隔开。 如果字符串 t 中第 i 个单词是 s 中第 i 个单词的一个 排列 ,那么我们称字符串 t 是字符串…

Web Storage 笔记12 操作购物车

相关内容:购物车实例 WebStorage存储空间足够大,访问都在客户端(Client)完成。有些客户端先处理或检查数据,就可以直接使用WebStorage进行存储,不仅可以提高访问速度,还可以降低服务器的练习。负担。例如,购…

如何访问公司内网?

访问公司内网是现代企业中的一个重要需求。无论是员工在外办公,还是远程技术支持,都需要能够安全、稳定地访问公司内部的网络资源。为了解决这一问题,北京金万维科技有限公司自主研发了一款名为【天联】的组网产品。 【天联】组网是一款异地组…

Linux下Palabos源码编译安装及使用

目录 软件介绍 基本依赖 其它可选依赖 一、源码下载 二、解压缩(通过方式1下载源码.zip格式) 三、编译安装 3.1 自带算例 ​编辑3.2 自行开发算例 四、简单使用 4.1 串行运行 4.2 并行运行 4.3 查看结果 软件介绍 Palabos是一款基于LBM&…

平平科技工作室-Python-步步惊心

一.准备图片 放在文件夹取名为imgs,分为两种boys和girls 二.编写程序 首先创建一个文件名为index.py 其次编写程序 # coding:utf-8 import sys, time, easygui, os, pygame from pygame.locals import * pygame.init() # 设置窗口显示位置、大小、颜色、标题 os.environ[ S…

【基于MAX98357的Minimax(百度)长文本语音合成TTS 接入教程】

【基于MAX98357的Minimax(百度)长文本语音合成TTS 接入教程】 1. 前言2. 先决条件2.1 硬件准备2.2 软件准备2.3 接线 3. 核心代码3.1 驱动实现3.2 代码解析 4. 播放文本5. 结论 视频地址: SeeedXIAO ESP32S3 Sense【基于MAX98357的Minimax&am…

【Mac】Lightroom Classic 2024 v13.1安装教程

软件介绍 Lightroom Classic 2024是Adobe公司推出的一款专业的数字图像处理软件,旨在为摄影师提供强大的工具和功能,以管理、编辑和分享他们的照片作品。以下是Lightroom Classic 2024的主要特点和功能: 数字照片管理: 提供直观…

YOLOv5手势物体识别(附代码)

之前是做的yolov3手势物体识别,最近几天我将该项目进行了重新的整理和升级,实现了yolov5手势物体识别,同时为了方便更多的人直接拿来应用,我生成了支持windows系统的应用小程序,即便你电脑上没有安装pytorch,没有安装c…

【题解】NC109 岛屿数量(BFS / DFS)

https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e?tpId196&tqId37167&ru/exam/oj dfs #include <vector> class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可…

电脑数据怎么拷贝到u盘?操作指南与数据丢失防范

在数字时代&#xff0c;数据的传输与备份已成为我们日常生活和工作中不可或缺的一部分。U盘作为一种便捷、高效的移动存储设备&#xff0c;广泛应用于各种数据拷贝场景。无论是个人文件的备份&#xff0c;还是工作资料的传输&#xff0c;U盘都发挥着举足轻重的作用。那么&#…

HTML_CSS学习:背景、鼠标相关属性

一、背景相关属性 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>背景相关属性</title><style>body{background-color: greenyellow;}div{width: 400px;height: …

光头强:IBM收购HashCorp (Terraform)有多大意义?

StrongBear公司在光头强强总以及合伙人熊大熊二的艰苦努力下&#xff0c;最近公司进了一次扩容。甚至将原来一些甲方的研发人员也拉入旗下&#xff0c;其中就包括与熊二共事多年的小玲子以及小强同学。 光头强也注意到最近在IT软件领域&#xff0c;频频发生一些并购事件。比如…

nodejs实战——搭建websocket服务器

本博客主要介绍websocket服务器库安装&#xff0c;并举了一个简单服务器例子。 服务器端使用websocket需要安装nodejs websocket。 cd 工程目录 # 此刻我们需要执行命令&#xff1a; sudo npm init上述命令创建package.json文件&#xff0c;系统会提示相关配置。 我们也可以使…

知乎广告开户流程,知乎广告的优势是什么?

社交媒体平台不仅是用户获取知识、分享见解的场所&#xff0c;更是品牌展示、产品推广的重要舞台。知乎作为国内知名的知识分享社区&#xff0c;以其高质量的内容生态和庞大的用户基础&#xff0c;成为了众多企业进行广告投放的优选之地。云衔科技通过其专业服务&#xff0c;助…

C++证道之路第十六章string类和标准模板库

一、string类 string实际上是模板具体化basic_string的一个typedef&#xff0c;省略了与内存管理相关的参数。 string类将string::npos定义为字符串的最大长度。 string库提供了很多其他的工具&#xff0c;包括完成下述功能的函数&#xff1a; 删除字符串的部分或全部内容&…

POWERBI==官网教程

地址 COVID-19 tracking sample for US state and local governments - Power BI | Microsoft Learn 已经非常全面了