侧边栏壁纸
博主头像
Epoch

Java开发、Python爬虫、微服务、分布式、前端

  • 累计撰写 93 篇文章
  • 累计创建 110 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Sentinel集成Nacos实现动态流控规则

Epoch
2020-06-15 / 0 评论 / 0 点赞 / 326 阅读 / 644 字 / 正在检测是否收录...

目标:Sentinel的基本应用
工具:IDEA–2020.1、Sentinel Maven Nacos
学习目标:学习Sentinel集成Nacos实现动态流控规则
本次学习的工程下载链接放到文本最后面

前面我们实现了两种对定义的资源设置流控规则

1.通过FlowRuleManage.loadRules(List rules)手动加载流控规则
2.在Sentinel Dashboard上正对资源动态创建流控规则

对于第一种设置方式,我们如果介入Sentinel Dashboard,那么同样支持动态修改流控规则,但是,会存在一个问题,基于Sentinel Dashboard 所配置的流控规则只会保存在内存当中,一旦项目重启,这些规则都会被清除,为了解决这个问题,Sentinel提供了动态数据源来支持。

Sentinel集成Nacos实现动态流控规则,配置步骤如下:

1.添加Nacos数据源的依赖包

    <!--添加nacos数据源的依赖-->
    <dependency>
        <groupId>com.alibaba.csp</groupId>
        <artifactId>sentinel-datasource-nacos</artifactId>
        <version>1.7.2</version>
    </dependency>

2.创建一个REST接口,用户测试。

@RestController
public class DynamicController {
    
    @GetMapping("/dynamic")
    public String dynamic(){
        return "Hello Dynamic Rule";
    }
    
}

3.在application.yml中添加数据源配置

spring:
  application:
    name: springcloud-sentinel-dynamic
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:7777
      datasource:
        - nacos:
            server-addr: 127.0.0.1:8848
            data-id: ${spring.application.name}-sentinel-flow
            group-id: DEFAULT_GROUP
            data-type: json
            rule-type: flow
server:
  port: 8888

配置说明:
1.datasource:目前支持redis、apollo、zk、file、nacos,选择什么类型的数据源就配置相对应的key即可。
2.data-id:可以设置为${spring.application.name},方便区分不同应用的配置
3.rule-type:表示数据源中规则属于那种类型,如flow、degrade、param-flow、gw-flow等
4.data-type:指配置项的内容格式,SpringCloud Alibaba Sentinel提供了JSON和XML两种格式,如果需要自定义只需要将值配置为custom,并配置converter-class指向converter类

4.登陆控制台,创建流控配置规则,配置信息如下

记住nacos中的data-id和你应用中的application.yml中的保持一致
4JUQOYKKPNQ_%C~VQO03.png

QEJ7C.png

5.最后登陆Sentinel Dashboard ,找到只想项目名称菜单下的"流控规则",就可以看到在Nacos上所配置的流控规则已经被加载了,如下图所示

UTA.png

最后访问http://localhost:8888/dynamic 刷新观察效果

M40TH1R.png


下载链接:springcloud-sentinel-dynamic-rule.zip

0

评论区