FLP、CAP和BASE

news2025/1/10 11:00:04

FLP不可能原理

FLP定理

FLP Impossibility(FLP 不可能性)是分布式领域中一个非常著名的定理,定理的论文是由 Fischer, Lynch and Patterson 三位作者于1985年发表

It is impossible to have a deterministic protocol that solves consensus in a message-passing asynchronous system in which at most one process may fail by crashing

FLP的三大限定条件

确定性协议

Deterministic protocol,给定一个输入,一定会产生相同的输出

异步网络通信

同步通信:同时在线,允许超时

异步通信:没有统一时钟、不能时间同步、不能使用超时、不能探测失败、消息可任意延迟、消息可乱序

所有存活节点

所有存活的节点必须最终达到一致性

FLP的不可能三角

Safety:系统中非故障节点达成了一致和合法的共识,又称Agreement

Liveness:系统中非故障节点在有限的时间内能够达成共识,又称Termination

Fault Tolerance:协议必须在节点故障的时候同样有效

在这里插入图片描述

SL系统:为了达成一致性,不允许节点失败

SF系统:为了保证Safety,需要无限等待,因此无法保证Liveness

LF系统:为了保证Liveness,不能无限等待,因此无法保证Safety

Paxos违背了FLP吗?

在这里插入图片描述

CAP定理

CAP定理

CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer‘s theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000年的 ACM PODC 上提出的一个猜想

2002年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。对于设计分布式系统的架构师来说,CAP 是必须掌握的理论

It is impossible for a distributed data store to simultaneously provide more than two out of the following three guarantees: Consistency, Availability, Partition tolerance

分布式数据存储系统不可能同时满足一致性、可用性和分区容忍性

CAP的不可能三角

一致性:每次读取操作都会读取到最新写入的数据,或者返回错误

可用性:每次请求都会得到非错请求,但不保证返回最新的数据

分区容错性:系统在发生分区的时候继续提供服务

在这里插入图片描述

CA:为了达成数据一致性和系统可用性,不允许分区

CP:系统分区的时候保证一致性,到无法保证可用性

AP:系统分区的时候保证可用性,但无法保证数据一致性

CAP的三大限定条件

分布式

分布式,可能发生网络分区

数据存储

通过复制来实现数据共享的存储系统

同时满足

同时满足CAP

CAP细节

复制延迟

在这里插入图片描述

理论上:CAP是忽略网络延迟的

工程落地:PACELC猜想(Partition -> Availability, Consistency, Else -> Latency, Consistency.)

描述粒度

在这里插入图片描述

CAP关注的是单个数据,不是整个系统,系统数据可以有的符合CP,有的符合AP

更多

正常情况下,可以满足CA,但是实际上有很小的时延

放弃!=无为,需要为分区恢复后的数据恢复和业务恢复做好准备

CAP的CA和ACID的CA定义完全不同,两者适应的领域也不同

BASE理论

