分布式——BASE理论

news2024/11/24 8:52:39

简单来说:

BASE(Basically Available、Soft state、Eventual consistency)是基于CAP理论逐步演化而来的,核心思想是即便不能达到强一致性(Strong consistency),也可以根据应用特点采用适当的方式来达到最终一致性(Eventual consistency)的效果。

BA基本可用,就是一种妥协,在节点故障或系统过载,通过牺牲非核心功能可用性,保障核心功能的稳定运行。(流量削峰,延迟响应异步处理,体验降级,过载保护熔断/限流,故障隔离)

S软状态,允许系统中的数据存在中间状态,允许系统存在数据延迟

E最终一致性,不能一直处于软状态,一定时间期限后,保证所有副本一致性

  • 有点BA对应AP,S对应P,E对应CP意味

1. 理论内容

BASE 理论是对 CAP 理论的一种延伸和补充,它是基于 Basically Available(基本可用)、Soft state(软状态)和 Eventually Consistent(最终一致性)这三个特性来描述分布式系统的。

  • 基本可用:意味着系统在出现故障或者高负载等异常情况下,虽然不能像正常情况那样提供完整的服务,但仍然能够提供部分服务,以满足用户的基本需求。就是不断妥协一些方面来保证基本可用。例如,在电商大促期间,由于订单量暴增,系统可能会限制某些非关键功能的使用,如商品评论功能可能会暂时关闭,或者降低图片的分辨率以节省网络资源,这样虽然系统的服务有所缺失,但仍然可以让用户完成基本的购物流程,即实现了基本可用。

  • 软状态:指的是系统中的数据存在一种介于已完成和未完成之间的中间状态,这种状态是可以被接受的。比如,在一个分布式存储系统中,当用户上传一份文件时,可能在某个瞬间,系统中的某些节点已经接收到了文件的部分内容,而其他节点还没有接收到,这就是一种软状态。这种状态在系统运行过程中是正常存在的,并且会随着时间的推移逐步趋向于完成状态。

  • 最终一致性:表示尽管在系统运行过程中可能会出现数据不一致的情况,但经过一段时间后,系统中的所有数据副本最终会达到一致状态。例如,在一个分布式数据库系统中,不同节点上的数据可能会因为网络分区、并发操作等原因出现不一致,但随着网络分区的恢复、并发操作的完成等,经过一定的时间,所有节点上的数据最终会变得一致。

2. 设计理念

BASE 理论的设计理念是接受分布式系统中存在的不确定性和不完善性,不强求在任何时刻都保持数据的一致性,而是通过允许系统存在软状态和最终实现一致性的方式,来提高系统的灵活性和可用性。它与 CAP 理论中的 AP 系统有一定的相似性,都是在一定程度上放弃了严格的一致性要求,但 BASE 理论更强调系统在面对各种复杂情况时如何通过自身的调整和发展来实现最终的一致性,而不是简单地放弃一致性。

区别总结

  • 特性描述:

    • CAP 理论主要关注的是一致性、可用性和分区容错性这三个关键特性,并且指出在分布式系统中这三个特性之间存在着不可调和的矛盾,必须在三者之间进行权衡取舍。

    • BASE 理论则围绕基本可用、软状态和最终一致性这三个特性来描述分布式系统,它是对分布式系统在实际运行过程中可能出现的各种情况的一种描述,强调系统可以存在软状态并通过自身的发展来实现最终一致性。

  • 设计理念:

    • CAP 理论的设计理念是基于对分布式系统特性的严格定义和权衡取舍,根据不同的应用场景选择放弃其中一个特性来满足其他两个特性。

    • BASE 理论的设计理念是接受分布式系统中的不确定性和不完善性,通过允许系统存在软状态和最终一致性的方式来提高系统的灵活性和可用性,而不是像 CAP 理论那样进行严格的权衡取舍。

  • 应用场景:

    • CAP 理论在选择设计方案时,更适合用于对数据一致性要求非常高的系统(如金融交易系统)或者对可用性要求非常高的系统(如社交网络系统)等,根据具体需求选择 CP 或 AP 方案。

    • BASE 理论更适合用于那些在运行过程中可能会出现各种复杂情况(如高负载、网络分区等)的分布式系统,如电商平台、内容分发系统等,通过实现基本可用、软状态和最终一致性来应对这些复杂情况。

综上所述,CAP 理论和 BASE 理论从不同的角度对分布式系统进行了描述和分析,它们在特性描述、设计理念和应用场景等方面存在着明显的区别,在实际的分布式系统设计和开发中,需要根据具体的需求和情况选择合适的理论作为指导。

