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

微服务-Sentinel

目录

 

     背景

     Sentinel使用

      Sentinel控制台

      Sentinel控制规则

     Sentinel整合OpenFeign


  

     背景

        在微服务项目架构中,存在多个服务相互调用场景,在某些情况下某个微服务不可用时,上游调用者若一直等待,会产生资源的消耗,极端情况下会影响整个应用,如下图:

        在高并发的场景下,由于A服务不可用,导致B调用A一直等待,迟迟不能释放资源,进而导致B服务不可用,进而导致CD服务不可用,最终整个项目服务不可用,产生了服务崩塌。Sentinel可以解决上述问题,它在服务流量控制、熔断等方面有很好的解决方案。

        Sentinel常用的使用场景如下:
        1、秒杀场景:限流防止瞬时流量冲击。

        2、服务熔断与降级:当服务不可用时,快速失败,避免级联故障。

        3、系统保护:预防由于高负载引发的系统崩溃。

     Sentinel使用

      Sentinel控制台

        Sentinel 控制台是一个独立应用,用于可视化的监控和管理,它可以直接运行可执行的jar,项目使用的jar版本是:sentinel-dashboard-1.8.8,直接运行:java -jar sentinel-dashboard-1.8.8.jar

运行后访问:http://localhost:8080/#/login   sentinel/sentinel登录

      Sentinel控制规则

        Sentinel控制规则很多,包括:流控规则、熔断规则、热点规则、系统规则、授权规则,本文重点介绍流控规则、熔断规则。项目配置步骤如下:

        1、项目添加对Sentinel的依赖

        2、项目配置Sentinel

        3、服务接口编写及简单测试

        简单写了一个后台数据库查询接口,查询id=1的用户信息

        4、Sentinel控制台配置流控规则

        对上述服务接口,配置了每秒请求数不能超过1的流控规则,超过后,直接返回调用失败,浏览器快速请求后,会出现如下效果(流控规则已生效):

        流控规则配置说明如下:

        资源名:资源名是需要限流的唯一标识,可以是方法名、API请求路径等。通过资源名,Sentinel能够对流量进行管理与控制。

        针对来源:针对特定的调用方进行限流。例如,服务A调用服务B时,可以针对服务A的调用进行限流。默认为 default,表示不区分调用来源。

        QPS(每秒请求数):如果某个资源的每秒请求数超过设定的阈值,则会触发限流。

        线程数:当访问该资源的并发线程数达到设定的阈值时,触发限流。

        是否集群:如果不需要集群模式限流,默认选择“不需要集群”。否则,可以开启集群限流。

        流控模式-直接限流:一旦达到阈值,直接限流当前的请求。

        流控模式-关联限流:当关联的其他资源达到限流条件时,限流当前的资源。比如/resourceA达到阈值时,/resourceB也被限流。

        流控模式-链路限流:对入口资源进行链路限流,限制从指定入口进入的资源访问。当链路上的访问量达到阈值时,限制链路上的流量,常用于链路保护。

        流控效果-快速失败:当达到限流条件时,直接抛出异常,返回失败结果。

        流控效果-Warm Up(预热):在一段时间内,逐步增加允许通过的流量,直至达到设定的 QPS 阈值。适合应用在高峰期流量突增的场景。

        流控效果-排队等待:请求不会立即失败,而是进入排队状态,匀速通过。适用于平滑处理请求的场景,类似于“漏斗效应”。阈值类型必须为 QPS,否则无效。

        如果需要手工处理限流或者降级的逻辑,不直接演示生硬的【Blocked by Sentinel (flow limiting)】信息,可以通过@SentinelResource 解决,参考代码如下:

        blockHandler:处理限流或降级时的逻辑,方法名必须是 public,返回类型与原方法一致,且参数类型需要与原方法匹配,方法最后要加上 BlockException 参数。可以处理流控、熔断等情况触发的 BlockException。

        5、Sentinel控制台配置熔断规则

        Sentinel 的熔断规则主要分为三种策略,慢调用比例、异常比例和异常数,这些策略用于保护服务免于过载或连续的失败。

        慢调用比例 :该策略会根据请求响应的时间来判断是否进行熔断,适合用于防止因某些请求响应过慢而拖垮整个系统。

        最大RT(Response Time):表示系统中允许的最大响应时间,如果一个请求的响应时间超过这个设定值,就会被判定为慢调用

        最小请求数目:在统计周期内,只有请求数超过设定的最小请求数,才会触发熔断逻辑。

        熔断条件:当单位时间内内的慢调用比例超过设定的阈值时,触发熔断,进入熔断状态。

        恢复机制:在熔断时长过后,进入半开状态,如果后续请求正常则关闭熔断器,如果再发生慢调用则继续熔断。
        
        异常比例:该策略会根据异常的比例来判断是否进行熔断,适合用于当请求的失败率突然增加时,自动进行保护。

        最小请求数目:同样需要单位时间内的请求数达到设定的最小值,才会计算异常比例。

        熔断条件:当单位时间内内的异常比例大于设定的阈值时,触发熔断,进入熔断状态。

        恢复机制:在熔断时长过后,进入半开状态,如果后续请求成功,则关闭熔断器,否则继续熔断。
        异常数:该策略根据单位时间内的异常数量来判断是否熔断,适合用于系统中发生大量异常时的保护机制。

        下方以异常数熔断规则举例:

        后台模拟异常

        异常数熔断规则配置:

        在10秒时间内,最小请求大于5,接口出现10次异常后,接口服务熔断不可用

        jemter多线程请求测试:

        启动jemter任务,然后在浏览器请求:http://localhost:8088/blogUser/simulateException 显示接口服务已熔断。

        当关闭jemter测试任务后,再次请求  http://localhost:8088/blogUser/simulateException 后,服务接口恢复。

     Sentinel整合OpenFeign

        Sentinel整合OpenFeign步骤如下:

        1、增加配置信息

        2、对feign接口增加服务降级的逻辑

        3、测试调用

        在blog-content服务正常可用时,调用http://localhost:8088/blogUser/simulate 时,系统返回后台数据信息;当关闭blog-content服务时,控制台显示【BlogContent 服务降级】

           

