【Sentinel系列】 Sentinel 整合 Nacos

这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

Spring Cloud Sentinel 整合 Nacos 实现动态流控规则,步骤如下:

  1. 添加Nacos数据源的maven依赖·
1
2
3
4
5
xml复制代码<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>1.7.0</version>
</dependency>
2. 创建一个REST接口,用于测试
1
2
3
4
5
6
7
8
9
java复制代码@RestController
@RequestMapping("/sentinel")
public class SentinelController {

@GetMapping(value = "/info")
public String getName(){
return " Dynamic Rule";
}
}
  1. 在application.yml文件配置添加数据源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
yml复制代码spring:
application:
name: spring-cloud-sentinel
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8718
datasource:
nacos:
server-addr: 127.0.0.1:8848
data-id: ${spring.applicaton.name}-dev
group-id: DEFAULT_GROUP
data-type: json
rule-type: flow

部分参数相关说明如下:

  • datasource:支持Nacos、Redis、Zookeeper、Apollo、file等,选择哪个类型的数据源对应配置对应的key
  • data-id:设置成${spring.application.name} ,用于区分不同应用的配置文件
  • data-type:配置项的内容格式,Spring Cloud Alibaba Sentinel 提供了JSON和XML两种内容格式,如果需要自定义内容格式,则把值设置为custom,并且converter-class指向converter类
  • rule-type:数据源找那个的规则是哪种类型,有flow、degrade、gw-flow、param-flow等。

访问http://127.0.0.1:8848/nacos 进入Nacos控制台,创建流控配置规则,具体的配置信息如下:

1
2
3
4
5
6
7
8
json复制代码{
"resource":"teaching-management",
"count":1000,
"grade":1,
"limitApp":"default",
"strategy":0,
"controlBehavior":0
}

访问http://127.0.0.1:8718 进入Sentinel Dashboard,找到对应的模块菜单下的【流控规则】,可看到在Nacos上锁配置的流控规则已经被加载了

image-20211122231443736.png

在Nacos 控制台上修改对应的流控规则后,可实时同步在Sentinel Dashboard上能查看流控规则的修改。

流控规则的动态修改有两种方式:

  1. 通过Nacos 控制台修改。
  2. 在Sentinel Dashboard上修改。

在Nacos控制台上修流控规则,可同步到Sentinel Dashboard,Nacos是一个流控规则的持久化动态修改平台,如果在Sentinel Dashboard上修改对应的流控规则应该也能同步到Nacos上,才能达到双向同步流控规则。但是Sentinel Dashboard还没能实现Sentinel Dashboard 同步流控规则到Nacos功能。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%