当前位置: 首页 > news >正文

SpringCloud 06 服务容错 Sentinel

雪崩:一个微小的故障引起系统其他部分出现故障,最终使整个系统不可用。

雪崩一般经历以下三个阶段:

  1. 实例能力出现过载。可能是 bug 导致性能下降,可能是实例宕机,可能是突发流量,总之实例无法处理如此多请求。
  2. 服务资源耗尽不可用。过载后,大量请求积压在实例中,迅速消耗服务的CPU,内存,线程等资源。这些资源耗尽,实例出现超时和崩溃。表现为不可用。负载均衡器将请求调度到其他实例,其他实例也同样过载不可用。服务过载。
  3. 一个服务不可用,服务调用方也出现大量积压请求,同样出现过载。逆向沿着调用链路传播,最终导致系统雪崩。

解决思路:

  1. 熔断。调用方认为被调用服务过载,则快速返回错误,不执行调用。
  2. 限流。调用方限定请求量,避免过载。
  3. 降级。牺牲非核心业务保护核心业务。
  4. 扩容。增加实例,提升资源。

Sentinel

Sentinel 是服务容错插件。实现流量控制,熔断降级,系统保护等多个功能。
Sentinel 将被保护对象称为资源。资源可以是接口,URI,代码。
外部请求访问资源时,Sentinel 将外部请求包装为 Entry 对象,并交给 slot chain 处理。
slot chain 是典型的责任链模式。
常见的 slot 有:
NodeSelectorSlot构建请求的访问路径,并且串联调用链。
StatisticSlot统计运行期数据,比如接口响应时间,线程数,QPS等。
DegradeSlot判定是否熔断降级。FlowSlot判定限流。
实现ProcessorSlot接口可以自定义slot。

sentinel 流量控制模式:

  1. 直接流控。当前资源访问压力超出阈值,则限制请求。
  2. 关联流控。关联资源访问压力超出阈值,则限制请求。如果资源A与资源B争抢资源,比如数据库。而资源A优先级低。如果A的关联资源(B)的访问压力超出阈值,则限制A的请求,把数据库资源让给B。
  3. 链路流控。如果两个接口(/api/name, /api/overview)都能访问资源。而只想限流其中一个接口。

sentinel 流量控制策略:

  1. 快速失败。
  2. warm up。随时间增加流量阈值。
  3. 排队等待。请求进入等待队列,在等待队列中超时则失败。

@SentinelResource注解的blockHandler属性指定降级方法的名称,它仅在 BlockException 情况下触发。BlockException 是 sentinel 定义的异常类,表示被 slot chain 拦截。对于其他 RuntimeException,需要用 fallback 属性指定降级方法。

sentinel 提供三种熔断规则:

  1. 异常比例。
  2. 异常数。
  3. 慢调用比例。
http://www.lryc.cn/news/623633.html

相关文章:

  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • 中国星网发展情况全面分析
  • python实现梅尔频率倒谱系数(MFCC) 除了傅里叶变换和离散余弦变换
  • 3.逻辑回归:从分类到正则化
  • pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘
  • 数据赋能(396)——大数据——抽象原则
  • tauri2项目WindowConfig配置中titleBarStyle样式区别,仅macOS有效
  • 【Jenkins】01 - Jenkins安装
  • 阶段二:7-上网行为安全概述
  • Kotlin集合概述
  • 《PEFLL: Personalized Federated Learning by Learning to Learn》——论文阅读
  • 【Android】Activity创建、显式和隐式跳转、清单文件声明
  • Android 对话框 - 基础对话框补充(不同的上下文创建 AlertDialog、AlertDialog 的三个按钮)
  • 飞算JavaAI结合Redis实现高性能存储:从数据瓶颈到极速读写的实战之旅
  • 关于虾的智能养殖系统的开发与实现(LW+源码+讲解+部署)
  • 数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
  • 三维重建-动手学计算机视觉19(完结)
  • SHAP分析!NRBO-Transformer-BiLSTM回归预测SHAP分析,深度学习可解释分析!
  • ReID/OSNet 算法模型量化转换实践
  • 牛客周赛 Round 105
  • Redis-plus-plus API使用指南:通用操作与数据类型接口介绍
  • EDMA(增强型直接内存访问)技术
  • [每周一更]-(第155期):Go 1.25 发布:新特性、技术思考与 Go vs Rust 竞争格局分析
  • 多线程—飞机大战(加入排行榜功能版本)
  • 亚马逊拉美市场爆发:跨境卖家的本土化增长方程式
  • UE5多人MOBA+GAS 48、制作闪现技能
  • 第四章:大模型(LLM)】06.langchain原理-(7)LangChain 输出解析器(Output Parser)
  • CSS中linear-gradient 的用法
  • 【Python】Python 面向对象编程详解​
  • 多线程—飞机大战(加入播放音乐功能版本)