SpringCloudAlibaba 中通过nacos持久化配置sentinel流控未生效问题

一、起因

在本人进行nacos配置sentinel流控配置时发现在nacos种写好相应的json配置仍然无法使用。nacos里面配置:

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

二、 原因和解决方法

  1. 在使用nacos作为持久化配置时先引入依赖。
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <version>x.y.z</version>	//版本可以选择当前springcloud自带的版本,可以省略
</dependency>
  1. 官方文档是通过在application.properties中进行配置动态数据源
spring.cloud.sentinel.datasource.ds1.nacos.server-addr=localhost:8848
spring.cloud.sentinel.datasource.ds1.nacos.data-id=sentinel
spring.cloud.sentinel.datasource.ds1.nacos.group-id=DEFAULT_GROUP
spring.cloud.sentinel.datasource.ds1.nacos.data-type=json
spring.cloud.sentinel.datasource.ds1.nacos.rule-type=flow

这是官方给出的配置,但是在高版本的nacos中,不管是进行discover还是config配置都是需要配置usernamepassword的,从源码中可以看出

除了基本的serverAddr和dataId等其中还有username和password,这是在高版本的nacos中才有,最下面四个参数和阿里云商业化有关,忽略。
因此我们除了需要上面的那些配置还需要再加入username和password的值,例如:

     datasource:
        flow:		//这个地方名字可以随意填写,就像上面的ds1是可以自己随便取的
          nacos:
            serverAddr: 127.0.0.1:8848
            username: nacos
            password: nacos
            dataId: test
            group-id: DEFAULT_GROUP
            dataType: json
            ruleType: flow

当然,在springcloud的github上还有个配置但无法使用的问题

issue里面说是JDK版本问题,未遇见,提个醒,至此问题解决。


版权声明:本文为qq_43107784原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。