08-01 分布式系统理论

news2024/12/26 9:21:05

分布式一致性和CAP理论

  • C(一致性):在分布式环境中,一致性是指数据在多个副本之间能否保持一致的特性
  • A(可用性):系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。99.999%
  • P(分区容错性):分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供一致性和可用性的服务,除非整个网络环境都发生了故障。

分布式一致性算法

RAFT

  • Leader:只有一个
  • Follower:选民
  • Candidate:候选者
    过半数 + 1即变为leader
    在这里插入图片描述
    还可以自己选自己
    在这里插入图片描述
    leader挂掉之后的情况
    在这里插入图片描述

共识算法:拜占庭将军问题

  • 拜占庭帝国(Byzantine Empire)军队的几个师驻扎在敌城外,,每个师都由各自的将军指挥.。将军们只能通过信使相互沟通,在观察敌情之后,他们必须制定一个共同的行动计划,如进攻(Attack)或者撤退(Retreat),且只有当半数以上的将军共同发起进攻时才能取得胜利。然而,其中一些将军可能是叛徒,试图阻止忠诚的将军达成一致的行动计划。更糟糕的是,负责消息传递的信使也可能是叛徒,他们可能篡改或伪造消息,也可能使得消息丢失。
  • 为了更加深入的理解拜占庭将军问题,我们以三将军问题为例进行说明。当三个将军都忠诚时,可以通过投票确定一致的行动方案,General A,B通过观察敌军军情并结合自身情况判断可以发起攻击,而General C通过观察敌军军情并结合自身情况判断应当撤退。最终三个将军经过投票表决得到结果为进攻:撤退=2:1,所以将一同发起进攻取得胜利。对于三个将军,每个将军都能执行两种决策(进攻或撤退)的情况下,共存在6中不同的场景。上述是其中一种,对于其他5中场景可简单地推得,通过投票三个将军都将达成一致的行动计划。
  • 当三个将军中存在一个叛徒时,将可能扰乱正常的作战计划。例如General C为叛徒的一种场景,他给General A和General B发送了不同的消息,在这种场景下General A通过投票得到进攻:撤退=1:2,最终将作出撤退的行动计划;General B通过投票得到进攻:撤退=2:1,最终将作出进攻的行动计划。结果只有General B发起了进攻并战败。
  • 事实上,对于三个将军中存在一个叛徒的场景,想要总能达到一致的行动方案是不可能的。详细的证明可参看Leslie Lamport的论文。此外,论文中给出了一个更加普适的结论:如果存在m个叛将,那么至少需要3m+1个将军,才能最终达到一致的行动方案。

分布式环境中的脑裂和Lease

脑裂

  • 出现网络故障
  • 在这里插入图片描述
  • 由于网络问题一个集群变为多个集群,出现多个leader,这种现象就是脑裂
  • 在这里插入图片描述

解决方案

过半选举(Zookeeper)

保证集群的可用性,最少有大于一般的机器处于可用状态
在这里插入图片描述

发布leader证

每隔指定时间发布leader证,持有该证书的节点是leader。时间依赖于当前机器的时钟,因此会有时钟误差问题,需要保证集群内机器的时钟是同步的,一般设置在10秒钟的量级。
在这里插入图片描述

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

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

相关文章

butter滤波器

文章目录 什么是巴特沃斯滤波器?滤波器的阶数的含义matlab中的butterscipy.signal butter 中有哪些参数,各参数分别是什么含义? 本节围绕以下问题展开 butter 是什么?滤波器的阶数是什么意思?matlab中的butter参数含义…

00后工资太低想转行?选择云计算如何

00后已经成为目前从业最年轻的群体,有活力也需求明确,搞钱已经成为上班最核心的目的。但也有一波比较迷茫的00后,比如原专业学得不好,没有对口就业、工作内容不喜欢、工资太低养不活自己等等。而工资太低也是大部分00后想转行的主…

Linux 服务器设置 jar包开机自启动

一、新建jar包启动sh文件 新建startup.sh脚本文件,启动项目jar包 nohup java -jar test.jar >/dev/null 2>&1 & 二、设置自动启动命令 1.进入rc.d目录 执行cd /etc/rc.d 命令,进入rc.d目录 如图所示(示例)&…

如何将参考文献格式改成目标期刊要求的格式?

最近在改投期刊,所以要对参考文献的格式进行修改,记录一下修改过程中遇到的问题和解决方法,希望对小伙伴们有所帮助! (1)问题:不知道目标期刊的参考文献格式是什么怎么办? (2)解决:下载目标期刊…

论文解读:DeepZ:一种用于Z-DNA预测的深度学习方法

标题 DeepZ: A Deep Learning Approach for Z-DNA Prediction. DOI 10.1007/978-1-0716-3084-6_15 期刊 Methods in molecular biology 作者 Nazar Beknazarov; Maria Poptsova 出版日期 2023-01-01 Github:https://github.com/Nazar1997/Sparse-vector 网址 https://doi…

一篇文章了解 Java IO 流

