From c48e742041ad3bb95ddab1ca3242fa69ac51f6a9 Mon Sep 17 00:00:00 2001 From: mshe <666666666@666666666.666666666> Date: Fri, 21 Nov 2025 02:50:01 +0800 Subject: [PATCH] =?UTF-8?q?refactor(nacos):=20=E9=87=8D=E6=9E=84Nacos?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86=E5=B9=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用@Autowired注入Nacos配置信息,替换原有@Value方式 - 新增NacosServerConfig类统一管理Nacos服务器配置 - 更新application.properties中的默认用户名和密码为admin/admin - 修改Nacos命名空间配置为namespace-sentinel - 调整Nacos配置工具类中的数据ID前缀和组ID常量 - 添加API分组和网关流控规则相关的数据ID生成方法 - 统一Nacos配置服务创建逻辑,使用新的配置注入方式 --- .../dashboard/rule/nacos/NacosConfig.java | 30 +++++------ .../dashboard/rule/nacos/NacosConfigUtil.java | 34 ++++++++++--- .../rule/nacos/NacosServerConfig.java | 51 +++++++++++++++++++ .../src/main/resources/application.properties | 13 ++--- 4 files changed, 97 insertions(+), 31 deletions(-) create mode 100644 sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosServerConfig.java diff --git a/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfig.java b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfig.java index cb3f5a33..2ca72b2f 100644 --- a/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfig.java +++ b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfig.java @@ -21,7 +21,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.api.config.ConfigFactory; import com.alibaba.nacos.api.config.ConfigService; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -34,22 +34,16 @@ import java.util.Properties; */ @Configuration public class NacosConfig { - // ----------------------- 读取配置文件中设置的值 start ----------------------- - @Value("${nacos.config.server-addr:http://127.0.0.1:8848}") - private String nacosServerAddr; - @Value("${nacos.config.namespace}") - private String nacosNamespace; - @Value("${nacos.config.username:nacos}") - private String nacosUsername; - @Value("${nacos.config.password:nacos}") - private String nacosPassword; - // ----------------------- 读取配置文件中设置的值 end ----------------------- + // 注入配置信息 + @Autowired + private NacosServerConfig config; /***************** System Start ******************/ @Bean public Converter, String> authorityRuleEntityEncoder() { return JSON::toJSONString; } + @Bean public Converter> authorityRuleEntityDecoder() { return s -> JSON.parseArray(s, AuthorityRuleEntity.class); @@ -62,6 +56,7 @@ public class NacosConfig { public Converter, String> degradeRuleEntityEncoder() { return JSON::toJSONString; } + @Bean public Converter> degradeRuleEntityDecoder() { return s -> JSON.parseArray(s, DegradeRuleEntity.class); @@ -74,6 +69,7 @@ public class NacosConfig { public Converter, String> systemRuleEntityEncoder() { return JSON::toJSONString; } + @Bean public Converter> systemRuleEntityDecoder() { return s -> JSON.parseArray(s, SystemRuleEntity.class); @@ -86,6 +82,7 @@ public class NacosConfig { public Converter, String> paramRuleEntityEncoder() { return JSON::toJSONString; } + @Bean public Converter> paramRuleEntityDecoder() { return s -> JSON.parseArray(s, ParamFlowRuleEntity.class); @@ -98,10 +95,12 @@ public class NacosConfig { public Converter, String> flowRuleEntityEncoder() { return JSON::toJSONString; } + @Bean public Converter> flowRuleEntityDecoder() { return s -> JSON.parseArray(s, FlowRuleEntity.class); } + /***************** Flow End ******************/ @@ -109,11 +108,10 @@ public class NacosConfig { public ConfigService nacosConfigService() throws Exception { // 创建Nacos配置服务 Properties properties = new Properties(); - properties.setProperty(PropertyKeyConst.SERVER_ADDR, nacosServerAddr); - properties.setProperty(PropertyKeyConst.NAMESPACE, nacosNamespace); - properties.setProperty(PropertyKeyConst.USERNAME, nacosUsername); - properties.setProperty(PropertyKeyConst.PASSWORD, nacosPassword); - // return ConfigFactory.createConfigService("localhost"); + properties.setProperty(PropertyKeyConst.SERVER_ADDR, config.getServerAddr()); + properties.setProperty(PropertyKeyConst.NAMESPACE, config.getNamespace()); + properties.setProperty(PropertyKeyConst.USERNAME, config.getUsername()); + properties.setProperty(PropertyKeyConst.PASSWORD, config.getPassword()); // 创建Nacos配置服务实例并返回 return ConfigFactory.createConfigService(properties); } diff --git a/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfigUtil.java b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfigUtil.java index 057f7d59..dbf7f016 100644 --- a/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfigUtil.java +++ b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosConfigUtil.java @@ -21,14 +21,24 @@ package com.alibaba.csp.sentinel.dashboard.rule.nacos; */ public final class NacosConfigUtil { - public static final String GROUP_ID = "SENTINEL_GROUP"; + // public static final String GROUP_ID = "SENTINEL_GROUP"; + public static final String GROUP_ID = "DEFAULT_GROUP"; public static final String GLOBAL_DATA_ID_POSTFIX = ".json"; - public static final String FLOW_DATA_ID_PREFIX = "flow-rules-"; - public static final String PARAM_FLOW_DATA_ID_PREFIX = "param-rules-"; - public static final String DEGRADE_DATA_ID_PREFIX = "degrade-rules-"; - public static final String AUTHORITY_DATA_ID_PREFIX = "auth-rules-"; - public static final String SYSTEM_DATA_ID_PREFIX = "system-rules-"; + // 流控规则 + public static final String FLOW_DATA_ID_PREFIX = "flow-"; + // 热点参数规则 + public static final String PARAM_FLOW_DATA_ID_PREFIX = "param-"; + // 熔断规则 + public static final String DEGRADE_DATA_ID_PREFIX = "degrade-"; + // 授权规则 + public static final String AUTHORITY_DATA_ID_PREFIX = "auth-"; + // 系统规则 + public static final String SYSTEM_DATA_ID_PREFIX = "system-"; + // api分组 + public static final String API_GROUP_DATA_ID_PREFIX = "api-group-"; + // 网关流控规则 + public static final String GATEWAY_FLOW_DATA_ID_PREFIX = "gateway-flow-"; public static final String CLUSTER_MAP_DATA_ID_POSTFIX = "-cluster-map"; @@ -46,6 +56,18 @@ public final class NacosConfigUtil { private NacosConfigUtil() { } + + public static String getApiGroupDataId(String appName) { + return String.format("%s%s%s", NacosConfigUtil.API_GROUP_DATA_ID_PREFIX, appName, NacosConfigUtil.GLOBAL_DATA_ID_POSTFIX); + } + + + + public static String getGatewayFlowDataId(String appName) { + return String.format("%s%s%s", NacosConfigUtil.GATEWAY_FLOW_DATA_ID_PREFIX, appName, NacosConfigUtil.GLOBAL_DATA_ID_POSTFIX); + } + + public static String getSystemRuleDataId(String appName) { return String.format("%s%s%s", NacosConfigUtil.SYSTEM_DATA_ID_PREFIX, appName, NacosConfigUtil.GLOBAL_DATA_ID_POSTFIX); } diff --git a/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosServerConfig.java b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosServerConfig.java new file mode 100644 index 00000000..ac9aceeb --- /dev/null +++ b/sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/nacos/NacosServerConfig.java @@ -0,0 +1,51 @@ +package com.alibaba.csp.sentinel.dashboard.rule.nacos; + +import com.alibaba.fastjson.JSONObject; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "nacos.config") +public class NacosServerConfig { + private String serverAddr; + private String namespace; + private String username; + private String password; + + public String getServerAddr() { + return serverAddr; + } + + public void setServerAddr(String serverAddr) { + this.serverAddr = serverAddr; + } + + public String getNamespace() { + return namespace; + } + + public void setNamespace(String namespace) { + this.namespace = namespace; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public String toString() { + return JSONObject.toJSONString(this); + } +} diff --git a/sentinel-dashboard/src/main/resources/application.properties b/sentinel-dashboard/src/main/resources/application.properties index ad0cbd50..38799dc2 100755 --- a/sentinel-dashboard/src/main/resources/application.properties +++ b/sentinel-dashboard/src/main/resources/application.properties @@ -2,32 +2,27 @@ server.servlet.encoding.force=true server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=true - #cookie name setting server.servlet.session.cookie.name=sentinel_dashboard_cookie - #logging settings logging.level.org.springframework.web=INFO logging.file.name=${user.home}/logs/csp/sentinel-dashboard.log -logging.pattern.file= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n +logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n #logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n - #auth settings auth.filter.exclude-urls=/,/auth/login,/auth/logout,/registry/machine,/version auth.filter.exclude-url-suffixes=htm,html,js,css,map,ico,ttf,woff,png # If auth.enabled=false, Sentinel console disable login -auth.username=sentinel -auth.password=sentinel - +auth.username=admin +auth.password=admin # Inject the dashboard version. It's required to enable # filtering in pom.xml for this resource file. sentinel.dashboard.version=@project.version@ - ############################################################## # nacos config #nacos.config.server-addr=http://127.0.0.1:8848 nacos.config.server-addr=http://172.16.8.70:8848 -nacos.config.namespace= +nacos.config.namespace=namespace-sentinel nacos.config.username=nacos nacos.config.password=nacos ##############################################################