再理解

BASE(Basically Available、Soft state、Eventual consistency)是基于CAP理论逐步演化而来的,核心思想是即便不能达到强一致性(Strong consistency),也可以根据应用特点采用适当的方式来达到最终一致性(Eventual consistency)的效果。


(1) BASE的主要含义:

BASE是Basically Available(基本可用)、**Soft state(软状态)和Eventually consistent(最终一致性)**三个短语的简写。

BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方法来使系统达到最终一致性。

两个对冲理念:ACID和BASE
ACID是传统数据库常用的设计理念,追求强一致性模型。
BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。

(2) Basically Available(基本可用)
基本可用本质是一种妥协,也就是出现节点故障或者系统过载时,通过牺牲非核心功能的可用性,保障核心功能的稳定运行。
实现基本可用的几个策略:

1、流量削峰(不同地区售票时间错峰出售)
以订票系统设计为例,在春运期间,开始售票前后会出现及其海量的请求峰值。
可以在不同的时间,出售不同区域的票,将访问请求错开,削弱请求峰值。

2、延迟响应,异步处理(买票排队,基于队列先收到用户买票请求,排队异步处理,延迟响应)
还以订票系统为例。用户提交购票请求后,往往会在队列中排队等待处理,可能几分钟或十几分钟后,系统才开始处理,然后响应处理结果。

3、体验降级(看到非实时数据,采用缓存数据提供服务)
以互联网系统为例,若出现网络热点事件,产生了海量的突发流量,系统过载,大量图片因为网络超时无法显示,那么可以用小图片代替原始图片,降低图片的清晰度和大小,提升系统处理能力。

4、过载保护熔断/限流,直接拒绝掉一部分请求,或者当请求队列满了,移除一部分请求,保证整体系统可用)
把接收到的请求放在指定的队列中排队处理,如果请求等待时间超时,这时直接拒绝超时请求;如果队列满了之后,就清除队列中一定数量的排队请求,保护系统不过载,实现系统基本可用。

5、 故障隔离(出现故障,做到故障隔离,避免影响其他服务)


(3) Soft state(软状态)
原子性(硬状态) -> 要求多个节点的数据副本都是一致的,这是一种"硬状态"


软状态(弱状态) -> 允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延迟。


(4) Eventually consistent(最终一致性)
上面说软状态,然后不可能一直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据一致性。从而达到数据的最终一致性。这个时间期限取决于网络延时,系统负载,数据复制方案设计等等因素。

image.png

稍微官方一点的说法就是:
系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值。

(5) BASE总结
总的来说,BASE 理论面向的是大型高可用可扩展的分布式系统,和传统事务的 ACID 是相反的,它完全不同于 ACID 的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间是不一致的。

参考:图灵课堂

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

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

相关文章

【RabbitMQ】07-业务幂等处理

