Sentinel+Nacos实现资源流控、降级、热点、授权( 三 )


--异常比例:需要设置一个比例阈值,当异常比例达到该阈值时进行熔断降级 。
--异常数:需要设置一个异常数,达到该异常数时进行熔断降级 。
降级需要设置一个熔断时长和最小请求数,代表熔断持续的时间,当大于最小请求数时降级规则才生效 。

  • 热点
    热点即经常访问的数据, 很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制 。对请求中携带的参数进行判断是否是热点数据,是热点数据则根据规则限流 。需要设置参数所有和阈值,参数所有从0开始代表请求的第几个参数是热点参数 。
  • 授权
    授权其实就是黑白名单的设置,黑名单模式代表黑名单里的不允许访问,白名单模式代表白名单里的才允许访问 。需要设置对应的应用名称 。
4.示例配置
我们以流控操作来做个示例,我们在根请求接口的资源上配置一个流控规则 。
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
示例配置
设置阈值类型为QPS,阈值为1,代表每秒只能通过1个请求 。我们来看看效果 。
浏览器请求接口,然后按F5不停刷新,可以看到每秒会出现一次返回一次正确信息,其他都会返回限流信息 。
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
返回正确信息

Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
返回限流信息
项目接入控制台部分就讲到这了,需要注意的是这里的控制台配置是存在内存中的,如果你的项目重新启动配置的规则就没了,所以我们需要一个可以持久化配置规则的地方,接下去我们介绍下Nacos来持久化存储Sentinel配置规则 。
使用Nacos存储规则并实时更新Sentinel提供了多种数据源的支持,包括Nacos、Zookeeper、文件数据源等 。
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
 
使用Nacos存储需要先安装Nacos,可以看我的另外一篇Nacos安装教程文章 。
1.引入Nacos依赖
<dependency>    <groupId>com.alibaba.csp</groupId>    <artifactId>sentinel-datasource-nacos</artifactId></dependency>2.配置Nacos数据源
安装完Nacos后我们首先在项目中配置Sentinel的数据源为Nacos 。
spring:  application:    name: sentinel  cloud:    sentinel:      transport:        port: 8719        dashboard: localhost:8080  #启动本项目后需要请求一次才能向sentinel控制台注册      datasource:         ds2:          nacos:             server-addr: 192.168.67.129:8848            data-id: sentinel            group-id: Sentinel:Demo            data-type: json            rule-type: flowds2是数据源名称,其他主要配置下:
  • Nacos的地址
  • data-id和group-id:等会需要在Nacos控制台新增一个同样的配置才能生效
  • data-type:配置规则数据类型
  • rule-type:flow代表流控类型
3.在Nacos控制台配置规则内容
我们在Nacos控制台的配置列表新增一个配置 。
Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
新增一个配置

Sentinel+Nacos实现资源流控、降级、热点、授权

文章插图
新增一个配置
配置内容部分如下:
[    {        "resource": "/",        "limitApp": "default",        "grade": 1,        "count": 2,        "strategy": 0,        "controlBehavior": 0,        "clusterMode": false    }]resource:资源名,资源名是限流规则的作用对象


推荐阅读