# 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
#### 软件架构

如上图,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 配置的数据源中的一致。