深入解析Sentinel熔断机制 - 详解

news/2026/1/17 19:12:36/文章来源:https://www.cnblogs.com/tlnshuju/p/19496984

深入解析Sentinel熔断机制 - 详解

2026-01-17 19:10  tlnshuju  阅读(0)  评论(0)    收藏  举报

以下内容来自于 Sentinel 的熔断降级(Degrade)机制,主要包括:

  1. DegradeRule:熔断规则的定义
  2. 两个 onRequestComplete() 方法(分别对应 慢调用比例异常比例/计数 两种熔断策略)
  3. 熔断状态机(CLOSE → OPEN → HALF_OPEN → CLOSE)的触发逻辑

下面我将系统性地解释这些内容,帮助你深入理解 Sentinel 的熔断机制是如何工作的。


一、DegradeRule:熔断规则的核心配置

public class DegradeRule extends AbstractRule {
private int grade;          // 熔断策略类型
private double count;       // 阈值(含义取决于 grade)
private int timeWindow;     // 熔断后恢复时间(秒)
private int minRequestAmount; // 最小请求数(防止统计噪声)
private double slowRatioThreshold; // 慢请求比例阈值(仅 RT 模式)
private int statIntervalMs; // 统计窗口长度(毫秒,默认 1000ms)
}

✅ 三种熔断策略(grade

常量含义count 的含义
0DEGRADE_GRADE_RT平均响应时间(RT)最大允许 RT(毫秒)
1DEGRADE_GRADE_EXCEPTION_RATIO异常比例异常比例阈值(0.0 ~ 1.0)
2DEGRADE_GRADE_EXCEPTION_COUNT异常数量每秒异常数阈值

注意:从 Sentinel 1.8 开始,RT 模式不再看“平均 RT”,而是看“慢请求比例”


二、RT 模式(慢调用比例)的工作原理

规则说明(来自你的注释):

接下来的 5 个请求 的 RT 都超过阈值,才触发熔断。

但这是 旧版逻辑(1.7 及之前)
1.8+ 版本已改为基于滑动窗口的“慢请求比例”判断,更科学。

新逻辑(1.8+)关键参数:

onRequestComplete()(RT 模式)做了什么?

public void onRequestComplete(Context context) {
long rt = completeTime - createTimestamp;
if (rt > maxAllowedRt) {
counter.slowCount.add(1); // 记录慢请求
}
counter.totalCount.add(1);    // 总请求数 +1
handleStateChangeWhenThresholdExceeded(rt);
}
handleStateChangeWhenThresholdExceeded() 核心逻辑:
  1. 如果当前是 OPEN 或 HALF_OPEN:只处理探测请求(见下文)
  2. 否则(CLOSE 状态)
    • 从滑动窗口中汇总:slowCounttotalCount
    • 如果 totalCount < minRequestAmount → 不判断(数据不足)
    • 计算慢请求比例:currentRatio = slowCount / totalCount
    • 如果 currentRatio > slowRatioThreshold触发熔断(OPEN)

✅ 举例:

  • count = 200(RT > 200ms 算慢)
  • slowRatioThreshold = 0.6
  • 过去 1 秒内有 10 个请求,其中 7 个 RT > 200ms → 比例 70% > 60% → 熔断!

⚠️ 三、异常模式(异常比例 / 异常数)的工作原理

onRequestComplete()(异常模式):

public void onRequestComplete(Context context) {
Throwable error = entry.getError(); // 通过 Tracer.trace(ex) 标记的异常
if (error != null) {
counter.errorCount.add(1);
}
counter.totalCount.add(1);
handleStateChangeWhenThresholdExceeded(error);
}
判断逻辑:
double curCount = errCount;
if (strategy == EXCEPTION_RATIO) {
curCount = errCount * 1.0 / totalCount; // 转为比例
}
if (curCount > threshold) {
transformToOpen(curCount);
}

✅ 举例(异常比例):

  • count = 0.5(50% 异常率)
  • 1 秒内 10 个请求,5 个抛异常 → 比例 50% ≥ 阈值 → 熔断!

✅ 举例(异常数):

  • count = 5(每秒 5 个异常)
  • 1 秒内 6 个异常 → 熔断!

四、熔断状态机(State Machine)

Sentinel 的熔断器有三种状态:

状态行为
CLOSE正常放行请求,统计 RT/异常
OPEN直接拒绝所有请求(抛 DegradeException),不执行业务
HALF_OPEN放行一个探测请求,根据结果决定是否恢复

状态转换逻辑

1. CLOSE → OPEN
  • 满足熔断条件(慢比例/异常比例超标)
  • 调用 transformToOpen()
  • 启动定时任务:timeWindow 秒后自动切换到 HALF_OPEN
2. OPEN → HALF_OPEN
3. HALF_OPEN → ?
  • 放行下一个请求作为探测:
    • 成功(无异常 & RT 正常)fromHalfOpenToClose() → 恢复
    • 失败(异常 or 慢)fromHalfOpenToOpen() → 再次熔断

注意:目前 Sentinel 的 HALF_OPEN 只探测 一个请求,不是多个。


五、关键设计思想总结

特性说明
基于滑动窗口统计使用 LeapArray 实现高精度、低内存的实时统计
防误判机制minRequestAmount 避免低流量时因个别慢请求误熔断
快速失败OPEN 状态下直接拒绝,不消耗资源
自动恢复timeWindow 后自动尝试恢复(HALF_OPEN)
策略灵活支持 RT、异常比例、异常数三种主流熔断场景

六、使用建议

  1. RT 模式

  2. 异常模式

  3. 监控


✅ 举个完整例子

// 配置:当 /order 接口慢请求比例 > 60%,且最小请求数 >= 10,熔断 10 秒
DegradeRule rule = new DegradeRule("GET:/order")
.setGrade(RuleConstant.DEGRADE_GRADE_RT)
.setCount(300)                  // RT > 300ms 算慢
.setSlowRatioThreshold(0.6)     // 慢请求比例 > 60%
.setMinRequestAmount(10)
.setTimeWindow(10);             // 熔断 10 秒
DegradeRuleManager.loadRules(Collections.singletonList(rule));

❓常见问题

Q:为什么我的熔断没触发?

A:检查:

Q:HALF_OPEN 为什么只试一次?

A:Sentinel 设计如此,简化实现。如需更健壮,可自行扩展 CircuitBreaker


✅ 总结

你看到的代码体现了 Sentinel 现代熔断器 的核心思想:

“基于实时指标 + 滑动窗口 + 状态机” 实现自适应熔断

它不再是简单的“连续 N 次失败就熔断”,而是:

理解这些,你就能合理配置熔断规则,并在系统出现不稳定时快速定位问题

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

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

相关文章

一键ssh登录服务器

起因 近期又准备把理财派拿出来玩一下。由于派挂在单位局域网,且找的一些内网穿透服务都很有限,自己又租了个阿里云,所以就自己搞个FRP吧(听说许久一直没下手)。没想到很快就完成了。在此基础上,索性就配个域名吧…

【50】背包数据集(有v5/v8模型)/YOLO背包检测

文章目录 1 数据集介绍1.1 说明1.2 类别 2 训练好的模型结果2.1 YOLOv5模型结果2.2 YOLOv8模型结果 3 数据集获取 ➷点击跳转至数据集及模型获取处☇ 1 数据集介绍 1.1 说明 图片数量1087张&#xff0c;已标注txt格式 训练集验证集按869:218划分可直接用于目标检测训练 1.2 …

智能推理路径规划中强化学习的创新算法

智能推理路径规划中强化学习的创新算法 关键词:智能推理路径规划、强化学习、创新算法、马尔可夫决策过程、Q学习 摘要:本文聚焦于智能推理路径规划领域,深入探讨强化学习的创新算法。首先介绍了相关背景知识,包括研究目的、预期读者、文档结构和术语表。接着阐述了核心概念…

导师推荐10个AI论文软件,专科生毕业论文必备!

导师推荐10个AI论文软件&#xff0c;专科生毕业论文必备&#xff01; AI 工具如何助力论文写作&#xff0c;专科生也能轻松应对 在当前的学术环境中&#xff0c;AI 工具已经成为许多学生提升论文质量的重要助手。尤其对于专科生而言&#xff0c;面对毕业论文的压力&#xff0c;…

导师推荐10个AI论文软件,专科生毕业论文必备!

导师推荐10个AI论文软件&#xff0c;专科生毕业论文必备&#xff01; AI 工具如何助力论文写作&#xff0c;专科生也能轻松应对 在当前的学术环境中&#xff0c;AI 工具已经成为许多学生提升论文质量的重要助手。尤其对于专科生而言&#xff0c;面对毕业论文的压力&#xff0c;…

FOC电机控制

一、FOC概述 FOC&#xff08;Field-Oriented Control&#xff0c;磁场定向控制&#xff09;是一种电机控制策略&#xff0c;又称矢量控制&#xff0c;是通过控制变频器输出电压的幅值和频率控制三相直流无刷电机的一种变频驱动控制方法。 它的基本思想是选取电机的某个旋…

小程序直播项目规划

最近做了一个小程序项目里面有个直播的功能遇到的一些问题 用的是腾讯云的 云直播,云点播,需要购买的是 云直播 流量包 直播转码包。云点播流量包 存储资源包 遇到一个小问题,IOS无法播放m3u8的东西,需要进行直播…

实用指南:项目性能优化实践:深入FMP算法原理探索|得物技术

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

救命神器!8个AI论文网站测评:本科生毕业论文救星

救命神器&#xff01;8个AI论文网站测评&#xff1a;本科生毕业论文救星 学术写作新选择&#xff1a;AI论文网站测评解析 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始依赖AI工具来辅助毕业论文的撰写。然而&#xff0c;面对市场上琳琅满目的AI论文网站&#x…

IDEA 2025.3 版本安装指南(完整图文教程)

一、卸载旧版 IDEA&#xff08;可选&#xff09; 若电脑已安装旧版 IDEA&#xff0c;建议彻底卸载以避免版本冲突&#xff1b;未安装旧版可直接跳过&#xff0c;进入“获取安装包”环节。具体操作步骤如下&#xff1a; 启动卸载程序&#xff0c;勾选【删除缓存和本地历史】选项…

最远点采样加速---FusePFS

PDF: 《FuseFPS: Accelerating Farthest Point Sampling with Fusing KD-tree Construction for Point Clouds》 一、背景故事 点云分析已成为各种应用中嵌入式和移动平台的关键工作负载。最远点采样(FPS)是点云处理…

基于 Flutter × OpenHarmony 的日期格式化显示实践

基于 Flutter OpenHarmony 的日期格式化显示实践 前言 在移动应用开发中&#xff0c;日期和时间的展示是非常常见的需求。尤其是在笔记、聊天、日志等应用场景下&#xff0c;用户更倾向于看到“今天”“昨天”这样的友好日期&#xff0c;而不是冗长的时间戳或标准日期格式。…

对话《AI元人文:迈向造化文明的操作系统——理论阐述》【全】

对话《AI元人文:迈向造化文明的操作系统——理论阐述》【全】 笔者:岐金兰(人机深度研究) 摘要 本文旨在对岐金兰所构建的“AI元人文”理论体系进行系统性综述与定位。该理论以超级智能时代多元价值主体共生的文明…

充电宝品牌怎么选?2026年最新聚焦安全痛点的终极指南与严选推荐。 - 品牌推荐

随着移动设备成为个人数字生活的核心,充电宝已从简单的应急配件,演变为关乎设备安全、数据隐私乃至出行体验的关键装备。尤其在差旅、户外及公共充电场景中,用户对电量续航、充电安全乃至隐私防护的需求日益复合化与…

2026年1月充电宝品牌实力排行榜:基于技术安全与用户口碑的TOP5权威榜单揭晓。 - 品牌推荐

随着移动设备成为数字生活的核心,用户对充电宝的需求已从基础的“电量补充”全面升级为对“安全可靠、场景适配与体验增值”的多维追求。据《2026中国消费电子趋势洞察报告》核心数据显示,领先的充电宝品牌正通过持续…

基于深度学习的口罩检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 本项目基于最新的目标检测算法YOLOv10&#xff0c;构建了一款高效的口罩检测系统&#xff0c;可精准识别人员是否佩戴口罩&#xff0c;适用于疫情防控、智能监控等场景。该模型在保证高检测精度的同时&#xff0c;优化了推理速度&#xff0c;使其能够实时运行于监…

充电宝品牌怎么选?2026年最新聚焦安全与便携的终极选择指南与实战推荐。 - 品牌推荐

研究概述 在移动设备成为生活与工作核心的当下,移动电源已从简单的续航工具演变为集安全、便携、多功能于一体的关键配件。本报告基于第三方客观立场,通过系统化的评估框架,对当前市场上主流的充电宝品牌进行横向对…

2026年1月充电宝品牌实力排行榜:基于安全技术与市场口碑的TOP5权威榜单揭晓。 - 品牌推荐

在移动设备成为数字生活核心的当下,充电宝已从单纯的续航工具,演变为集安全防护、场景适配、智能管理于一体的关键配件。2026年,充电宝市场呈现出“技术专业化、场景细分化、安全标准化”的鲜明趋势,领先品牌凭借在…

权威数据发布:2026年主流充电宝品牌在安全与可靠性维度的深度调研分析。 - 品牌推荐

当移动设备成为数字生活的延伸,充电宝的价值早已超越简单的“电量补给”。在机场、酒店、会议室等公共与半公共空间,用户对便携电源的需求正与日俱增的隐私安全焦虑紧密交织。一块普通的充电宝,可能成为信息泄露的潜…

基于深度学习的交通标志检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)

一、项目介绍 本项目致力于开发一个基于YOLOv10的交通标志检测系统&#xff0c;旨在通过计算机视觉技术实现对交通标志的高效检测与识别。该系统能够实时处理来自交通监控摄像头的视频流或图片&#xff0c;自动识别并标注出其中的交通标志&#xff0c;为自动驾驶、智能交通系统…