高可用--限流熔断降级
熔断
熔断是应对微服务雪崩效应的一种链路保护机制。
场景
- 服务端出现问题
- 服务指标:响应时间、错误率、连续错误数等,超过阈值出发熔断。
- 硬件指标:CPU、网络IO、内存
目的
- 服务端恢复需要时间、服务端需要休息
- 避免全调用链路崩溃,不能再把请求再发给Server了,一旦堆积也会造成其他服务出现问题
手段
- 熔断器直接抛出熔断的异常响应,三个状态切换,决定是否处于熔断状态

流程
- Server被监控到异常,出发熔断,熔断器抛出熔断的异常响应
- Client收到异常,利用负载均衡重新选择节点,后续请求不再打到被熔断的节点
- 一段时间后,Client再对这个节点重新请求,如果正常响应,则缓慢对这个节点放开流量,如果仍然是熔断状态,则继续执行Step2,如此循环
限流
场景 & 目的
-
突发的流量增大,使系统崩溃
-
判断指标:节点当前连接数、QPS等
静态算法
一般情况下,令牌产生速率/漏桶“开口速率”决定处理请求速率。
-
令牌桶:系统以恒定速率产生并把令牌放到桶里,每个请求从桶里拿到令牌才会被执行,反之被限流
-
漏桶:(令牌桶的桶容量是0就是漏桶)系统匀速产生令牌,没被取走也不会积攒下来。系统处理请求时均匀的。
-
固定窗口:固定时间段内,只执行固定数量的请求。
-
滑动窗口:滑动窗口随着时间线挪动窗口。
动态算法:BBR
类似于 TCP 的拥塞控制,根据一系列指标来判定是否需要触发限流。
流程
- 在中间件记录流量和阈值,并在中问件中实现限流算法。
- 对于偶发性的触发限流,只要在超时范围内,可以同步阻塞等待请求被处理。
- server的某个节点触发了 非偶发性限流,Client 利用负载均衡调低该节点的权重,尽量少向这个节点发请求。
如何确定阈值
- 阈值太低,导致资源被闲置;國值太高,导致系统撑不住而崩溃。
- 上线后看监控,根据业务峰值 QPS 来约定阈值。
- 上线前做压测,找准限流的阈值。
熔断&限流&降级关系
熔断是完全不再发请求,限流是降低发送请求的频率。
熔断是防止雪崩效应发生提前触发;
降级
场景&目的
- 系统出现故障后的补救措施;或可预见的故障前的应对措施,来保证整体的可用性。
- 对非核心业务降级,为核心业务留出更多资源。
手段
- 考虑停用部分监控埋点、日志上报等观测类中间件。
- 根据业务场景判断,停用边缘服务,返回服务繁忙之类的响应。
- 对于有缓存的接口,降级时只查缓存,不查 DB,没命中缓存则返回错误的响应。
终:核心思想
- 如何判断节点的健康状态?是否需要熔断/限流/降级?
- 通过监控看指标:QPS、连接数、节点负载等
- 熔断/限流/降级后,怎么恢复?
- 熔断/限流搭配负载均衡,等节点恢复正常后,再重新选择
- 降级有时是手动恢复
相关文章:
高可用--限流熔断降级
熔断 熔断是应对微服务雪崩效应的一种链路保护机制。 场景 服务端出现问题 服务指标:响应时间、错误率、连续错误数等,超过阈值出发熔断。硬件指标:CPU、网络IO、内存 目的 服务端恢复需要时间、服务端需要休息避免全调用链路崩溃&…...
win10电脑无法联网,设置IPv4,点击属性无法打开,闪退
win10设置IPv4,点击属性无法打开,闪退 问题:win10设置IPv4,点击属性无法打开,闪退 问题:win10设置IPv4,点击属性无法打开,闪退 第1步:用管理员打开cmd命令窗口,然后输入下面的命令&…...
【数据结构】邻接表与邻接矩阵的转换
一.基本思想 1.邻接矩阵转换为邻接表: 先设置一个空的邻接表,然后查找邻接矩阵的值不为零元素,找到后在邻接表的单链表对应位置加入表边节点。 2.邻接表转换为邻接矩阵: 在邻接表上顺序取出每个表边结点,将邻接矩阵…...
VR智慧景区:VR赋能文旅产业,激活消费潜能
随着国家数字化战略的不断深入实施,文旅产业数字化转型的步伐也在逐渐加快,以VR技术赋能文旅产业,让文旅景区线上线下双渠道融合,进一步呈现文化底蕴、激活消费潜能。 VR智慧景区以沉浸式、互动式、科技感的方式,将景区…...
Spring Boot EasyPOI 使用指定模板导出Excel
相信大家都遇到过,用户提出要把界面上的数据导成一个Excel,还得是用户指定的Excel格式,用原生的POI,需要自己去实现,相信是比较麻烦的,所以我们可以使用开源的EasyPOI. 先上个图,看看是不是大家…...
postgresql:记录表膨胀引起的io问题的处理
文章目录 1. io异常2.查看profile报告2.1 生成事发时间段的pgprofile2.2 查看报告 3.检查table是否膨胀4.执行vacuum full5.总结 1. io异常 iostat -x 1 20 Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq…...
Windows下安装RabbitMQ
1.安装Erlang 因为RabbitMQ是用Erlang语言编写的,所以在安装RabbitMQ之前需要先安装Erlang。 如果还未安装Erlang,官方下载安装包,点击Download Windows installer下载Erlang Downloads - Erlang/OTP 下载Erlang/OTP后,双击otp的…...
广州华锐互动VRAR:利用VR开展刑事案件公安取证培训,沉浸式体验提升实战能力
随着科技的飞速发展,虚拟现实(VR)技术为我们的生活和工作带来了前所未有的便利。近年来,VR技术在刑事案件公安取证培训中的应用逐渐显现出其独特优势。通过模拟真实的犯罪现场,VR技术为学员提供了沉浸式的体验,使他们在安全的环境…...
消息消费过程
前言 本文介绍下Kafka消费过程, 内容涉及消费与消费组, 主题与分区, 位移提交,分区再平衡和消费者拦截器等内容。 消费者与消费组 Kafka将消费者组织为消费组, 消息只会被投递给消费组中的1个消费者。因此, 从不同消费组中的消费者来看, Kafka是多播(Pub/Sub)模式…...
使用Lychee搭建个人图片存储系统并进行远程访问设置实现公网访问本地私人图床
文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…...
12-2- DCGAN -简单网络-卷积网络
功能 随机噪声→生成器→MINIST图像。 训练方法 0 损失函数:gan的优化目标是一个对抗损失,是二分类问题,用BCELoss 1 判别器的训练,首先固定生成器参数不变,其次判别器应当将真实图像判别为1,生成图像判别为0 loss=loss(real_out, 1)+loss(fake_out, 0) 2 生成器的…...
Redis持久化策略之RDB与AOF
文章目录 1.RDB1)基本介绍2)自动触发3)手动触发4)RDB文件5)优点缺点 2.AOF1)基本介绍2)使用方式3)工作流程4)重写机制5)AOF文件6)优点缺点 3.RDB AOF 我们都知道,redis 是一个基于内存的数据库。基于内存的好处是访问速度快,缺点是“不持久”——当数据…...
Python学习笔记--初识 Python 正则表达式
初识 Python 正则表达式 正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。 Python 自 1.5 版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正…...
webAPP基础学习
###视觉基础 part-I ####1.面试中常见的像素问题 >什么是像素? *1.什么是px? px-虚拟像素,css像素的单位 px是一个相对单位,相对于设备像素而言 >相对性 a.相对于同一个设备,css像素的可变的 css像素物理像素>会受到缩放的影响 css像素缩放倍数*单个物理像…...
RIP路由信息协议
RIP路由信息协议(Routing Information Protocol) 最先得到广泛应用的协议,最大优点是简单要求网络中的每个路由器都要维护一张表,表中记录了从它自己到其他每一个目的网络的距离RIP是应用层协议,它在传输层使用UDP,RIP报文作为UD…...
kubernetes 高可用集群
目录 一、haproxy负载均衡 二、pacemaker高可用 三、部署control-plane 四、部署worker node 实验环境 主机名 IP 角色 docker 192.168.67.10 harbor k8s1 192.168.67.11 control-plane k8s2 192.168.67.12 control-plane k8s3 192.168.67.13 control-plane k8s…...
java实现插入排序
图解 以下是Java实现插入排序的代码: public class InsertionSort {public static void main(String[] args) {int[] arr {5, 2, 4, 6, 1, 3};insertionSort(arr);System.out.println(Arrays.toString(arr)); // output: [1, 2, 3, 4, 5, 6]}public static void i…...
深度学习之基于YoloV5血红细胞检测识别系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习已经在许多领域中得到了广泛的应用,包括医疗健康领域。其中,YOLO(You O…...
8、可视化高斯滤波器并完成高斯滤波
本节一起绘制一个可视化的高斯滤波器,同时对一个彩色图像增加高斯噪声,最后通过一个高斯滤波器对图像进行降噪处理。 就像上节说的那样,滤波不是学习重点,下面通过实操了解下原理即可。 可视化高斯滤波器 高斯滤波器符合高斯分布,并且是二维高斯分布,这一点在上一节高斯…...
Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式
By: Ailson Jack Date: 2023.11.19 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/164.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。…...
实战解析:HAL库下ADC常规与注入模式在电机控制中的协同采样策略
1. HAL库下ADC双模式协同采样的必要性 在电机控制系统中,信号采集就像给医生做体检——既需要定期检查血压体温(缓变信号),又要在关键时刻做心电图(瞬态信号)。常规转换模式相当于体检中的常规项目…...
3分钟让通达信自动画缠论中枢:告别复杂手动画线
3分钟让通达信自动画缠论中枢:告别复杂手动画线 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为缠论分析中的手动画线、笔段划分、中枢识别而烦恼吗?ChanlunX缠论插件为你带…...
告别Minecraft模组英文界面:MASA全家桶汉化包完全指南
告别Minecraft模组英文界面:MASA全家桶汉化包完全指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 你是否曾经在Minecraft中面对满屏的英文模组界面感到困惑?…...
从零开始:YY3568开发板刷写原生Linux系统全流程指南
1. 项目概述与核心价值 最近拿到了一块YY3568开发板,这是一款基于瑞芯微RK3568芯片的嵌入式开发平台,性能相当不错。很多朋友拿到开发板后,第一反应就是跟着官方文档跑个Demo,或者直接用板子预装的Android系统。但如果你和我一样&…...
若依(RuoYi)框架安全自查清单:开发者必知的5个高危漏洞与修复方案
若依(RuoYi)框架安全自查清单:开发者必知的5个高危漏洞与修复方案 在当今快速迭代的软件开发环境中,安全防护已成为项目全生命周期中不可忽视的关键环节。作为国内广泛使用的快速开发框架,若依(RuoYi)凭借其模块化设计和丰富的功能集成&#…...
别再纠结IO口了!手把手教你用三极管实现RS485自动收发(附电路图与阻值计算)
三极管驱动RS485自动收发电路设计实战指南 在嵌入式系统开发中,RS485通信因其抗干扰能力强、传输距离远等优势被广泛应用。然而传统RS485电路需要额外GPIO控制收发方向,当面临IO资源紧张或底层驱动不可控时,硬件工程师常陷入两难境地。本文将…...
二层与三层交换机核心差异解析:从MAC地址到IP路由的实战指南
1. 项目概述:从“傻”到“聪明”的进化之路如果你刚接触网络设备,看到“二层交换机”和“三层交换机”这两个名词,可能会有点懵。它们长得都差不多,都是方方正正的铁盒子,前面板一堆网口,后面插着电源和风扇…...
国产MCU生态构建与MM32系列选型开发实战解析
1. 项目概述:一场MCU生态的“集结号”2018年的那个秋天,对于国内嵌入式开发者,尤其是那些常年与ARM Cortex-M内核打交道的工程师们来说,记忆里应该有一场绕不开的盛会——灵动微电子举办的“2018灵动MM32协作大会”。这场大会的核…...
Windows风扇控制终极方案:从噪音困扰到静音高效的完整实战指南
Windows风扇控制终极方案:从噪音困扰到静音高效的完整实战指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tre…...
告别Python依赖!用SpringBoot+LangChain4j从零搭建企业级RAG知识库(附避坑指南)
告别Python依赖!用SpringBootLangChain4j从零搭建企业级RAG知识库(附避坑指南) 在AI技术快速落地的今天,检索增强生成(RAG)已成为企业知识管理的热门解决方案。然而,当大多数团队都在Python生态…...