http://www.xdnf.cn/news/767197.html

相关文章:

  • Oracle expdp过滤部分表数据
  • vue-12 (路由守卫:全局、每个路由和组件内)
  • 【Unity】相机 Cameras
  • 项目管理进阶:56页大型IT项目管理实践经验分享【附全文阅读】
  • 数据库系统概论(十四)详细讲解SQL中空值的处理
  • Leetcode 2123. 使矩阵中的 1 互不相邻的最小操作数
  • 数据结构之堆:解析与应用
  • 高阶数据结构——并查集
  • vscode 插件 eslint, 检查 js 语法
  • mysql分布式教程
  • 构建高性能风控指标系统
  • AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆
  • Arbitrum Stylus 合约实战 :Rust 实现 ERC721
  • Windows 账号管理与安全指南
  • Java后端优化:对象池模式解决高频ObjectMapper实例化问题及性能影响
  • SCAU8639--折半插入排序
  • JS手写代码篇---手写类型判断函数
  • Linux 基础指令入门指南:解锁命令行的实用密码
  • 无他相机:专业摄影,触手可及
  • 【C++高级主题】转换与多个基类
  • 电力系统时间同步系统
  • 玩客云 OEC/OECT 笔记(2) 运行RKNN程序
  • 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——4. 配置服务器终端环境 zsh , oh my zsh, vim
  • 数智管理学(十六)
  • 需求调研文档——日志文件error监控报警脚本
  • CSS强制div单行显示不换行
  • Qt/C++编写GB28181服务端工具/绿色版开箱即用/对标wvp-gb28181/实时画面预览/录像回放下载
  • 百度golang研发一面面经
  • github 提交失败,连接不上
  • 19-剑侠情缘2-2021端魔改版+虚拟单机搭建+高清大屏+视频教程