分布式基础-分布式一致性之CAP和BASE理论

分布式系统CAP理论和BASE理论 CAP定理 阅读详情

本文主要参考自相关书籍和网络文章,并附上自身的一些理解,如有遗漏或错误,还望海涵并指出。谢谢!

一.分布式一致性

分布式一致性指的是在分布式系统下,数据所具有的一致性。先从单机的ACID模式看起:

1.传统的单机ACID模式

在传统的Web应用中,许多项目仍然采用着单机模式的项目架构。而ACID特性是单机的关系型数据库中,保证事务所需的四大特性:

1.Atomicity(原子性)

一个事务的所有操作,要么全部完成,要么全部不完成。

所谓事务,是指由一系列数据操作所组成的完整逻辑过程。比如银行转账事务由两个操作组成:从源账户扣除金额,以及向目标账户增加金额。

2.Consistency(一致性)

指事务开始之前和事务结束之后,数据的完整性约束没有被破坏。

包含两层含义:

a)数据库机制层面,事务执行前后,数据能符合设置的约束,如唯一约束、外键约束;

b)业务层面,由应用开发人员保证业务一致性。还是以银行转账为例,A、B两个账号,转账之前和之后,A、B两个账号余额总额必须一致。

3.Isolation(隔离性)

数据库能够防止由于多个并发事务交叉执行而导致数据的不一致。

4.Durability(持久性)

指事务结束后,对数据的修改是永久的,不会回滚到之前的状态。

ACID模型是单机的关系型数据库最经典的一个模型,当出现分布式架构时,ACID模型就会出现错误,所以随着分布式架构的产生,新的理论和模型也随之出现。

2.分布式架构演进

我们知道,随着应用请求的增多和并发压力的增大大,系统架构开始向分布式架构开始演进。

存储系统作为基础设施,在单机上持久化是远远不够的,我们需要将数据复制到多台机器上以提升系统的可用性和可靠性。

例如下图中,MySQL做了主从复制架构,形成了一个4台机器组成的分布式系统:

在这里插入图片描述

既然存在数据的复制,那么就肯定会出现从服务器和主服务器间数据不一致的问题,例如网络中断导致了从服务器无法及时同步主服务器数据,这就产生了分布式一致性问题。

在这里插入图片描述

3.分布式一致性等级

1.强一致性

是最严格的一致性等级,要求任何读取操作都能读取到最新的值,也就是说,要求任何写入操作立即同步给所有机器。

2.弱一致性

这种一致性级别约束了系统在写入成功后,不承诺立即可以读到写入的值,也不久承诺多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(比如秒级别)后,数据能够达到一致状态。Zookeeper集群保证了弱一致性。

3.最终一致性

最终一致性是弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态。例如Redis集群保证的是最终一致性。

二.CAP理论

CAP原理是分布式系统中最重要的基本原理之一,是由计算机科学家Eric Brewer提出的,即在分布式计算机系统无法同时提供以下全部三个服务,而最多只能同时保证三者之中的两者成立。

在这里插入图片描述

  1. 强一致性(Consistency):同一时间可在分布式系统所有计算机看到是相同的数据
  2. 可用性(Available):分布式系统能对外提供可用的服务
  3. 分区容错性(Partition tolerance):系统的机器间可以存在网络分区(网络故障)

需要注意的是,CAP理论中的一致性指的是强一致性,也就是任一时刻,从分布式集群中的任何机器读取到的数据都是一致的。

CAP的常见模型

1.CA模型

CA模型是指不存在网络分区时,可以保证C一致性与A可用性。但是这种情况在分布式系统中不成立,因为网络故障是有很大可能发生的,所以通常CA这种模型只出现在单机服务中,在分布式系统中通常是选择CP模型或AP模型。

1.CP模型

CP模型指的是在P网络分区发生时,保证C强一致性,而不保证A可用性。

这种模型多用在需要保证完全数据正确的场合,例如zookeeper集群保证CP,即任何时刻对zookeeper的访问请求能得到一致性的数据结果,同时系统对网络分割具备容错性,但是它不能保证每次服务的可用性。从实际情况来分析,在使用zookeeper获取服务列表时,如果zk正在选举或者zk集群中半数以上的机器不可用,那么将无法获取数据。所以说,zk不能保证A服务可用性。

