微服务中的限流降级 Sentinel

一、基础

1、特点

 

二、Sentinel使用

1、服务端安装

  • 下载压缩包 
java -jar sentinel-dashboard-1.6.3.jar --server.port=19091
访问: <ip>:19091
默认账号密码:sentinel/sentinel

2、客户端

  • 引入依赖
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  • 增加 yml配置
spring.cloud.sentinel.transport.dashboard=<ip>:19091 #控制台访问地址
spring.cloud.sentinel.transport.port=8719 #应用和sentinel之间传输数据端口默认是 8719
feign.sentinel.enabled=true #激活对 feign的支持

3、限流:对 URI

(1)“簇点链路” 找到对应 URI,设置 “流控”

(2)限流规则

  • QPS:每秒请求数

  • 线程数:每秒处理线程

  • 流控模式-关联:当关联的资源达到阈值,限流自己

  • 流控效果-预热:QPS从 threshold/3 开始,经过多少时长达到 threshold

  • 流控效果-排队等待:达到 阈值排队等待,并设置超时时间

4、降级规则

(1)“降级规则” 下点击 “新增降级规则”

(2)限流设置

  • RT 平均响应时间:每秒达到 5请求,且平均响应时间都超过阈值

  • 异常比例:每秒达到 5请求,且 每秒异常数 / 通过总量 比值超过阈值

  • 异常数:每分钟异常数超过阈值

5、热点规则

(1)“热点规则” 下点击 “新增热点限流规则”

(2)限流设置

  • 参数限制:根据配置的参数限制请求量(如参数为 userId,那么如果 userId=1的请求超过了阈值则对它的请求熔断,但 userId=2则不会)

  • 参数例外项:在参数限制情况下,可以对某个特殊参数值特殊处理(如 userId=1的参数阈值跟别人不一样)

6、系统规则

(1)“系统规则” 下点击 “新增系统规则”

(2)限流设置

7、自定义保护资源 @SentinelResource(类似 @HystrixCommand)

(1)指定资源(value值),自定义降级方法

  • 代码增加如下
@SentinelResource(value = "orderProduct", blockHandler = "blockHandlerMethod", fallback = "blockHandlerMethod")
    @RequestMapping("/restful")
    public Object restful(){
        String result = providerService.provicer();
        return result;
    }

    public Object blockHandlerMethod(BlockException ex){
        System.out.println("注解降级");
        return "注解降级了";
    }


# 可用以下指定降级类,不跟业务类耦合
// @SentinelResource(value = "orderProduct", blockHandlerClass = BlockException.class, blockHandler = "blockHandlerMethod")

# blockHandler 管流量异常,fallback 管业务异常
  • 管理端 “新增流控规则”,对资源 orderProduct进行限流配置

8、网关限流

 

三、持久化规则

  • 引入依赖
<dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>
  • yml 增加
spring:
  cloud:
    sentinel:
      datasource:#关键点在这个配置Nacos
        ds1:
          nacos:
            server-addr: localhost:8848
            dataId: cloudalibaba-sentinal-service
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow
  • nacos 增加配置

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值