BASE 是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency),核心思想是即使无法做到强一致性(CAP 的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性

Basically Available:读写操作尽可能的可用,但写操作在冲突的时候可能丢失结果,读操作可能读取到旧的值

Soft State:没有一致性的保证,允许系统存在中间状态,而该中间状态不会影响系统整体可用性,这里的中间状态就是CAP 理论中的数据不一致

Eventually Consistency:如果系统运行正常且等待足够长的时间,系统最终将达成一致性的状态

Eventual & Strong Consistency

在这里插入图片描述

BASE与CAP

在这里插入图片描述

BASE/CAP/FLP 落地

在这里插入图片描述

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

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

相关文章

通过WebSocket实现实时系统通知,以后再也不能装作没看到老板的通知了~~

📞 文章简介:WebSocket实时通知Demo 💡 创作目的:因为公司正在从零搭建CRM,其中有一个需求是系统通知管理,老板发布通知给员工。简单的用数据库实现感觉缺少一些实时性,不是那么生动。于是想到了…

向毕业妥协系列之深度学习笔记(三)DL的实用层面(上)

目录 一.训练_开发_测试集 二.方差与偏差 三.正则化 四.Dropout正则化 五.其他正则化方法 本篇文章大部分又是在ML中学过的,除了Dropout正则化及之后的部分。 一.训练_开发_测试集 在配置训练、验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创…

[Spring MVC 8]高并发实战小Demo

本项目基于Spring MVC进行关于点赞项目的开发,从传统的点赞到高并发缓存开发最后到消息队列异步开发,可谓是令人大开眼界。 本篇博客全部代码已经放出,本博客重点是后端操作,所以对于前端就十分简单的页面。讲述了关于Redis,Quart…

软件安装教程1——Neo4j下载与安装

Neo4j的下载地址Neo4j Download Center - Neo4j Graph Data Platform 我下载的是Neo4j社区版(免费)【企业版收费】 解压后的目录如下: 接下来配置环境变量 进入bin目录,复制路径:E:\neo4j\neo4j-community-5.1.0-win…

决策树——预剪枝和后剪枝

一、 为什么要剪枝 1、未剪枝存在的问题 决策树生成算法递归地产生决策树,直到不能继续下去为止。这样产生的树往往对训练数据的分类很准确,但对未知的测试数据的分类却没有那么准确,即容易出现过拟合现象。解决这个问题的办法是考虑决策树…

【Lua基础 第2章】lua遍历table的方式、运算符、math库、字符串操作方法

文章目录💨更多相关知识👇一、lua遍历table的几种方式🍂pairs遍历🍂ipairs遍历🍂i1,#xxx遍历🌟代码演示🍂pairs 和 ipairs区别二、如何打印出脚本自身的名称三、Lua运算符🔸算术运算…

微服务治理-含服务线上稳定性保障建设治理

微服务的概念 任何组织在设计一套系统(广义概念上的系统)时,所交付的设计方案在结构上都与该组织的沟通结构保持一致。 —— 康威定律 微服务是一种研发模式。换句话理解上面这句康威定律,就是说 一旦企业决定采用微服务架构&am…

Js逆向教程-12FuckJs

Js逆向教程-12FuckJs 它利用了js的语法特性: 一、特性1 任何一个js类型的变量结果 加上一个字符串 ,只会变成字符串。 数组加上字符串: [0]"" 0true加上字符串 true "" true数字加上字符串 1"" 1二、特性…

14天学习训练营之 初识Pygame

目录 学习知识点 PyGame 之第一个 PyGame 程序 导入模块 初始化 ​​1.screen 2. 游戏业务 学习笔记 当 init () 的时候,它在干什么? init () 实际上检查了哪些东西呢? 它到底 init 了哪些子模块? 总结 14天学习训练营导…

2023年计算机毕设选题推荐

同学们好,这里是海浪学长的毕设系列文章! 对毕设有任何疑问都可以问学长哦! 大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越…

·工业 4.0 和第四次工业革命详细介绍

工业 4.0 是制造/生产及相关行业和价值创造过程的数字化转型。 目录 工业 4.0 指南 工业 4.0 与第四次工业革命互换使用,代表了工业价值链组织和控制的新阶段。 网络实体系统构成了工业 4.0 的基础(例如,「智慧机器」)。他们使用…

基于SpringBoot+Vue的疫苗接种管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端:SpringBoot 前端:Vue 数据库:MySQL5.7 数据库管理工具:Navicat 12 服务器:Tomcat8.5 开发软件:IDEA / MyEclipse 是否Maven项…

实验二 帧中继协议配置

计算机网络实验实验二 帧中继协议配置一、实验目的二、实验内容三、实验条件四、实验步骤4.1 连接帧中继交换网4.2 创建DLCI4.3 创建串行接口间的虚电路映射关系4.4 配置路由器的串行接口七、思考题实验二 帧中继协议配置 一、实验目的 掌握路由器上配置帧中继协议的方法 掌握…

SSM整合(一)

SSM整合之简单使用通用mapper 1.准备工作 1.1 在java文件夹下面创建所需要的目录 1.2 导入SSM整合时所需要的所有依赖 <properties><!--这个是统一一些spring插件的包名,避免因为版本不一样而报错--><spring.version>5.3.22</spring.version></p…

SAP S4 FI 后台详细配置教程文档 PART2 (财务会计的基本设置篇)

本篇是系列文章的第二部分&#xff0c;目标是家在配置“字段状态变式”和“年度与期间的配置” 目录 1、 字段状态变式 1.1定义字段状态变式 1.2 向字段状态变式分配公司代码 2、会计年度与记账期间 2.1维护会计年度变式 2.2 向一个会计年度变式分配公司代码 2.3定义未结…

服务器虚拟化有什么好处

服务器虚拟化是一种逻辑角度出发的资源配置技术&#xff0c;是物理实际的逻辑抽象。对于用户&#xff0c;虚拟化技术实现了软件跟硬件分离&#xff0c;用户不需要考虑后台的具体硬件实现&#xff0c;而只需在虚拟层环境上运行自己的系统和软件。 说起服务器虚拟化这个技术&…

你的新进程是如何被内核调度执行到的?(下)

接上文你的新进程是如何被内核调度执行到的&#xff1f;&#xff08;上&#xff09; 四、新进程加入调度 进程在 copy_process 创建完毕后&#xff0c;通过调用 wake_up_new_task 将新进程加入到就绪队列中&#xff0c;等待调度器调度。 //file:kernel/fork.c long do_fork(.…

表白墙服务器版【交互接口、服务器端代码、前端代码、数据存入文件/数据库】

文章目录 一、准备工作二、约定前后端交互接口三、实现服务器端代码 四、调整前端页面代码五、数据存入文件六、数据存入数据库一、准备工作 1) 创建 maven 项目2) 创建必要的目录 webapp, WEB-INF, web.xml&#xff1b;web.xml如下&#xff1a;<!DOCTYPE web-app PUBLIC&qu…

家居行业如何实现智能化?快解析来助力

什么是智能家居&#xff1f;主要是指利用先进的电子通信技术&#xff0c;将居家生活有关的各个子系统有机结合在一起&#xff0c;通过网络化便可以对这些系统进行智能控制与管理。智能家居概念之所以逐渐普及&#xff0c;得益于物联网、大数据、人工智能等新兴技术的进步。智能…

科学计算模型 Numpy 详解

本文主要介绍Numpy&#xff0c;并试图对其进行一个详尽的介绍。 通过阅读本文&#xff0c;你可以&#xff1a; 了解什么是 Numpy掌握如何使 Numpy 操作数组&#xff0c;如创建数组、改变数组的维度、拼接和分隔数组等掌握 Numpy 的常用函数&#xff0c;如数组存取函数、加权平均…