一:IO 流的概述 1. 什么是 IO 流? 存储和读取数据的解决方法 I:input O:output 流:像水流一样传输数据 2. IO 流的作用? 用于读写数据(本地文件,网络) 3. IO 流按…

linux系统 数组 的运用

这里写目录标题 数组数组的定义数组的定义方式输出数组的方式数组包括的数据类型数组的删除与追加数组的删除数组的追加 数组切片与替换切片替换 冒泡排序 数组 数组的定义 数组是存放相同类型数据的集合,在内存中开辟了连续的空间,通常配合循环使用 …

爬虫逆向——某建筑市场监管平台的滑块验证码分析

目录 网址链接: 正文: 一、思路分析 二、图片处理 三、完整代码 网址链接: aHR0cHM6Ly9nY3htLmh1bmFuanMuZ292LmNuL2RhdGFzZXJ2aWNlLmh0bWw (bs64解密可见) 正文: 注:分步的代码为示例…

C语言中数据结构——带头双向循环链表

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,数据结构 🔥座右铭:“不要等到什么都没…

如何删除打印机任务?三种快速删除打印机任务的方法

打印机用户可能会经常遇到添加错的打印任务,或是一不小心重复选择过多的打印任务,环保人人有责,杜绝纸张浪费,驱动人生就为大家带来快速删除打印任务的方法。 方法一:使用Windows自带的清理功能 在Windows操作系统中…

谷歌全线反击!PaLM 2部分性能已经超越GPT-4

ChatGPT横空出世,所有人都能够明确感知到AI的惊人潜力,瞬间改变了整个AI行业的节奏,不紧不慢的谷歌也开始紧张了。 ChatGPT舆论热潮仍未消退,红色警报又拉响 北京时间5月11日凌晨1点,Google I/O 2023开发者大会上发布…

C++ | 深拷贝和浅拷贝

C 深拷贝和浅拷贝 当类的函数成员存在__指针成员__时会产生深拷贝和浅拷贝和问题。 在进行对象拷贝时会使用默认拷贝构造函数,默认进行浅拷贝,即只会拷贝指针的值,新拷贝的指针与原来的指针指向同一内存; 浅拷贝带来的问题是&…

stm32裸机开发下利用MultiTimer多任务时间片询

stm32裸机开发下利用MultiTimer多任务时间片询 📌MultiTimerGithub地址:https://github.com/0x1abin/MultiTimer ✨这是一个类似Arduino平台上的Ticker库,如需阅读懂源码,起码需要有链表知识的储备,如果仅仅只是拿来使…

docker学习笔记(二)

目录 启动Docker ​编辑 建立 Docker 用户 ​编辑 测试 Docker 是否正常工作 卸载Docker Docker镜像加速器配置 配置镜像 检查加速器是否生效 如何在Linux中的.json文件下保存并退出 如果我是使用vi操作进来的,我该如何保存并退出呢? 如何在Li…

3 步集成 Terraform + 极狐GitLab CI ,实现基础设施自动化管理

本文来自:极狐GitLab 开发者社区 作者:KaliArch 利用极狐GitLab CI 实现基础设施编排自动化后,用户就可以使用极狐GitLab 进行基础设施管理:提交基础设施变更后,会触发 MR 进行极狐GitLab CI 流水线执行,从…

电视盒子什么牌子好?数码小编分享2023热销电视盒子排行榜

整理私信的时候有朋友希望我能分享电视盒子排行榜,对不了解电视盒子什么牌子好的朋友们来说,选购电视盒子时很容易踩雷,因此我根据各大电商平台的销量数据整理了最新热销电视盒子排行榜,对电视盒子感兴趣的朋友们可以了解一下。 ●…

时序预测 | Python实现AR、ARMA、ARIMA时间序列预测

时序预测 | MATLAB实现VAR和GARCH时间序列预测 目录 时序预测 | MATLAB实现VAR和GARCH时间序列预测预测效果基本介绍模型原理程序设计参考资料预测效果 基本介绍 Python实现AR、ARMA、ARIMA时间序列预测 模型原理 AR、ARMA、ARIMA都是常用的时间序列预测方法,它们的主要区别在…

功能优化升级,添加更丰富的刷题练习设置|会员权益、答题后显示数据、切题按钮、进入小组必设昵称、小组统计筛选条件、考试排行榜、优化缓存机制

土著刷题微信小程序v1.14,主要是针对用户在使用期间提的一些优化建议,经过评估后进行优化升级的一次版本,下面将逐条介绍一下这一版的优化点。 01 会员权益页面 通过对用户提出的问题进行归纳总结,部分用户在购买VIP时&#xff0c…

【git】修改作者和提交者信息

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 修改git作者和提交者信息 1. 正文 1.1 前提 1.1.1 作者和提交者 作者就是我们git log看到的信息,如下: 其修改方式参考&…

linux应用编程

项目内容 开发板内部使用c语言调用硬件驱动实现各种测试功能,保存测试结果。 外部程序通过socket接口使用tcp协议与开发板通信进行信息传输, 最后使用python GUI构造一个界面按照测试顺序逐步显示出各个模块的测试结果 测试包括:485-232uart、…