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

2024-05-03 20:36

本文主要是介绍【分布式系统】FLP、CAP、BASE、ACID理论简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分布式系统一致性模型

在说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)

这篇关于【分布式系统】FLP、CAP、BASE、ACID理论简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957590

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

分布式系统的主要考虑

异构性:分布式系统由于基于不同的网路、操作系统、计算机硬件和编程语言来构造,必须要考虑一种通用的网络通讯协议来屏蔽异构系统之间的禅意。一般交由中间件来处理这些差异。缺乏全球时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。紧密的协调经常依赖于对程序动作发生时间的共识,但是,实际上网络上计算机同步时钟的准确性受到极大的限制,即没有一个正确时间的全局概念。这是通过网络发送消息作为唯一的通信方式

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供