[Sentinel 二]使用Nacos实现持久化

1,859 阅读2分钟

环境

版本

nacos:1.2.1
sentinel-dashboard:2.0.5.RELEASE

Maven依赖

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.2.5.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>Hoxton.SR3</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-alibaba-dependencies</artifactId>
			<version>2.2.1.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

Nacos配置

Nacos中创建Sentinel限流规则的配置,以json数组形式保存
Data ID,Group,namespace与客户端配置文件保持一致

[
    {
        //资源名,即限流规则的作用对象
        "resource": "/user",
        //流控针对的调用来源,default不区分调用来源
        "limitApp": "default",
        //限流阈值类型(QPS/并发线程数),0代表根据并发,1代表QPS限流
        "grade": 1,
        //限流阈值
        "count": 1,
        //调用关系限流策略
        "strategy": 0,
        //流量控制效果(直接拒绝,Warm Up,匀速排队)
        "controlBehavior": 0,
        //是否为集群模式
        "clusterMode": false
    },{
        "resource": "userService_getUser",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]

客户端

引入Maven依赖

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

配置文件,与Nacos配置参数类似

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080
      datasource:
        ds1:
          nacos:
            groupId: dev
#            与nacos配置中心保持一致
            namespace: 9aa5b9f3-6d8c-4537-a069-da4733264ebf
            dataId: provider1-sentinel
            ruleType: flow

调用接口,查看Sentinel-Dashboard,点击流控规则,Nacos配置的限流规则已更新至Sentinel中

注意点:
Sentinel控制台修改规则:仅存在于服务的内存中,不会修改Nacos中配置值,重启后恢复原来的值 Nacos控制台修改规则:Nacos持久化规则,服务的内存也同步更新