《分布式技术原理与算法解析》学习笔记Day27

news2024/11/27 16:30:42

故障隔离

什么是故障隔离?

故障隔离,就是采用一定策略,以实现当某个模块发生故障时,不会影响其他模块继续提供服务,以保证整个系统的可用性,它可以避免分布式系统出现大规模的故障,甚至是瘫痪,降低损失。

分布式故障隔离策略

分布式系统中的故障策略有很多,基本可以分为两个维度:

  1. 以功能模块为粒度进行隔离,各个功能/服务模块之间松耦合,一个功能/服务模块出现故障,不会影响其他功能/服务模块,根据功能模块或者服务由线程执行还是进程执行,可以分为线程级隔离和进程级隔离。
  2. 通过资源隔离来实现,系统中各个模块拥有自己独立的资源,不会发生资源争抢,从而提升系统性能,根据资源所属粒度,可以划分成进程级隔离、虚拟机隔离、服务器隔离和机房隔离。

线程级隔离

线程级故障隔离,是指使用不同的线程池处理不同的请求任务。当某种请求任务出现故障时,负责其他请求任务的线程池不会受到影响,即会继续提供服务,从而实现故障隔离。

线程级的故障隔离策略,在生产环境中较为常用,尤其是针对单体应用。系统再实现线程级隔离后,线程间通信通常使用共享变量来实现,它是一个进程中的全局变量,在进程的各个县城间可以同时使用。

进程级隔离

分布式系统按照功能分为不同的进程,分不到相同或者不同的机器中。如果系统的进程分不到不同的机器,从资源的角度来看,也可以算作主机级别的故障隔离。

系统实现进程级隔离后,进程间的协同必须通过进程间通信来实现。进程间通信可以分为两类:

  1. 如果进程在同一个机器上,可以通过管道、消息队列、信号量、共享内存等方式。
  2. 如果进程分布在不同机器上,可以通过远程调用来实现。

资源隔离

资源隔离就是将分布式系统的所有资源分成几个部分,每部分资源负责一个模块,这样系统各个模块就不会争抢资源,即资源之间相互不干扰。这种方式不仅可以提高硬件资源利用率,也便于系统的维护和管理,大幅提升系统性能。

容器是微服务架构的基础,它本质上是操作系统的一个进程,但是与普通进程有以下区别:

  1. 普通进程有很大的计算或者内存需求时,可能会占满物理机上的所有CPU、内存资源,导致其他进程没有资源可用。
  2. 容器可以实现资源限制,让每个容器占用的资源都有一个上限,这个上限值限定了该容器的处理能力,一个容器使用的资源不会影响到其他容器的资源,从而避免资源争抢,提高性能。

从资源隔离的角度看,还可以有更多故障隔离策略,包括虚拟机隔离、集群隔离、机房隔离等,这些策略会跨集群、跨地域。

下面是关于各种故障隔离策略的详细比较。
在这里插入图片描述

用户级别故障隔离

用户级别故障隔离是指将不同用户分开,当系统出现故障时,只影响部分用户,而不是全体用户。

常用的用户级别故障隔离策略包括数据分片、负载均衡等。

  • 数据分片可以将不同用户的数据存储到不同的数据库,即一个数据库只存储部分用户的信息,这样当某个数据库出现故障时,仅影响该故障数据库存储的用户,不会影响其他用户。
  • 当处理请求的某个服务器出现故障时,负载均衡转发请求时,只会影响该故障服务器负责的用户请求,不会影响其他服务器正常提供服务。

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

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

相关文章

spark history文件占用磁盘过高问题解决

我们目前用的spark版本还是2.x spark的history事件是保存在hdfs上的,通过spark.history.fs.logDirectory指定保存的hdfs目录 使用中发现history日志文件占用磁盘还挺高的 于是写了一个脚本来定期进行清理,只保留一定时间的文件 对于spark离线任务来说…

开学季哪个电容笔好?2023口碑最好电容笔推荐

虽说苹果原装的电容笔非常好用,性能也非常不错,但由于价格昂贵,普通的学生是没办法购买的,再加上重量比较大,使用时间长了,难免会让人感觉到疲劳。如果仅仅是为了学习记笔记,那就没必要再去购买…

ubuntu搭建 自动驾驶单目3d检测smoke 环境

论文:SMOKE:Single-Stage Monocular 3D Object Detection via Keypoint Estimation 论文链接 源码 操作系统:ubuntu18.04 显卡:RTX2080TI 一、搭环境(前面和GitHub上一样,补上我踩的坑) 1.创建虚拟环境 conda create…

PayPal轮询系统解放你的生产力助力起航

现在很多跨境商家手里都有很多PayPal账号,本来多个PayPal账号就是为了防止一个账号出现问题,导致工作没办法继续下去。但是手动切换让很多盯站的商家觉得很麻烦。而且多账号之间本可以相互配合,让彼此的安全系数越来越高,风控越来…

win10 设备管理器中的黄色感叹号(华硕)

