Sentinel 使用 Nacos 作为配置中心进行规则持久化,可以实现在 Sentinel 控制台之外统一管理和动态推送流控、降级等规则到各个微服务实例中。以下是将 Sentinel 配置规则存储在 Nacos 中的步骤:
步骤概览
-
添加依赖:
- 在你的 Spring Cloud 应用中引入
spring-cloud-starter-alibaba-sentinel
和nacos-config-spring-boot-starter
(或spring-cloud-starter-alibaba-nacos-discovery
,如果已包含则无需重复添加)依赖。
- 在你的 Spring Cloud 应用中引入
-
Nacos 中添加规则配置:
- 登录 Nacos 控制台,在配置管理页面新建一个配置。
- 设置 Data ID,通常格式为
${spring.application.name}-sentinel
或者直接指定资源名,例如:your-service-name-sentinel-rules
。 - 设置 Group 为默认分组
DEFAULT_GROUP
或自定义分组。 - 编写内容,按照 Sentinel 的数据源规范编写流控规则、降级规则等 JSON 格式的配置内容。
-
服务端配置 Sentinel 数据源:
- 在应用的 YAML 配置文件(如 application.yml 或 application.properties)中配置 Sentinel 从 Nacos 获取规则:
spring: cloud: sentinel: datasource: flow: nacos: server-addr: localhost:8848 # Nacos 地址 data-id: ${spring.application.name}-sentinel-flow-rules # 流控规则Data ID group-id: DEFAULT_GROUP # 分组 degrade: nacos: server-addr: localhost:8848 # 同上,也可以共享同一个 server-addr 配置 data-id: ${spring.application.name}-sentinel-degrade-rules # 降级规则Data ID group-id: DEFAULT_GROUP
- 在应用的 YAML 配置文件(如 application.yml 或 application.properties)中配置 Sentinel 从 Nacos 获取规则:
-
启动服务并验证:
- 启动带有 Sentinel 和 Nacos 集成的应用服务。
- 在 Nacos 中修改和保存相应的 Sentinel 规则配置。
- 应用服务会自动监听 Nacos 上的规则变化,并实时同步到本地生效。
这样设置后,Sentinel 就能够从 Nacos 中获取并应用流控、降级等规则,实现规则的集中管理和持久化。当服务重启时,规则依然可以从 Nacos 中加载,避免了规则丢失的问题。同时,通过控制台或者其他方式编辑的规则也能及时推送到 Nacos 中,确保所有服务实例都能遵循最新的规则。