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

服务降级(Sentinel)

服务降级

采用 @SentinelResource 注解方式实现, 必要的 依赖必须引入 以及 切面Bean

接口代码

    @RequestMapping("/degrade")@SentinelResource(value = DEGRADE_RESOURCE_NAME, blockHandler = "blockHandlerForDegrade",entryType = EntryType.IN)public User degrade(String id) {// 异常throw new RuntimeException("异常");}

降级处理

注意: 方法的访问权限、参数格式 和 流控的一致

    public User blockHandlerForDegrade(String id, BlockException be) {logger.info("++++++++服务降级");return new User(id, "服务降级了!!!");}

降级规则

    @PostConstructprivate static void initDegradeRules() { // 通常设置在服务调用端List<DegradeRule> degradeRuleList = new ArrayList<>();DegradeRule degradeRule = new DegradeRule();// 设置资源名称degradeRule.setResource(DEGRADE_RESOURCE_NAME);// 设置规则策略 -> 异常数degradeRule.setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_COUNT);// 触发熔断异常数量degradeRule.setCount(2);// 熔断时长 单位:秒// 一旦触发熔断,再次请求对应的接口会调用降级处理方法// 熔断时长过后--半开状态: 恢复接口请求调用, 如果一次请求就异常, 再次熔断, 不会根据设置来计算是否熔断degradeRule.setTimeWindow(10);// 触发熔断最小请求数degradeRule.setMinRequestAmount(2);// 统计时长 单位:毫秒  默认:1000msdegradeRule.setStatIntervalMs(60 * 1000 );// 一分钟内: 执行下了两次  出现了两次异常  就会触发熔断degradeRuleList.add(degradeRule);DegradeRuleManager.loadRules(degradeRuleList);}

效果

  • 连续三次异常后服务被降级

  • 再进行访问还是异常,再次访问直接降级

http://www.lryc.cn/news/299006.html

相关文章:

  • Rust入门问题: use of undeclared crate or module `rand`
  • 2024.2.6 模拟实现 RabbitMQ —— 数据库操作
  • dolphinscheduler海豚调度(一)简介快速体验
  • VTK 三维场景的基本要素(相机) vtkCamera
  • 小游戏和GUI编程(5) | SVG图像格式简介
  • 多机多卡运行nccl-tests和channel获取
  • SQL,HQL刷题,尚硅谷
  • DevOps:CI、CD、CB、CT、CD
  • [leetcode经典算法题]删除有序数组中的重复项(双指针)
  • 【国产MCU】-CH32V307-触摸按键检测(TKEY)
  • Hive的小文件问题
  • 攻防世界——re2-cpp-is-awesome
  • 问山海——天涯海角——桃花渊boss攻击顺序
  • springboot181基于springboot的乐享田园系统
  • Dubbo集成Zookeeper embbed模式
  • 156基于Matlab的光纤陀螺随机噪声和信号
  • 秋招上岸大厂,分享一下经验
  • 使用 C++23 从零实现 RISC-V 模拟器
  • Hugging Face 刚刚推出了一款开源的 AI 助手制造工具,直接向 OpenAI 的定制 GPT 挑战
  • powershell 雅地关闭UDP监听器
  • Google Cloud 2024 年报告重点介绍了关键的网络威胁和防御
  • 【算法题】102. 二叉树的层序遍历
  • 【龙年大礼】| 2023中国开源年度报告!
  • 本地搭建three.js官方文档
  • 【seata自动化治愈数据库问题解决方案】
  • Node.js之npm单独与批量升级依赖包的方式
  • 66.加一
  • UI自动化之Poco常用断言方式
  • c语言_实现类class的功能 实例
  • [2024]常用的pip指令