17.Sentinel动态规则

简介

Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。

Sentinel 流控规则在服务重启后将丢失配置的规则,更多时候我们希望规则存储在文件、数据库或者配置中心中。

Sentinel DataSource 扩展方式:

拉模式:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件,甚至是 VCS 等。这样做的方式是简单,缺点是无法及时获取变更;

推模式:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。

官方资料:https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95

Nacos实现

1.service-consumer模块加入sentinel-datasource-nacos依赖

<dependency>
     <groupId>com.alibaba.csp</groupId>
     <artifactId>sentinel-datasource-nacos</artifactId>
 </dependency>

2.配置sentinel持久化信息

spring:
  cloud:
	sentinel:
      transport:
        dashboard: localhost:8080
      datasource:
        ds1:
          nacos:
            serverAddr: ${spring.cloud.nacos.discovery.server-addr}
            dataId: service-consumer-flow-rule
            ruleType: flow

3.Nacos新建流控规则文件service-consumer-flow-rule

[
    {
        "resource": "GET:http://nacos-provider/test",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]

在这里插入图片描述

配置参数说明:

resource:资源名,即限流规则的作用对象

limitApp:流控针对的调用来源,若为 default 则不区分调用来源

grade:限流阈值类型(QPS 或并发线程数);0代表根据并发数量来限流,1代表根据QPS来进行流量控制

count:限流阈值

strategy:调用关系限流策略,0 表示直接,1 表示关联,2 表示链路;

controlBehavior:流量控制效果(0 直接拒绝、1 Warm Up、2 匀速排队)

clusterMode:是否为集群模式

4.启动service-consumer模块并访问 http://localhost:8020/consumer/test
在这里插入图片描述

刷新Sentinel Web控制台(访问过才会有配置的流控规则)
在这里插入图片描述

官方资料:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html
在这里插入图片描述

总结

sentinel管控修改相关规则不会持久化配置,需要修改sentinel源码自己实现,后续sentinel版本可能会实现该功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值