高并发场景下,系统的保护机制
伴随着分布式,微服务项目的快速发展。各个微服务的调用和通讯难免会出现依赖关系,如果上游服务在依赖下游服务的时候下游服务出现了故障从而导致下游服务的不可用,进一步导致了上游的服务被拖垮,就会发生服务雪崩,故障蔓延。很容易造成严重的业务后果,进而造成不可预估的经济损失。因此我们在分布式架构中引入了系统保护机制。
正常来说我们的服务调用是不会出现什么问题的,但是在网络通讯中,往往会有很多因素去导致服务会出现很多不可用的情况,通常我们处理这种问题有会四种方案。分别是超时,限流,断路器以及仓壁模式。
设置超时时间

例如现在有两个上下游的服务,即服务A要去依赖服务B,如果服务B发生了故障,即服务B已经不可用。当服务A去调用服务B的时候,我们可以给服务A的调用线程设置一个超时时间,若服务B的响应时间超过了我们设置的超时时间。我们就会认为是请求出现了超时的异常,并同时释放掉服务A所对应的线程资源。
限流
因为服务雪崩这个效应一般是由高并发的流量引起的一个现象。因此我们可以在上游服务中增加相对应的限流机制,一旦某个时间的流量超出了我们设置的阈值的时候,服务将不再处理新的请求,从而避免了调用链路的下一个阶段可能会承受到大量的并发导致服务宕机或者瘫痪。
断路器(熔断器)
这里借用Martin Flawer的一篇关于断路器的论文,其中对断路器做了详细的描述。

