【SpringCloud学习笔记】熔断和限流-Sentinel

本文介绍了Sentinel作为流量控制产品的基本概念和在SpringCloud中的应用。详细讲述了如何保护REST端点,包括引入依赖、整合控制台和规则调整。同时,深入探讨了Sentinel的流控规则(线程数与QPS区别、流控模式)、降级规则(慢调用比例、异常比例、异常数策略)以及SentinelResource注解的使用和Sentinel熔断FeignClient的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

熔断和限流-Sentinel

一、Sentinel简介

Sentinel 是面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。

二、Sentinel使用

保护REST端点

1、引入依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2、整合控制台
spring:
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:8010
3、在控制台进行规则调整即可

在这里插入图片描述

控制台界面以及控制规则详解

1、控制台信息

在这里插入图片描述

2、簇点链路视图

在这里插入图片描述

3、流控规则

在这里插入图片描述

默认QPS(每秒请求数)到达指定阈值直接快速失败
阈值类型
线程数QPS的区别:
线程数是指工作线程的数量若请求数超过工作线程数量则限流
QPS是指外部请求进入系统的最大数量
流控模式
直接:直接反应流控效果(测试略)
关联:当关联的资源达到设定阈值则限流自己(测试如下)

压力测试结果:

在这里插入图片描述
在这里插入图片描述

链路:
流控效果
直接失败:直接返回调用失败的结果
预热:从设置的阈值/冷加载因子(默认3)开始 经过设置的预热时长后逐渐到达阈值
排队等待:将请求排队

4、降级规则

在这里插入图片描述

熔断策略:
慢调用比例:(请求数每秒大于等于5)检查请求返回慢的请求所占比例 到达阈值或者超过最大RT时间则熔断指定时长
异常比例:(请求数每秒大于等于5)异常比例到达阈值则熔断指定时长
异常数:(近一分钟内异常数)异常数到达阈值熔断指定时长

SentinelResource注解的使用(保护资源)

按照资源名称限流

1、点击流控规则可以发现有一栏资源名

在这里插入图片描述

2、在资源名称中输入相应的资源id 之后在控制台配置规则即可
@GetMapping("/{id}")
@SentinelResource(value = "id",fallback = "block")
public String consummer(@PathVariable("id") String id){
    return providerFeignClient.getService(id);
}

@SentinelResource注解的属性(class属性与普通属性混用指定处理方法)

属性名作用
value资源名称
fallback出现异常降级后执行的本地方法
blockHandler被限流后默认执行的本地方法
fallbackClass出现异常降级后进行处理的类
blockHandlerClass被限流后进行处理的类

Sentinel熔断FeignClient

1、开启配置FeignClient支持Sentinel
feign:
  sentinel:
    enabled: true
2、创建FeignClient接口实现类(记得添加注解@Component)
@Component
public class ProviderImpl implements ProviderFeignClient {
    @Override
    public String getService(String id) {
        return "本地调用";
    }
}
3、设置@FeignClient注解的fallback属性
@FeignClient(value = "cloud-provider",fallback = ProviderImpl.class)
public interface ProviderFeignClient {
    @GetMapping("/provider/{id}")
    public String getService(@PathVariable("id") String id);
}

注意:熔断feign的作用是在无法进行远程调用的时候进行断路,返回正常结果,如果不处理限流还是会出现报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值