【分布式计算】九、容错性 Fault Tolerance
分布式系统应当有一定的容错性,发生故障时仍能运行
一些概念:
可用性Availability:系统是否准备好立即使用
可靠性Reliability:系统连续运行不发生故障
安全性:衡量安全故障的指标,没有严重事件发生
可维护性Maintainability:衡量修复系统的难度
错误fault
一个系统在不能满足其规格时发生错误
容错性:存在故障时,系统仍能提供服务种类:暂时、间歇性、永久性故障
暂时、间歇性故障不易修复,难以复现
故障模型
1、崩溃故障:服务器停止,但正常工作,直到停止
2、遗漏/省略故障:接收遗漏、发送遗漏;服务器无法响应传入请求;服务器无法接收传入消息;服务器失败服务器的响应位于
3、定时故障:服务器响应超时;服务器的响应位于指定的时间间隔之外
4、响应失败:值故障、状态传递错误;服务器的响应不正确,响应的值错误,服务器偏离了正确的控制流
5、任意故障(拜占庭故障):服务器可能在任意时间产生任意响应
故障掩盖masking
解决方法:冗余
信息冗余
循环冗余检查(CRC),纠错位
时间冗余
重试,直到成功完成
物理冗余
重复组件(SW/HW):RAID
流程复制Process Replication
通过复制来屏蔽进程故障。
将流程组织成组,发送给一个组的消息将传递给所有成员。
我们需要创建多少个副本?如果一个系统有k个故障进程,即使它也能存活和工作,那么它就是k个容错的
崩溃故障: k+1副本
拜占庭失败: 2k+1副本
分布式协议算法
为什么我们需要达成协议?◦
领导,提交,同步问题
要求:所有无故障的过程在有限的步骤中达成一致共识,无论这个一致是否好。
拜占庭一般问题:假设:进程不可靠;通道可靠;如果通道不可靠?
A,B两方为了保证可靠性,导致无休止地握手
怎么解决
可靠RPC
可能发生的错误
1、客户端无法找到服务器
向客户机返回错误报告,
客户端收到错误通知后可以采用指数退避算法重试,直至超时;或者连接备用服务器
2、客户端请求丢失
重传请求
3、服务器响应丢失
没有简单的解决方案,因为它可能很难区分这种情况与服务器的崩溃。
如果请求是幂等的,我们可以尝试重新发送它们。
4、服务器崩溃
症状:发送多次无回应
至少一次语义(At-least-once-semantics):服务器保证无论如何,它都将至少执行一次操作要实现至少一次语义,客户端可以不断重发请求,直到从服务器接收到响应或确认。服务器可能需要处理幂等操作,以处理重复的请求。
在金融交易中,至关重要的是资金转账至少执行一次,即使可能导致重复的转账
最多一次语义:服务器保证它最多只执行一次操作
要实现至多一次语义,客户端和服务器可以使用唯一的请求标识符或序列号来识别和丢弃重复的请求。服务器可以维护已执行操作的记录以防止重复执行
在分布式文件系统中,您可能希望确保文件至多被删除一次,以避免数据丢失
5、客户端崩溃
服务器端的孤立计算,免费保留一些资源。服务器或客户端(重新启动后)应该处理孤立文件
恢复recovery
1、前向恢复forward:找到一个系统可以继续运行到新状态(恢复到明天)
先会退止上一个恢复点,在借助log(记录了request)再追赶到新进入的request
2、回滚恢复backward:将系统带回以前的无错误状态;我们需要提前建立恢复点;我们需要让流程合作来确定恢复的一致状态。
recovery line是两个合适的状态相同的checkpoint 相连
级联回滚:如果检查点是在“错误”的时刻完成的,则恢复线可能位于系统启动时。事务中的所有操作被撤销,数据库回到事务开始之前的状态,就好像事务从未执行过一样
独立的检查点:每个进程都独立地接受检查点,并存在级联回滚到系统启动的风险
协调检查点:每个进程在一个全局协调操作之后都接受一个检查点。
简单解决方案(两阶段阻塞)
协调器多播检查点请求消息
当参与者收到这样的消息时,它会执行检查点,停止发送(应用程序)消息,并报告它已经执行了检查点
当所有检查点都在协调器上得到确认时,后者会广播一条检查点完成消息,以允许所有进程继续进行
分布式消息队列
没有消息遗漏
副本如何部署:副本和主数据不能放在一起
snapshot:如何定义checkpoint
logs存放:不能在系统上,在外部;logs不能与实际存储放一起;需要logs的副本吗
同一物理机上多个逻辑分区集群
相关文章:
【分布式计算】九、容错性 Fault Tolerance
分布式系统应当有一定的容错性,发生故障时仍能运行 一些概念: 可用性Availability:系统是否准备好立即使用 可靠性Reliability:系统连续运行不发生故障 安全性:衡量安全故障的指标,没有严重事件发生 可维护…...
The SDK location is inside Studio install location 解决
The SDK location is inside Studio install location 解决 安装 Android Studio SDK 时提示:The SDK location is inside Studio install location 解决 问题: 由于 SDK 与 编辑器(Android Studio)的安装在同一目录下所以报错。 解决 你需要在 Andro…...
【蓝桥】数树数
一、题目 1、题目描述 给定一个层数为 n n n 的满二叉树,每个点编号规则如下: 具体来说,二叉树从上往下数第 p p p 层,从左往右编号分别为:1,2,3,4,…, 2p-1。 给你一条从根节点开始的路径࿰…...
2、Windows下安装
目录 一.安装 1、双击下载的程序: 2、加载完成后,会进入如下界面(选第一个Developer Default) 3、然后点击Next 点击Execute 然后Next 4.继续next注意端口为3306 5.继续next,输入账户密码(要有大小写…...
vue中transition的使用
Vue中的<transition>组件用于在元素或组件添加/移除时应用过渡动画。它能够包裹需要进行过渡效果的元素或组件,通过设置相应的CSS样式来实现过渡动画效果。 <transition name"过渡效果名称" before-enter"beforeEnter" enter"…...
性能测试中如何使用RunnerGo还原混合并发场景
我们在进行软件开发时经常需要进行性能测试、压力测试和负载测试。其中有一类测试场景叫做混合并发测试,需要模拟多个接口下不同数量的用户使用场景,检查同时处理多个并发任务的能力,本文将展示如何使用开源的RunnerGo还原混合并发场景。 在…...
KanziStudio described using object-oriented design patterns(持续更新...)
1.绑定-mvc mvc,model数据与view控件分离。...
线程同步的几种方式
目录 互斥锁条件变量读写锁信号量CAS-- 参考 线程同步方式有互斥锁,条件变量,信号量,读写锁,CAS锁等方式 互斥锁 互斥量 pthread_mutex_t在执行操作之前加锁,操作完之后解锁. 使用互斥量,来确保同一时刻只…...
Linux网络编程系列之服务器编程——多路复用模型
一、什么是多路复用模型 服务器的多路复用模型指的是利用操作系统提供的多路复用机制,同时处理多个客户端连接请求的能力。在服务器端,常见的多路复用技术包括select、poll和epoll等。这些技术允许服务器同时监听多个客户端连接请求,当有请求…...
在SQL语句里使用正则表达式,因该怎么使用
在SQL中使用正则表达式通常需要使用特定的函数或运算符,具体的语法可能因不同的数据库系统而有所不同。以下是使用正则表达式的一般方法,但请注意,具体语法可能会因您使用的数据库而有所不同。 一般情况下,您可以使用以下方法在S…...
扫码登录-测试用例设计
扫码登录测试用例...
PyTorch CUDA GPU高占用测试
0x00 问题描述 安装完成PyTorch、CUDA后,验证PyTorch是否能够通过CUDA高占用GPU(占用>95%),特地使用以下代码测试。 0x01 代码设计 这个代码会持续执行神经网络的训练任务,每次循环都进行前向传播、反向传播和参数…...
Java|学习|abstract ,接口 Interface , Object
1.abstract 1.1 abstract abstract 是修饰符,表示抽象的,用来修饰抽象类和抽象方法。 abstract 修饰的类是抽象类,抽象类不能创建对象,主要用于被子类继承。 abstract 修饰的方法是抽象方法,该方法没有方法体&…...
安全的Sui Move是Web3大规模采用之路的基石
没有信任,就没有Web3的大规模采用。还有其他重要障碍阻碍了首个十亿用户的到来,包括令人困惑的用户体验、复杂的身份验证模式以及不确定的监管体系,但所有障碍中,要数大多数人对区块链技术持怀疑和不信任态度最严重。 对于许多人…...
Python中图像相似性度量方法汇总
1. 引言 在当前到处充满着图像的世界里,测量和量化图像之间的相似性已经成为一项关键的任务。无论是图像检索、内容推荐还是视觉搜索,图像相似性方法在现代计算机视觉的应用中都发挥着关键的作用。 幸运的是,Python提供了大量的工具和库&am…...
pycharm中快速对比两个.py文件
在学习一个算法的时候,就想着自己再敲一遍代码,结果最后出现了一个莫名其妙的错误,想跟源文件对比一下到底是在哪除了错,之前我都是大致定位一个一个对比,想起来matlab可以快速查找出两个脚本文件(.m文件)的区别&#…...
C++程序结束
在C程序任意位置结束程序需要return 0,如果只return的话会发生生成错误...
嵌入式学习-核心板、开发板和单片机
目录 核心板开发板单片机三者关系 核心板 核心板是一种电路板,它集成了微处理器、存储器和一些必要的接口电路。它通常用于嵌入式系统或物联网设备中,作为整个系统的核心组件。它的主要功能是将微处理器的指令和数据总线转换为各种外设的接口࿰…...
【pycharm】控制台报错:终端无法加载文件\venv\Scripts\activate.ps1
目录 一、在pycharm控制台输入 二、在windows的power shell (以管理员方式打开) 三、 在pycharm控制台输入 四、重新打开pycharm即可 前言:安装pycharm2022-03版本出现的终端打开报错 一、在pycharm控制台输入 get-executionpolicy …...
Python算术运算符:加减乘除 整除 取余 幂指数 小括号
运算案例 需求:用户手工输入梯形的上底、下底以及高,能直接通过Python打印出梯形的面积为多少。 做这个需求前,首先要知道Python的算数运算符有哪些。 2、算术运算符 所谓的算数运算符就是我们日常生活中的加减乘除等待。 运算符描述实例…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