图中显示断路器一共有三种状态,分别是关闭,打开以及半开放。
正常情况下,当我们的服务的请求链路没有出现任何故障的时候,断路器是出于关闭状态的。
当目标服务暂时不可用,新的请求不会打到对应的服务器上,就对应了打开状态。如下图。
当服务A去调用服务B时出现了异常,并且异常数量或者异常的比例达到了某个阈值的时候,熔断器的开关就会被打开,如上图所示。即后续服务A的请求将会直接置为失败,将不会再发送到服务B上。
第三个是半开放状态,熔断开关会有一个打开的时间限制,当触发到时间限制的一个阈值的时候,熔断器会尝试让服务A中的请求发送到服务B上,这个时候熔断器开关会属于半开放状态,如果当前这一次的尝试成功的发送给B服务同时满足正常的返回结果,那么熔断器将会把这个开关关闭,如果本次请求依然有问题,那么熔断器会继续出于打开的状态,直到下一个时间窗口再次进行尝试。
仓壁模式
仓壁模式也叫做隔离模式,也就是通过隔离不同的业务处理从而降低故障影响的范围。假设有两个服务,仍然是服务A和服务B,在默认情况下服务B去接收到请求的处理过程都是使用过的Web容器中的线程池,由于所以得业务处理都是公用Web容器中的线程池的,如果在某个服务出现故障的时候就会导致整个线程池的资源被耗尽,从而去影响其他业务的访问。那么在这个过程中,我们可以引用线程池的隔离技术从而解决这个问题。针对不同的业务服务调用,选取不同的线程池,及时某个业务相关的线程池挂了,也不会影响到其他业务的线程池。从而保证了隔离性。
推荐感兴趣的小伙伴可以了解一下Sentinal或者是Hystrix。
相关文章:
高并发场景下,系统的保护机制
伴随着分布式,微服务项目的快速发展。各个微服务的调用和通讯难免会出现依赖关系,如果上游服务在依赖下游服务的时候下游服务出现了故障从而导致下游服务的不可用,进一步导致了上游的服务被拖垮,就会发生服务雪崩,故障…...
服务器构建私有npm库(Docker + Verdaccio)
npm官网有时候因为网络原因包推不上去,那就简单构建个私有库 私有库不会被共享,且配置不需要太高1h2G就行 1.需要安装Docker,这个跳过了 2.生成配置文件 mkdir /home/verdaccio cd /home/verdaccio mkdir conf && mkdir storage &am…...
LabVIEW做二次开发时应该注意哪些方面?
在使用LabVIEW进行二次开发时,以下几个方面需要特别注意: 需求明确化: 确认并详细记录客户的需求,明确系统的功能、性能、可靠性等要求。制定详细的需求文档,并与客户反复确认,避免后期的需求变更和误解。 …...
docker配置上网代理获取镜像
一、添docker子配置档设置 1、创建目录 mkdir /etc/systemd/system/docker.service.d 2、创建http-proxy.conf文件,增加以下内容 cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF [Service] Environment“HTTP_PROXYhttp://192.168.0.2:8118…...
SqlSugar删除没有定义主键的实体类对应的数据库表数据
一般而言,使用SqlSugar的DbFirst功能创建数据库表实体类时,如果数据库表有主键,生成的实体类对应属性也会标识为主键,如下图所示。 但有时候生成的实体类没有自动配置主键,这时可以通过以下方式进行删除操作&…...
虚拟机复制后网络不可用,报错“network.service - LSB: Bring up/down networking”
查询IP地址,eth33 没有显示IP地址 尝试重启,有报错,并且有提示,按照提示执行下看看 解决办法 chkconfig NetworkManager offsystemctl disable NetworkManager.serviceservice NetworkManager stopservice network restart 之后检…...
Redis 7.x 系列【30】集群管理命令
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 集群信息2.1 CLUSTER INFO 3. 节点管理3.1 CLUSTER MYID3.2 CLUSTER NODES3…...
将YOLOv8模型从PyTorch的.pt格式转换为TensorRT的.engine格式
TensorRT是由NVIDIA开发的一款高级软件开发套件(SDK),专为高速深度学习推理而设计。它非常适合目标检测等实时应用。该工具包可针对NVIDIA GPU优化深度学习模型,从而实现更快、更高效的运行。TensorRT模型经过TensorRT优化,包括层融合(layer …...
Hello SLAM(在Linux中实现第一个C++程序)
首先需要安装vim编辑器,输入命令 sudo apt install vim 在Ubuntu上安装好vim编辑器后,创建路径(/home/slambook/ch2),在该路径下创建一个cpp文档(touch hello.c),通过vim编辑器进行…...
IPD推行成功的核心要素(十五)项目管理提升IPD相关项目交付效率和用户体验
研发项目往往包含很多复杂的流程和具体的细节。因此,一套完整且标准的研发项目管理制度和流程对项目的推进至关重要。研发项目管理是成功推动创新和技术发展的关键因素。然而在实际管理中,研发项目管理常常面临着需求不确定、技术风险、人员素质、成本和…...
C++ 鼠标轨迹API【神诺科技SDK】
一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,使得神诺科技 能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。 二.…...
设计模式|观察者模式
观察者模式是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它的所有观察者都会收到通知并更新。观察者模式常用于实现事件处理系统、发布-订阅模式等。在项目中,…...
python自动化运维 通过paramiko库和time库实现服务器自动化管理
目录 一.前言 二. 代码实现以及解析 2.1导入必要的库 2.2定义服务器信息 2.3创建 SSH 客户端连接函数 2.4执行远程命令函数 2.5获取系统信息函数 2.6重启服务函数 2.7 主函数 三.致谢 一.前言 在数字化时代,IT 基础设施的规模和复杂性不断增长&am…...
HTML常用的转义字符——怎么在网页中写“<div></div>”?
一、问题描述 如果需要在网页中写“<div></div>”怎么办呢? 使用转义字符 如果直接写“<div></div>”,编译器会把它翻译为块,类似的,其他的标签也是如此,所以如果要在网页中写类似于“<div…...
shell-awk文本处理工具
1、awk概述 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作 数据可以来自标准输入也可以是管道或文件 在 linux 上常用的是 gawk,awk …...
如何在测试中保护用户隐私!
在当今数据驱动的时代,用户隐私保护成为了企业和开发团队关注的焦点。在软件测试过程中,处理真实用户数据时保护隐私尤为重要。本文将介绍如何在测试中保护用户隐私,并提供具体的方案和实战演练。 用户隐私保护的重要性 用户隐私保护不仅是法…...
ARCGIS PRO DSK GraphicsLayer创建文本要素
一、判断GraphicsLayer层【地块注记】是否存在,如果不存在则新建、如果存在则删除所有要素 Dim GraphicsLayer pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault() 获取当前map对象中的GetLayer图层 Await Queue…...
看板项目之vue代码分析
目录: Q1、vue项目怎么实现的输入localhost:8080就能自动跳到index页面Q2、组合饼状图如何实现Q3、vue项目如何实现环境的切换Q4、vue怎么实现vue里面去调用js文件里面的函数 Q1、vue项目怎么实现的输入localhost:8080就能自动跳到index页面 …...
lua 游戏架构 之 游戏 AI (七)ai_dead
定义一个名为ai_dead的类,继承自ai_base类。这个类用于处理游戏中AI在死亡状态下的行为逻辑。以下是对代码的具体解释: 1. **引入基类**: - 使用require函数引入ai_base类,作为基础类。 2. **定义ai_dead类**: …...
前端开发知识(一)-html
1.前端开发需掌握的内容: 2.前端开发的三剑客:html、css、javascript Vue可以简化JavaScpript流程。 Element(饿了么开发的) :前端组件库。 Ngix:前端服务器。 3.前端开发工具:vscode 1)按…...
OpenClaw Auto Backup:基于Git的自动化数据备份与版本管理实战
1. 项目概述与核心价值最近在整理服务器上的项目文件和开发环境时,我又一次遇到了那个老问题:数据备份。手动执行git add . && git commit -m “update” && git push不仅繁琐,还容易忘记。对于需要备份多个目录,…...
避开这些坑,你的STM32四足机器人才能走得更稳:从步态调试到电源选择的完整避坑指南
STM32四足机器人实战避坑指南:从步态优化到系统稳定的全流程解决方案 当第一台自制的四足机器人颤颤巍巍地迈出第一步时,那种成就感无与伦比——直到它突然失去平衡翻倒在地。这个场景揭示了四足机器人开发中最真实的挑战:让机器人"能动…...
AI报告审核正在提升阻燃材料检测可信度:IACheck如何减少PSU阻燃等级报告里的合规风险
做高性能工程塑料检测的人都知道,PSU材料的阻燃等级测试,看起来只是一个等级判定,但真正进入报告审核阶段以后,往往比实验本身更容易出问题。因为PSU,也就是聚砜材料,常用于电子电气、轨道交通、医疗器械以…...
基于MCP协议与SearXNG构建AI智能体私有化搜索接口
1. 项目概述:一个为AI智能体打造的“搜索引擎接口”最近在折腾AI智能体(Agent)开发的朋友,可能都听说过MCP(Model Context Protocol)这个协议。简单来说,它就像给AI智能体装上了一套标准化的“插…...
建议科技部与教育部聘请耿同学做学术打假工作
目前,学术界和社会公众正在热议的有一个核心话题:学术打假。“耿同学”(B站科普博主“耿同学讲故事”)近期在学术打假领域的表现确实堪称“降维打击”。作为一名退学博士,他仅凭个人力量和一些开源AI工具,在…...
S32K3 FlexCAN实战:从MCAL配置到DMA接收,手把手教你避开那些手册里没写的坑
S32K3 FlexCAN深度实战:从寄存器配置到DMA优化全链路解析 在车载电子架构快速迭代的今天,S32K3系列MCU凭借其强大的FlexCAN模块成为汽车电子开发者的首选。但官方文档往往只勾勒出理想状态下的功能框架,当工程师真正着手实现CAN FD通信时&…...
Flag MCP:终结AI编程猜测循环,实现人类在环的精准控制
1. 项目概述:当AI助手遇到“选择困难症”在AI辅助编程的日常里,我猜你和我一样,都经历过类似的场景:你让AI助手去实现一个功能,比如“给这个用户列表加个搜索框”,然后满怀期待地等着。结果它吭哧吭哧写了一…...
CAN 总线技术综合研究报告
CAN总线技术综合研究报告 报告日期: 2026年5月14日 引言 在当今高度信息化和自动化的世界中,设备内部以及设备之间的可靠通信是实现复杂功能的基石。从汽车的动力控制到工厂的自动化生产线,都需要一个高效、可靠的通信网络来协调各个控制单元的工作。控制器局域网(Contr…...
对话系统情感交互实践:从意图识别到动态话术生成的夸夸技能库设计
1. 项目概述:一个“夸夸”导航技能库的诞生最近在GitHub上看到一个挺有意思的项目,叫“kuakua-navigator-skills”。光看名字,你可能会有点摸不着头脑——“夸夸”和“导航技能”是怎么联系在一起的?这其实是一个典型的“命名即内…...
智能体驱动的学术论文自动化展示系统:从PDF到交互式网站与视频
1. 项目概述:从静态PDF到动态学术门户的智能跃迁如果你是一名研究者,或者经常需要阅读学术论文,你一定有过这样的体验:面对一篇动辄几十页、充满复杂公式和图表的PDF文档,想要快速抓住其核心创新点、理解方法细节、甚至…...
