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

sentinel使用手册

1.引入依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

2.yaml

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8090 #sentinel控制台地址
      http-method-specify: true # 是否设置请求方式作为资源名称
feign:
  sentinel:
    enabled: true # 开启feign对sentinel的支持

3.降级

3.1 引入依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

3.2 创建降级方案

触发限流或熔断后的请求不一定要直接报错,也可以返回一些默认数据或者友好提示,用户体验会更好。
给FeignClient编写失败后的降级逻辑有两种方式:

  • 方式一:FallbackClass,无法对远程调用的异常做处理
  • 方式二:FallbackFactory,可以对远程调用的异常做处理,我们一般选择这种方式。

这里我们演示方式二的失败降级处理。
步骤一:在hm-api模块中给ItemClient定义降级处理类,实现FallbackFactory

@Component
public class ItemClientFallBackFactory implements FallbackFactory<ItemClient> {
    @Override
    public ItemClient create(Throwable cause) {
        return new ItemClient() {
            @Override
            public PageDTO<ItemDTO> queryItemByPage(PageQuery query) {
                //这里写降级逻辑
                return null;
            }

            @Override
            public List<ItemDTO> queryItemByIds(List<Long> ids) {
                //这里写降级逻辑
                return List.of();
            }
        };
    }
}

步骤二: 在hm-api模块中的ItemClient接口中使用ItemClientFallbackFactory:

@FeignClient("item-service", fallbackFactory = ItemClientFallBackFactory.class)
public interface ItemClient {
    @GetMapping("/items/page")
    PageDTO<ItemDTO> queryItemByPage(PageQuery query);

    @GetMapping("/items")
    List<ItemDTO> queryItemByIds(@RequestParam("ids") List<Long> ids);


http://www.kler.cn/a/417928.html

相关文章:

  • 基于Matlab实现三维点坐标生成点云(源码+数据)
  • 构建现代Web应用:FastAPI、SQLModel、Vue 3与Axios的结合使用
  • Python小白语法基础18(文件操作)
  • Web 端网站后台裁剪功能:提升图像管理效率的利器
  • 探索HarmonyOS:一键掌握Router与NavPathStatck的传参和页面回调技巧
  • Kubernetes 01
  • 基于java注解实现websocket详解
  • 如何更好地设计SaaS系统架构
  • MATLAB期末复习笔记(上)
  • 基于Java Springboot 求职招聘平台
  • 爬虫框架快速入门——Scrapy
  • QT 实现组织树状图
  • flutter底部导航栏中间按钮凸起,导航栏中间部分凹陷效果
  • Cursor AI快捷键的使用场景及作用
  • 【机器学习】机器学习算法与模型:逻辑回归算法
  • 电销卡风险管理系统
  • springboot358智慧社区居家养老健康管理系统(论文+源码)_kaic
  • 【大数据学习 | Spark调优篇】数据序列化(kryo序列化)
  • 鸿蒙学习使用模拟器运行应用(开发篇)
  • 深度学习基础03_BP算法(下)过拟合和欠拟合
  • 工程设计与总承包行业数字化转型:现状洞察、挑战突围与前景展望
  • 基于Java Springboot学生信息管理系统
  • asyncio.ensure_future 与 asyncio.create_task:Python异步编程中的选择
  • 汉字笔画分割959张图片带注释的YOLO,COCO,VOC格式的数据集
  • Vue-指令-案例
  • java——Spring MVC的工作流程