sentinel整合nacos实现配置持久化

完整目录清单页面(必看)

细心的伙伴将会发现,当sentinel重新启动时,sentinel dashboard中原来的数据将会全部消失,这样就需要重新定义限流规则,无疑是不可取的。sentinel默认是把配置放内存里的。

我们可以将sentinel中定义的限流规则保存到Nacos配置中心里面,实现持久化。

nacos视频教程地址:http://www.java1234.vip/course/151

具体实现步骤:

1,添加sentinel的nacos支持

<dependency>
	<groupId>com.alibaba.cspgroupId>
	<artifactId>sentinel-datasource-nacosartifactId>
dependency>

2,在nacos中定义策略

sentinel整合nacos实现配置持久化_第1张图片

[
    {
		"resource": "helloWorld_springcloud",
		"limitApp": "default",
		"grade": 1,
		"count": 2,
		"strategy": 0,
		"controlBehavior": 0,
		"clusterMode": false
    }
]

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

3,项目配置,sentinel下面的dataSource中配置nacos

spring:
  application:
    name: sentinel_springcloud  # 设置应用名称
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080  # 设置Sentinel连接控制台的主机地址和端口
      datasource:
        ds:
          nacos:
            server-addr: localhost:8848  # nacos连接地址
            group-id: DEFAULT_GROUP  # nacos连接的分组
            rule-type: flow  # 流控规则  rule-type 配置表示该数据源中的规则属于哪种类型的规则(flow,degrade,authority,system, param-flow, gw-flow, gw-api-group)
            data-id: java1234-sentinel  # 读取配置文件的 data-id
            data-type: json #  读取培训文件类型为json

4,测试

我们启动项目,发现sentinel控制台读取到了nacos里的配置,频繁刷新也能流控;

sentinel整合nacos实现配置持久化_第2张图片

微信搜一搜【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

你可能感兴趣的:(java,sentinel,流控,java)