2.AP模型

AP模型指的是在网络分区P发生时,保证A可用性,而不保证C一致性。

这种模型多用在不需要保证数据完全正确,但是需要高可用的场合,例如Redis读写分离集群,采用哨兵机制时,存在主节点宕机了,但是数据还没有被从节点所同步,哨兵这时将次节点设置为住节点,那么就出现了数据不一致的问题。需要注意的是,Redis可以保证最终一致性(网络连接恢复后会对数据进行同步)。

三.BASE理论

在这里插入图片描述

BASE理论是基于CAP理论的进一步优化,在BASE理论中,允许网络分区发生时,牺牲强一致性,而使得分布式系统具有弱一致性和可用性,而不像CAP理论那样只能在强一致性和可用性之间选择一者。

  1. BA(Basically Available):系统可以提供最基础的功能,保证基本可用
  2. S(Soft State):软状态,即系统可以有一段时间是不同步的
  3. E(Eventually Consistent):数据要保证最终是一致的

1.基本可用

什么是基本可用呢?假设系统,出现了不可预知的故障,但还是能用,相比较正常的系统而言,在响应时间或功能上出现差异:

  1. 响应时间增加

响应时间增加了,可能是因为系统正在进行故障转移或者是重连等

  1. 只保证基本功能

在发生了异常情况,并不一定要将所有功能都下线掉,可以是提供异常页面或者是通过请求降级到预设的服务页面

2.软状态

软状态是相对于硬状态而言的。硬状态要求多个节点的数据副本都是一致的。

而软状态指的是:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。

3.最终一致性

软状态只能存在与较短的时间中,而不可能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据一致性,从而达到数据的最终一致性。这个时间期限取决于网络延时、系统负载、数据复制方案设计等等因素。

ACID 要求强一致性,通常运用在传统的单机数据库系统上。而 BASE 要求最终一致性,通过牺牲强一致性来达到可用性,通常运用在大型分布式系统中。

在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。

用例设计:滴滴打车从轿车到完成支付如何测? 滴滴打车全流程测试用例设计从业务场景覆盖、功能逻辑分解、异常流验证三个维度展开,系统化地构建了测试方案。首先,业务流主干场景被分解为叫车、行程中、支付结算三个阶段,每个阶段都设计了核心测试用例,包括正向和异常用例,如定位准确性、车型选择逻辑、路径偏移监控、费用实时计算、多支付方式兼容等。专项测试补充了状态机验证、资损防控测试和性能测试,确保系统在不同情况下的稳定性和安全性。测试数据策略采用等价类划分设计,实战技巧包括流量回放技术、混沌工程注入和计费沙盒验证,以提高测试的覆盖率和准确性。最终输出交付物包括流程 阅读详情

相关推荐

Flutter 中使用蓝牙插件报错,说没有权限怎么解决

2、在build.grale里面更改一下版本号,我修改的是targetSdkVersion这个版本号,需要根据你自己的版本进行更改,记得更改之后先flutter clean一下再run。搞了一晚上,没搞出来,第二天用同事手机测试发现他手机可以,我手机还是不行,才发现是Android版本问题,需要修改两处地方。废话不多说,咱先看报错信息。

zzj17637822814的博客 2289

分布式系统:数据一致性解决方案

点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注,大数据开发领域最强公众号!大数据真好玩点击右侧关注,大数据真好玩!在分布式系统中,随着系统架构演进...

微信搜:import_bigdata,大数据领域硬核原创作者 4606

手把手教你用三菱PLC控制JET伺服原点:从硬件接线到GXWORKS3程序调试

本文详细介绍了如何使用三菱PLC控制JET伺服系统实现原点回归功能,涵盖硬件接线、参数配置到GX Works3程序调试的全流程。通过实战指南,帮助工程师快速掌握伺服控制技术,提升工业自动化项目的实施效率。

weixin_30642561的博客 536

分布式服务化系统一致性的“最佳实干”

