# sentinel-dashbord-renovation-project **Repository Path**: wkqgitee/sentinel-dashbord-renovation-project ## Basic Information - **Project Name**: sentinel-dashbord-renovation-project - **Description**: sentinel-dashboard 改造项目,支持动态推送和拉取配置到 Nacos Config - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-10-21 - **Last Updated**: 2025-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: 微服务, 流量控制, 降级, 熔断 ## README # sentinel-dashboard 改造项目 #### 介绍 基于 sentinel-dashboard 的改造项目,支持动态推送和拉取配置到 Nacos Config #### 软件架构 ![](https://img.wkq.pub/hexo/4e037301de04504f4d005f3babef9603.webp) 如上图,Sentinel 控制台将限流规则同步到了 Nacos Config 服务实现持久化。同时,在应用程序中,需要配置 Sentinel Datasource ,从 Nacos Config 获取具体配置信息。 在应用启动阶段,也会主动从 Sentinel Datasource 获取限流规则配置。在运行期间, 也可以在 Sentinel 控制台动态修改限流规则,应用程序会实时监听配置中心的数据变化,从而获取通过 sentinel 控制台更新后的数据。 #### 安装教程 ##### 1.1 编译 进入 sentinel-dashboard 子项目,使用如下命令将代码打包成一个 fat jar: ```bash mvn clean package ``` ##### 1.2 修改 jar 包 使用压缩软件,比如 Bindizip ,修改 application.properties 中的如下配置。 ```properties sentinel.nacos.enable=true sentinel.nacos.server-addr=47.94.9.237:8848 sentinel.nacos.namespace=dev sentinel.nacos.username=nacos sentinel.nacos.password=nacos ``` ##### 1.3 启动 使用如下命令启动编译后的控制台: ```bash java -Dserver.port=8080 \ -Dcsp.sentinel.dashboard.server=localhost:8080 \ -Dproject.name=sentinel-dashboard \ -jar target/sentinel-dashboard.jar ``` 上述命令中我们指定几个 JVM 参数,其中 `-Dserver.port=8080` 是 Spring Boot 的参数, 用于指定 Spring Boot 服务端启动端口为 `8080`。其余几个是 Sentinel 客户端的参数。 #### 业务微服务改造 不需要对代码做任何改动,只需要添加一个新的依赖项,并在配置文件中添加 sentinel datasource 连接信息就可以了。 ##### 1.1 引入依赖项 引入 sentinel-datasource-nacos 的依赖项,这个组件用来对接 Sentinel 和 Nacos Config。 ```xml com.alibaba.csp sentinel-datasource-nacos ``` ##### 1.2 配置数据源 然后在 application.yaml 配置文件中添加如下配置: ```yaml spring: cloud: sentinel: datasource: # 数据源的 key ,可以自由命名 a-flow: # 指定当前数据源是 Nacos nacos: server-addr: ${spring.cloud.nacos.discovery.server-addr} namespace: ${spring.cloud.nacos.discovery.namespace} group-id: SENTINEL_GROUP data-id: ${spring.application.name}-flow-rules rule-type: flow degrade-rule: nacos: server-addr: ${spring.cloud.nacos.discovery.server-addr} namespace: dev group-id: SENTINEL_GROUP data-id: ${spring.application.name}-degrade-rules rule-type: degrade ``` 至此,业务微服务改造完毕~ #### 注意事项 ```java package com.alibaba.csp.sentinel.dashboard.rule.nacos; /** *

* 约定了 Nacos 配置文件所属的 Group 和文件命名后缀等常量字段; *

*/ public final class NacosConfigUtil { public static final String GROUP_ID = "SENTINEL_GROUP"; //限流规则后缀 public static final String FLOW_DATA_ID_POSTFIX = "-flow-rules"; //热点规则后缀 public static final String PARAM_FLOW_DATA_ID_POSTFIX = "-param-rules"; //降级规则后缀 public static final String DEGRADE_DATA_ID_POSTFIX = "-degrade-rules"; //系统规则后缀 public static final String SYS_DATA_ID_POSTFIX = "-system-rules"; //授权规则后缀 public static final String AUTH_DATA_ID_POSTFIX = "-auth-rules"; //网关限流规则相关类 public static final String GATEWAY_FLOW_DATA_ID_POSTFIX = "-gateway-flow-rules"; public static final String GATEWAY_API_DATA_ID_POSTFIX = "-gateway-api-rules"; public static final String CLUSTER_MAP_DATA_ID_POSTFIX = "-cluster-map"; /** * cc for `cluster-client` */ public static final String CLIENT_CONFIG_DATA_ID_POSTFIX = "-cc-config"; /** * cs for `cluster-server` */ public static final String SERVER_TRANSPORT_CONFIG_DATA_ID_POSTFIX = "-cs-transport-config"; public static final String SERVER_FLOW_CONFIG_DATA_ID_POSTFIX = "-cs-flow-config"; public static final String SERVER_NAMESPACE_SET_DATA_ID_POSTFIX = "-cs-namespace-set"; private NacosConfigUtil() {} } ``` 1. dataId 的文件命名规则,需要和 dashboard 中定义的 dataId 保持一致,dashboard 中使用 微服务应用名称 + 自定义后缀组成,所以在微服务应用中也需要使用对应的 dataId。 2. 微服务应用 sentinel 数据源配置的 namespace 、 server-addr 和 groupId(dashboard 使用的是 NacosConfigUtil 中的常量),必须和 dashboard 配置的数据源中的一致。