Sentinel实现接口限流并用Nacos存储规则

官网介绍:Sentinel以“流量”为切入点,在流量控制,断路和负载保护等多个领域开展工作,以保护服务可靠性

sentinel Dashboard的使用:

1.下载 sentinel jar包,下载地址:https://github.com/alibaba/Sentinel/releases
2.启动 java -jar sentinel-dashboard-1.7.1.jar
3.访问路径:http://localhost:8080(默认端口是8080)
Sentinel实现接口限流并用Nacos存储规则_第1张图片
1.6版本后才有这个登录页面,默认的用户名和密码均为sentinel。
可以在启动的时候添加参数修改用户名和密码
-Dsentinel.dashboard.auth.username=sentinel: 用于指定控制台的登录用户名为 sentinel;
-Dsentinel.dashboard.auth.password=123456: 用于指定控制台的登录密码为 123456;

应用搭建

添加pom


            org.springframework.cloud
            spring-cloud-starter-alibaba-sentinel
        

添加配置

spring.cloud.sentinel.transport.dashboard=localhost:8080

测试类,这里用到了nacos配置中心,没看的伙伴可以看nacos实现配置中心

@RestController
@RefreshScope
public class TestNacosController {

    @Value("${name}")
    private String name;   //从nacos的配置中心获取值

    @RequestMapping("/config")
    public String hello() {
        return "hello " + name;
    }
}

然后在sentinel 中设置关于/config 的相关限流规则
Sentinel实现接口限流并用Nacos存储规则_第2张图片
QPS:每秒允许访问次数
单机阈值:1次
含义为:每秒可以访问接口/config 1次

测试:
http://localhost:8011/config
Sentinel实现接口限流并用Nacos存储规则_第3张图片
当在1秒内访问的次数超过1次时,将会报上面的错。

但是细心的伙伴将会发现,当sentinel重新启动时,sentinel dashboard中原来的数据将会全部消失,这样就需要重新定义限流规则,无疑是不可取的。
可以将sentinel中定义的限流规则保存到配置中心里面。具体的实现方法如下:

  • 在nacos中定义
    Sentinel实现接口限流并用Nacos存储规则_第4张图片
    Data Id :和配置中的data_id相对应
    Group:配置文件中的group-id
    配置内容:
    resource:接口名,即限流规则的作用对象
    limitApp:流控针对的调用来源,若为 default 则不区分调用来源
    grade:限流阈值类型(QPS 或并发线程数);0代表根据并发数量来限流,1代表根据QPS来进行流量控制
    count:限流阈值
    strategy:调用关系限流策略
    controlBehavior:流量控制效果(直接拒绝、Warm Up、匀速排队)
    clusterMode:是否为集群模式

添加pom

 
            com.alibaba.csp
            sentinel-datasource-nacos
            1.5.2
        
  • 添加相关配置,sentinel下面的dataSource中配置nacos。
spring:
 cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080
      datasource:
        ds:
            nacos:
                ### nacos连接地址
                server-addr: 127.0.0.1:8848
                ## nacos连接的分组
                group-id: DEFAULT_GROUP
                ###路由存储规则
                rule-type: flow
                ### 读取配置文件的 data-id
                data-id: member-sentinal
                ###  读取培训文件类型为json
                data-type: json
  • 启动应用
    同时在sentinel中可以看到我们在nacos中配置的限流规则
    Sentinel实现接口限流并用Nacos存储规则_第5张图片

你可能感兴趣的:(Spring,Cloud,Alibaba)