1 背景 一致性是一个抽象的、具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义。在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我、我中有你、浑然一体;而在互联网时代,一致性的含义远远超出了它原有的含义,在我们讨论互联网时代的一致性之前,我们先了解一下互联网时代的特点,互联网时代信息量巨大、需要计算能力巨大,不但对用户响应速度要求快,而且吞吐量指标也要向外扩展(

千丈之松的专栏 3654

Node-RED系列(二九):使用slider与chart节点来实现双折线时间序列图

今天教使用dashboard的chart组件和slider组件来是实现一个双线的折线图。效果如下 拖动顶部的电量和水量,低下的图表会实时显示时间和值之所以做这个模拟案例,是将教 大家使用chart节点和slider节点先说一下slider节点,该节点是一个滑块节点,可以接受上一节点的 msg.payload,作为滑块的值, slider必须设置最大值和最小值。且不能动态设置。 此外当用户拖动slider滑块,改变值时,该节点会向下传递当前值 以属性payload装载。在说一下chart节点,该节点可以用于

知无涯 4971

Python 爬虫实战:科研数据库学术论文数据抓取

在科研工作中,学术论文是获取前沿知识和研究方法的重要资源。然而,手动从科研数据库中查找和整理论文信息往往耗时费力。幸运的是,Python 爬虫技术可以自动化这一过程,帮助我们高效地抓取和管理学术论文数据。本文将详细介绍如何使用 Python 爬虫技术抓取科研数据库中的学术论文数据,并进行全字段提取和文献管理,助力科研工作。

u014481728的博客 946

分布式一致性、CAP和BASE理论(分布式笔记)

分布式的一致性 一、什么是分布式的一致性   在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景。 火车站售票   假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行,一切似乎都是那么和谐。想象一下,如果他选择的目的地是杭州,而某一趟开往杭州的火车 只剩下最后一张车票,可能在同一...

Nicholas.S的博客 1384

扰动观察法MPPT控制器simulink仿真

最大功率点跟踪(MPPT)控制器对于光伏(PV)系统至关重要,因为它可以确保系统在所有操作条件下都能从光伏阵列中提取最大功率。扰动观察法(P&O)是一种广泛使用的MPPT算法,因为它简单且易于实现。本文介绍了P&O MPPT控制器的Simulink仿真,并分析了其性能。

qq_59747472的博客 318

分布式服务化系统一致性(分布式事务、ACID、BASE、CAP)原理与解决方案

1、背景  一致性是一个抽象的、具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义。在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我、我中有你、浑然一体;而在互联网时代,一致性的含义远远超出了它原有的含义,在我们讨论互联网时代的一致性之前,我们先了解一下互联网时代的特点,互联网时代信息量巨大、需要计算能力巨大,不但对用户响应速度要求快,而且吞吐量指标也要向外扩展(既:

Lovnx 2万+

Wi-Fi物理帧间隔概念简介

物理帧间隔概念简介。

1042484520@qq.com(邮箱) 1779

YOLOv11 损失函数解析

YOLOv11 在 YOLO 系列的持续演进中,通过 ​多模态损失协同优化、动态任务感知机制 和 ​超轻量化设计,实现了检测精度与推理效率的再突破。其损失函数设计融合了前沿的几何建模、分布学习与自监督技术,显著提升了复杂场景下的鲁棒性。

浩瀚之水的专栏 6703

分布式原理 - 一致性原理出发谈CAP、BASE

目录 1、概念:分布式一致性 1、1 场景理解 1、2 事件的四个特性:ACID 2、一致性的级别 3、CAP理论 学习分布式原理笔记,争取深入浅出。整理思路过程为,提出概念---场景理解---实际运用---总结。 1、概念:分布式一致性 变量说法:分布式系统通常由异步网络连接的多个节点构成,每个节点有独立的计算和存储,节点之间通过网络通信进行协作。分布式一致性指多个节点对某一变量的取值达成一致,一旦达成一致,则变量的本次取值即被确定。 数据(可能有数据副本)说法:在分布式存储系统中,通常

Longtermevolution的博客 586

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

CAP 定理和 BASE 理论

CAP 定理和 BASE 理论是分布式系统设计中的核心理论基础。CAP 定理指出,在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)三者不可兼得,通常需要在一致性和可用性之间做出权衡。BASE 理论则是对 CAP 的补充,强调通过牺牲强一致性来换取系统的高可用性和伸缩性,其核心原则包括基本可用、柔性状态和最终一致性。CAP 定理揭示了分布式系统的本质限制,而 BASE 理论提供了工程实践中的适应性方案。在实际应用中,金融

红血哥 1195

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ACID、CAP、BASE基础理论

文章目录一、2PC二、CAP三、BASE四、总结 一、2PC 二、CAP 三、BASE 四、总结

雪辉博客 665

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

简单说一下CAP理论和Base理论

RPO:数据库发生灾害后会丢失多长时间RTO:数据库在灾难发生后整个系统恢复正常所需要的时间因为P在分布式系统中是肯定存在的而CAP三者在理论中是不能100%满足的所以我们要在A和C之间选一个进行降级处理。

LUCIAZZZ的博客 550

看完这篇,保证让你真正明白:分布式系统的CAP理论、CAP如何三选二

大家看完有什么不懂的可以在下方留言讨论.

jjc4261的博客 785

分布式事务探讨系列(一):基础理论CAP和Base

在说分布式事务之前,先看看事务本身。 事务定义 事务是一组单元化的操作,这组操作可以保证要么全部成功,要么全部失败(只要有一个失败的操作,就会把其他已经成功的操作回滚)。 数据库事务 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互...

lsblsb的专栏 655

分布式基础(二)—— 分布式理论之分布式一致性:BASE理论

BASE 理论是对 CAP 中一致性和可用性权衡的结果,它来源于对大规模互联网分布式系统实践的总结,是基于 CAP 定理逐步演化而来的。它的核心思想是:如果不是必须的话,不推荐实现事务或强一致性,鼓励可用性和性能优先,根据业务的特点,来实现非常弹性的基本可用,以及数据的最终一致性。

smart_an的专栏 1069

分布式系统技术——分布式基础理论与算法

互联网发展到今天,用户数量越来越多,产生的数据规模也越来越大,应用系统必须支持高并发访问和海量数据处理的需求。对比集中式架构,分布式系统由于具有可扩展性,可以动态扩展服务和存储节点,使用廉价的机器构建高性能的服务,更适合如今的互联网业务。分布式系统技术已经成为微服务架构、大数据、云计算等技术领域的基石,在电商、互联网金融、支付等众多业务中,都离不开分布式技术的有效运用。一个分布式系统是一些独立的计算机集合,但是对这个系统的用户来说,系统就像一台计算机一样。本文主要介绍分布式的基础知识,以及分布式的理论基础和

庄小焱 2142

Zookeeper补充知识之CAP/BASE理论

 XML Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3...

凌夜知惜 361

分布式理论基础

这是Zookeeper学习总结 的系列文章。 分布式的诞生 在上世纪末,互联网发展十分迅猛,更快的计算能力和更大的存储空间是计算机学科领域思考的两大问题。在细分领域,人们不断提出提高单机的性能和存储,IBM等公司开发了不同种类的微型机、小型机和大型机,将单机的计算和IO处理能力一再推向高潮。然而,很快人们就发现,这是一条前景黯淡的道路,单机再强大,也有天花板。主要体现在: 有性能上限,无法水...

weixin_33991727的博客 211

分布式理论:CAP定理与BASE理论

分布式理论:CAP定理与BASE理论

wang_luwei的博客 546

CAP理论与BASE理论

** CAP理论 ** CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。 CAP原则是NOSQL数据库的基石。 分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳: 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。...

tuzhu123的博客 445

CAP理论和BASE理论

CAP/BASE

m0_54049422的博客 475

【进阶架构师】分布式之CAP原则

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 【进阶架构师】分布式之CAP原则前言一、官方CAP原则定义二、通俗CAP解释1.一致性(C)2.可用性(A)3.分区容忍性(P)三、最终一致性解决方案BASE四、常用分布式框架的CAP原则CP without A:AP wihtout C:CA without P:总结 前言 提示:这里可以添加本文要记录的大概内容: 在学习分布式相关知识以及分布式相关框架Kafka、Redis等时,常常会看到CAP原则,就是要么AP,要么CP,要么AC.

xsf1006的博客 1623

CAP和BASE理论

为什么80%的码农都做不了架构师?>>> ...

weixin_33984032的博客 186
上一篇: 分布式基础-常见攻击技术与加密技术
下一篇: 操作系统-深入理解IO模型与Reactor、Proactor模式
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值