目录一、前言二、原因三、方案四、操作一、前言 打开设备管理器,我们可以看到自己设备的信息,但是在重装系统后,你总会在不经意间发现。咦,怎么多了几个感叹号??? 由于我已经解决该问题&#…

数据库事务详解

概述事务就是数据库为了保证数据的原子性,持久性,隔离性,一致性而提供的一套机制, 在同一事务中, 如果有多条sql执行, 事务可以确保执行的可靠性.数据库事务的四大特性一般来说, 事务是必须满足 4 个条件(ACID):原子性(Atomicity&…

vscode ssh一直卡在wget的解决方案

vscode ssh一直卡在wget的解决方案找到commit_id 在服务器下点进该目录 .vscode-server\bin 一般日期最新的那一串就是我们需要的commit_id下载vscode-server-linux-x64.tar https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable 将加粗部分替换…

2023年天津财经大学珠江学院专升本专业课考试题型

天津财经大学珠江学院关于2023年高职升本科专业课考试时间及题型一、专业课考试 (一)时间安排 2023年天津财经大学珠江学院高职升本科专业课考试定于2023年3月25日14:00-17:00进行,凡报考工商管理、旅游管理、税收学专业的考生&am…

智慧监所三维综合管控平台 构建数字智慧监管体系

建设背景监狱肩负着戒治管理、维持监所安全稳定等职责,目前全国有监管场所5500多个,监狱680多个。近年来,司法部不断加大司法行政改革力度,持续推进“数字法治,智慧司法”信息化体系建设战略部署。“智慧监狱”管理应用…

变更数据捕获(CDC)

从广泛意义上说,全球许多企业每天都需要通过频繁的数据批量处理与加载,来定期将数据从一个数据库迁移到另一个数据库(或数据仓库)。这类定期批量加载的工作,往往既耗费时间,又会消耗原始系统的大量处理能力。因此,管理…

design\project\学习 OAuth 读书笔记(二)

OAuth(二) 原文链接:OAuth 2.0 tutorial | OAuth flows 本文假设您已经看过 OAuth(一) 目录OAuth(二)OpenId ConnectOAuth2:令牌自检(Token Introspection)…

Qt std :: bad_alloc

文章目录摘要问题出现原因第一种 请求内存多余系统可提供内存第二种 地址空间过于分散,无法满足大块连续内存的请求第三种 堆管理数据结构损坏稍微总结下没想到还能更新参考关键字: std、 bad、 alloc、 OOM、 异常退出摘要 今天又是被BUG统治的一天&a…

fengMap 自定义dom 偏离实际位置;缩放时飘出地图所在区域

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.前人写了一份代码,很奇怪。使用 new fengmap.FMCompositeMarker添加的复合覆盖物位置是正常的,缩放的时候也是正常的,仍然处于地图内部;但是new fengmap.FMDomMarker添加…

Nginx 负载均衡服务失败场景

nginx可以配置负载均衡,我们可以通过配置实现nginx负载均衡。这里部署了两个服务producter-one和producter-one2。 upstream proxyproducter-one {server producter-one:8080 weight1;server producter-one2:8080 weight1;}# 访问其他服务server {listen 9090…

Netty学习(三):Netty线程模型

〇、前言网络编程的基本线程模型,详见:Netty学习(二):线程模型一、工作原理简图Netty主要基于主从 Reactors 多线程模型(如下图) 做了一定的改进,其中主从Reactor 多线程模型有多个R…

ServerSocket的构造方法

在开发TCP程序时,首先需要创建服务器端程序。JDK的java.net包中提供了一个ServerSocket娄,该类的实例对象可以实现一个服务器端的程序。通过查阅API文档可知,ServerSocket类提供了多个构造方法,接下来就对ServerSocket的构造方法进…

Pycharm配置QGIS环境

版本信息:QGIS: 3.22.16Pycharm:2022.3.2 (Community Edition)在QGIS官网下载安装包,下载稳定版本即可。配置步骤:安装完成后,使用Pycharm新建工程Python编译器选择之前配置好的编译器环境选择左侧第一个Vi…

YOLOv8训练自定义数据集(超详细)

借鉴 https://blog.csdn.net/qq_40716944/article/details/128648001一、准备训练环境安装 requirements.txt下载:https://raw.githubusercontent.com/ultralytics/ultralytics/main/requirements.txt然后在你 目录下执行pip install -r requirements.txt它的 requi…

【字符串】leetcode28. 实现 strStr()(C/C++/Java/Python/Js)

leetcode28. 实现 strStr() 1 题目2 KMP2.1 什么是KMP?2.2 KMP有什么用?2.3 什么是前缀表?2.4 最长公共前后缀2.5 为什么一定要用前缀表?2.6 如何计算前缀表2.7 前缀表与next数组2.8 使用next数组来匹配2.9…

2022 年度_职业项目总结_Java技术点归纳

Java技术点归纳目录概述需求:设计思路实现思路分析1.Structs 元工程改造2.个贷子系统开发3.架构的迭代开发,升级,部署,参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,fu…