1. 方式一 序列化设置唯一Id。 Beanpublic MessageConverter messageConverter() {Jackson2JsonMessageConverter jjmc new Jackson2JsonMessageConverter();jjmc.setCreateMessageIds(true);return jjmc;}RabbitListener(bindings QueueBinding(value Queue(name "d…

【多线程奇妙屋】你听说过设计模式吗?软件开发中可全局访问一个对象的设计模式——单例模式,工作常用, 建议收藏 ! ! !

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

android studio 配置过程

Android studio版本:Android Studio Ladybug | 2024.2.1 windows 10 x64 关键问题解决方法: 1.设置代理: 退出首次配置,进入ide(必要时新建工程)然后: 然后重启ide 等待下载完成。 代理地…

java ssm 个人学习管理系统 学习安排 学生在线学习管理 源码 jsp

一、项目简介 本项目是一套基于SSM的个人学习管理系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具等。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后端技术&#x…

【harbor】离线安装2.9.0-arm64架构服务制作和升级部署

harbor官网地址:Harbor 参考文档可以看这里:部署 harbor 2.10.1 arm64 - 简书。 前提环境准备: 安装docker 和 docker-compose 先拉arm64架构的harbor相关镜像 docker pull --platformlinux/arm64 ghcr.io/octohelm/harbor/harbor-regist…

ssm+vue708基于BS的库存管理软件设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

速通LoRA:《LoRA: Low-Rank Adaptation of Large Language Models》全文解读

文章目录 总览AbstractIntroductionProblem StatementAren’t Existing Solutions Good Enough?Our MethodLow-Rank-Parametrized Update MatricesApplying LoRA to Transformer 何为高斯随机初始化Empirical ExperimentsBaselinesRoBERTa base/largeDeBERTa XXLGPT-2 medium/…

智慧园区解决方案:科技赋能,打造未来管理新典范

智慧园区作为城市发展的重要组成部分,正以前所未有的速度蓬勃发展。随着5G、云计算、大数据、物联网(IoT)、BIM(建筑信息模型)、人工智能(AI)及区块链等前沿技术的日益成熟与融合应用&#xff0…

如何优化Elasticsearch的查询性能?

优化Elasticsearch查询性能可以从以下几个方面进行: 合理设计索引和分片: 确保设置合理的分片和副本数,考虑数据量、节点数和集群大小。根据数据量和节点数量调整分片数量,避免使用过多分片,因为每个分片都需要额外的…

前端 JS面向对象 原型 prototype

目录 一、问题引出 二、prototype原型对象 三、小结 四、constructor 五、__proto__对象原型 六、原型链 一、问题引出 由于JS的构造函数存在内存浪费问题: function Star(name,age){this.namenamethis.ageagethis.singfunction () {console.log("唱歌&…

【MATLAB代码】二维平面上的TDOA,使用加权最小二乘法,不限制锚点数量,代码可复制粘贴

本文所述的MATLAB代码实现了一个基于两步加权最小二乘法的二维目标定位算法,利用多个锚点(基站)和时间差到达(TDOA)数据来估计未知目标的位置。 订阅专栏后可以看到完整代码,复制到MATLAB空脚本上面即可直接运行。若需要单独下载,可通过下面的链接:https://download.cs…

推荐一款完全开源的多端仓库管理系统

简介 模块 安装 UI展示 开源地址 今天给大家介绍一款完全开源的仓库管理系统,本系统采用Python语言开发。 简介 该库存管理系统是目前福特亚太区售后物流仓储供应链流程。离开福特后,开始了这个项目。为了帮助一些有需要的人。OneAPP 理念。支持扫…

第七部分:2. STM32之ADC实验--AD多通道(AD采集三路传感器模块实验:光敏传感器、热敏传感器、反射式传感器附赠温湿度传感器教程)

这个多通道采用非扫描模式--单次转换模式 1.代码配置链路图 2. ADC的输入通道 3.ADC的非扫描模式的转换模式(单次和连续) 4.ADC的扫描模式的转换模式(单次和连续) 5.采集校准 代码实验: 代码部分: #inclu…

手持测温热像仪市场规模:预计2030年全球市场规模将达到24.9亿美元

手持测温热像仪是一种能够实时监测和记录物体表面温度分布的高科技仪器。其核心功能在于,利用物体自身辐射出的热红外线来生成可视化的温度分布图像,进而为各种应用提供精准的温度数据。这一技术的普及和应用,无疑极大地提升了我们对于物体温…

web——[SUCTF 2019]EasySQL1——堆叠注入

这个题主要是讲述了堆叠注入的用法,来复现一下 什么是堆叠注入 堆叠注入:将多条SQL语句放在一起,并用分号;隔开。 1.查看数据库的名称 查看数据库名称 1;show databases; 发现有名称为ctftraining的数据库 2.对表进行查询 1;show tabl…

数据结构选择题及答案

一、选择题 1、下列查找方法中,( )适用于查找有序单链表。 A.分块查找; B.哈希查找; C.顺序查找; D.二分查找; 2、在有n个结点的二叉树的二叉链表表示中,空指针数为( )。 A&#xf…

GraphQL在现代Web开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 GraphQL在现代Web开发中的应用 GraphQL在现代Web开发中的应用 GraphQL在现代Web开发中的应用 引言 GraphQL 概述 定义与原理 发展…

智能社区服务小程序+ssm

智能社区服务小程序 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了智能社区服务小程序的开发全过程。通过分析智能社区服务小程序管理的不足,创建了一个计算机管理智能社区服务小程序的方案。文…

前端上传大文件,后端报错Content-Type ‘application/octet-stream‘ is not supported【解决】

报错内容org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type application/octet-stream is not supported 组件库:naiveui中upload进行上传功能使用的主要组件 使用原生XMLHttpRequest进行接口请求 authorization请求头需要手动写入 不…

【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载

软件介绍 下载iOS旧版应用,简化繁琐的抓包流程。 一键生成去更新IPA(手机安装后,去除App Store的更新检测)。 软件界面 支持系统 Windows 10/Windows 8/Windows 7(由于使用了Fiddler库,因此需要.Net环境…