Просмотр исходного кода

add 新增 ruoyi-common-sentinel 模块 支持使用服务名注册sentinel控制台

疯狂的狮子li 3 лет назад
Родитель
Сommit
c6242d7dbe

+ 9 - 2
config/dev/application-common.yml

@@ -88,11 +88,18 @@ spring:
   cloud:
   cloud:
     # sentinel 配置
     # sentinel 配置
     sentinel:
     sentinel:
+      # sentinel 开关
+      enabled: true
       # 取消控制台懒加载
       # 取消控制台懒加载
       eager: true
       eager: true
       transport:
       transport:
-        # 控制台地址
-        dashboard: localhost:8718
+        # dashboard控制台服务名 用于服务发现
+        # 如无此配置将默认使用下方 dashboard 配置直接注册
+        server-name: ruoyi-sentinel-dashboard
+        # 客户端指定注册的ip 用于多网卡ip不稳点使用
+        # client-ip:
+        # 控制台地址 从1.3.0开始使用 server-name 注册
+        # dashboard: localhost:8718
 
 
   # redis通用配置 子服务可以自行配置进行覆盖
   # redis通用配置 子服务可以自行配置进行覆盖
   redis:
   redis:

+ 5 - 6
ruoyi-auth/pom.xml

@@ -28,18 +28,17 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
         </dependency>
 
 
-        <!-- SpringCloud Alibaba Sentinel -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-
         <!-- SpringBoot Actuator -->
         <!-- SpringBoot Actuator -->
         <dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-sentinel</artifactId>
+        </dependency>
+
         <!-- RuoYi Common Security-->
         <!-- RuoYi Common Security-->
         <dependency>
         <dependency>
             <groupId>com.ruoyi</groupId>
             <groupId>com.ruoyi</groupId>

+ 1 - 0
ruoyi-common/pom.xml

@@ -31,6 +31,7 @@
         <module>ruoyi-common-sms</module>
         <module>ruoyi-common-sms</module>
         <module>ruoyi-common-logstash</module>
         <module>ruoyi-common-logstash</module>
         <module>ruoyi-common-elasticsearch</module>
         <module>ruoyi-common-elasticsearch</module>
+        <module>ruoyi-common-sentinel</module>
     </modules>
     </modules>
 
 
     <artifactId>ruoyi-common</artifactId>
     <artifactId>ruoyi-common</artifactId>

+ 5 - 0
ruoyi-common/ruoyi-common-bom/pom.xml

@@ -144,6 +144,11 @@
                 <version>${project.version}</version>
                 <version>${project.version}</version>
             </dependency>
             </dependency>
 
 
+            <dependency>
+                <groupId>com.ruoyi</groupId>
+                <artifactId>ruoyi-common-sentinel</artifactId>
+                <version>${project.version}</version>
+            </dependency>
         </dependencies>
         </dependencies>
     </dependencyManagement>
     </dependencyManagement>
 </project>
 </project>

+ 0 - 5
ruoyi-common/ruoyi-common-dubbo/pom.xml

@@ -36,11 +36,6 @@
             <artifactId>dubbo-spring-boot-actuator</artifactId>
             <artifactId>dubbo-spring-boot-actuator</artifactId>
         </dependency>
         </dependency>
 
 
-        <dependency>
-            <groupId>com.alibaba.csp</groupId>
-            <artifactId>sentinel-apache-dubbo3-adapter</artifactId>
-        </dependency>
-
         <dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <artifactId>lombok</artifactId>

+ 50 - 0
ruoyi-common/ruoyi-common-sentinel/pom.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.ruoyi</groupId>
+        <artifactId>ruoyi-common</artifactId>
+        <version>1.2.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruoyi-common-sentinel</artifactId>
+
+    <description>
+        ruoyi-common-sentinel 限流模块
+    </description>
+
+    <dependencies>
+        <!-- SpringCloud Alibaba Sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <!-- Sentinel Datasource Nacos -->
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-datasource-nacos</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-apache-dubbo3-adapter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.dataformat</groupId>
+            <artifactId>jackson-dataformat-xml</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 265 - 0
ruoyi-common/ruoyi-common-sentinel/src/main/java/com/alibaba/cloud/sentinel/custom/SentinelAutoConfiguration.java

@@ -0,0 +1,265 @@
+/*
+ * Copyright 2013-2018 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.cloud.sentinel.custom;
+
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.alibaba.cloud.sentinel.SentinelProperties;
+import com.alibaba.cloud.sentinel.datasource.converter.JsonConverter;
+import com.alibaba.cloud.sentinel.datasource.converter.XmlConverter;
+import com.alibaba.csp.sentinel.annotation.aspectj.SentinelResourceAspect;
+import com.alibaba.csp.sentinel.config.SentinelConfig;
+import com.alibaba.csp.sentinel.init.InitExecutor;
+import com.alibaba.csp.sentinel.log.LogBase;
+import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRule;
+import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule;
+import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
+import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule;
+import com.alibaba.csp.sentinel.slots.system.SystemRule;
+import com.alibaba.csp.sentinel.transport.config.TransportConfig;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import com.ruoyi.common.core.utils.StreamUtils;
+import com.ruoyi.common.sentinel.config.properties.SentinelCustomProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+
+import static com.alibaba.cloud.sentinel.SentinelConstants.BLOCK_PAGE_URL_CONF_KEY;
+import static com.alibaba.csp.sentinel.config.SentinelConfig.setConfig;
+
+/**
+ * 改造sentinel自动配置 支持服务名注册
+ *
+ * @author Lion Li
+ *
+ * @author xiaojing
+ * @author jiashuai.xie
+ * @author <a href="mailto:fangjian0423@gmail.com">Jim</a>
+ */
+@Configuration(proxyBeanMethods = false)
+@ConditionalOnProperty(name = "spring.cloud.sentinel.enabled", matchIfMissing = true)
+@EnableConfigurationProperties({SentinelProperties.class, SentinelCustomProperties.class})
+public class SentinelAutoConfiguration {
+
+	@Value("${project.name:${spring.application.name:}}")
+	private String projectName;
+
+	@Autowired
+	private SentinelProperties properties;
+    @Autowired
+    private SentinelCustomProperties customProperties;
+    @Autowired
+    private DiscoveryClient discoveryClient;
+
+	@PostConstruct
+	private void init() {
+		if (StringUtils.isEmpty(System.getProperty(LogBase.LOG_DIR))
+				&& StringUtils.isNotBlank(properties.getLog().getDir())) {
+			System.setProperty(LogBase.LOG_DIR, properties.getLog().getDir());
+		}
+		if (StringUtils.isEmpty(System.getProperty(LogBase.LOG_NAME_USE_PID))
+				&& properties.getLog().isSwitchPid()) {
+			System.setProperty(LogBase.LOG_NAME_USE_PID,
+					String.valueOf(properties.getLog().isSwitchPid()));
+		}
+		if (StringUtils.isEmpty(System.getProperty(SentinelConfig.APP_NAME_PROP_KEY))
+				&& StringUtils.isNotBlank(projectName)) {
+			System.setProperty(SentinelConfig.APP_NAME_PROP_KEY, projectName);
+		}
+		if (StringUtils.isEmpty(System.getProperty(TransportConfig.SERVER_PORT))
+				&& StringUtils.isNotBlank(properties.getTransport().getPort())) {
+			System.setProperty(TransportConfig.SERVER_PORT,
+					properties.getTransport().getPort());
+		}
+
+        if (StringUtils.isNotBlank(customProperties.getServerName())) {
+            List<ServiceInstance> instances = discoveryClient.getInstances(customProperties.getServerName());
+            String serverList = StreamUtils.join(instances, instance ->
+                String.format("http://%s:%s", instance.getHost(), instance.getPort()));
+            System.setProperty(TransportConfig.CONSOLE_SERVER, serverList);
+        } else {
+            if (StringUtils.isEmpty(System.getProperty(TransportConfig.CONSOLE_SERVER))
+                && StringUtils.isNotBlank(properties.getTransport().getDashboard())) {
+                System.setProperty(TransportConfig.CONSOLE_SERVER,
+                    properties.getTransport().getDashboard());
+            }
+        }
+
+		if (StringUtils.isEmpty(System.getProperty(TransportConfig.HEARTBEAT_INTERVAL_MS))
+				&& StringUtils
+						.isNotBlank(properties.getTransport().getHeartbeatIntervalMs())) {
+			System.setProperty(TransportConfig.HEARTBEAT_INTERVAL_MS,
+					properties.getTransport().getHeartbeatIntervalMs());
+		}
+		if (StringUtils.isEmpty(System.getProperty(TransportConfig.HEARTBEAT_CLIENT_IP))
+				&& StringUtils.isNotBlank(properties.getTransport().getClientIp())) {
+			System.setProperty(TransportConfig.HEARTBEAT_CLIENT_IP,
+					properties.getTransport().getClientIp());
+		}
+		if (StringUtils.isEmpty(System.getProperty(SentinelConfig.CHARSET))
+				&& StringUtils.isNotBlank(properties.getMetric().getCharset())) {
+			System.setProperty(SentinelConfig.CHARSET,
+					properties.getMetric().getCharset());
+		}
+		if (StringUtils
+				.isEmpty(System.getProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE))
+				&& StringUtils.isNotBlank(properties.getMetric().getFileSingleSize())) {
+			System.setProperty(SentinelConfig.SINGLE_METRIC_FILE_SIZE,
+					properties.getMetric().getFileSingleSize());
+		}
+		if (StringUtils
+				.isEmpty(System.getProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT))
+				&& StringUtils.isNotBlank(properties.getMetric().getFileTotalCount())) {
+			System.setProperty(SentinelConfig.TOTAL_METRIC_FILE_COUNT,
+					properties.getMetric().getFileTotalCount());
+		}
+		if (StringUtils.isEmpty(System.getProperty(SentinelConfig.COLD_FACTOR))
+				&& StringUtils.isNotBlank(properties.getFlow().getColdFactor())) {
+			System.setProperty(SentinelConfig.COLD_FACTOR,
+					properties.getFlow().getColdFactor());
+		}
+		if (StringUtils.isNotBlank(properties.getBlockPage())) {
+			setConfig(BLOCK_PAGE_URL_CONF_KEY, properties.getBlockPage());
+		}
+
+		// earlier initialize
+		if (properties.isEager()) {
+			InitExecutor.doInit();
+		}
+
+	}
+
+	@Bean
+	@ConditionalOnMissingBean
+	public SentinelResourceAspect sentinelResourceAspect() {
+		return new SentinelResourceAspect();
+	}
+
+	@Bean
+	@ConditionalOnMissingBean
+	@ConditionalOnClass(name = "org.springframework.web.client.RestTemplate")
+	@ConditionalOnProperty(name = "resttemplate.sentinel.enabled", havingValue = "true",
+			matchIfMissing = true)
+	public SentinelBeanPostProcessor sentinelBeanPostProcessor(
+			ApplicationContext applicationContext) {
+		return new SentinelBeanPostProcessor(applicationContext);
+	}
+
+	@Bean
+	@ConditionalOnMissingBean
+	public SentinelDataSourceHandler sentinelDataSourceHandler(
+			DefaultListableBeanFactory beanFactory, SentinelProperties sentinelProperties,
+			Environment env) {
+		return new SentinelDataSourceHandler(beanFactory, sentinelProperties, env);
+	}
+
+	@ConditionalOnClass(ObjectMapper.class)
+	@Configuration(proxyBeanMethods = false)
+	protected static class SentinelConverterConfiguration {
+
+		@Configuration(proxyBeanMethods = false)
+		protected static class SentinelJsonConfiguration {
+
+			private ObjectMapper objectMapper = new ObjectMapper();
+
+			public SentinelJsonConfiguration() {
+				objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
+						false);
+			}
+
+			@Bean("sentinel-json-flow-converter")
+			public JsonConverter jsonFlowConverter() {
+				return new JsonConverter(objectMapper, FlowRule.class);
+			}
+
+			@Bean("sentinel-json-degrade-converter")
+			public JsonConverter jsonDegradeConverter() {
+				return new JsonConverter(objectMapper, DegradeRule.class);
+			}
+
+			@Bean("sentinel-json-system-converter")
+			public JsonConverter jsonSystemConverter() {
+				return new JsonConverter(objectMapper, SystemRule.class);
+			}
+
+			@Bean("sentinel-json-authority-converter")
+			public JsonConverter jsonAuthorityConverter() {
+				return new JsonConverter(objectMapper, AuthorityRule.class);
+			}
+
+			@Bean("sentinel-json-param-flow-converter")
+			public JsonConverter jsonParamFlowConverter() {
+				return new JsonConverter(objectMapper, ParamFlowRule.class);
+			}
+
+		}
+
+		@ConditionalOnClass(XmlMapper.class)
+		@Configuration(proxyBeanMethods = false)
+		protected static class SentinelXmlConfiguration {
+
+			private XmlMapper xmlMapper = new XmlMapper();
+
+			public SentinelXmlConfiguration() {
+				xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
+						false);
+			}
+
+			@Bean("sentinel-xml-flow-converter")
+			public XmlConverter xmlFlowConverter() {
+				return new XmlConverter(xmlMapper, FlowRule.class);
+			}
+
+			@Bean("sentinel-xml-degrade-converter")
+			public XmlConverter xmlDegradeConverter() {
+				return new XmlConverter(xmlMapper, DegradeRule.class);
+			}
+
+			@Bean("sentinel-xml-system-converter")
+			public XmlConverter xmlSystemConverter() {
+				return new XmlConverter(xmlMapper, SystemRule.class);
+			}
+
+			@Bean("sentinel-xml-authority-converter")
+			public XmlConverter xmlAuthorityConverter() {
+				return new XmlConverter(xmlMapper, AuthorityRule.class);
+			}
+
+			@Bean("sentinel-xml-param-flow-converter")
+			public XmlConverter xmlParamFlowConverter() {
+				return new XmlConverter(xmlMapper, ParamFlowRule.class);
+			}
+
+		}
+
+	}
+
+}

+ 17 - 0
ruoyi-common/ruoyi-common-sentinel/src/main/java/com/ruoyi/common/sentinel/config/properties/SentinelCustomProperties.java

@@ -0,0 +1,17 @@
+package com.ruoyi.common.sentinel.config.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * sentinel自定义配置类
+ *
+ * @author Lion Li
+ */
+@Data
+@ConfigurationProperties(prefix = "spring.cloud.sentinel.transport")
+public class SentinelCustomProperties {
+
+    private String serverName;
+
+}

+ 1 - 0
ruoyi-common/ruoyi-common-sentinel/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+

+ 11 - 12
ruoyi-gateway/pom.xml

@@ -44,24 +44,12 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
         </dependency>
 
 
-        <!-- SpringCloud Alibaba Sentinel -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-
         <!-- SpringCloud Alibaba Sentinel Gateway -->
         <!-- SpringCloud Alibaba Sentinel Gateway -->
         <dependency>
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
             <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
         </dependency>
         </dependency>
 
 
-        <!-- Sentinel Datasource Nacos -->
-        <dependency>
-            <groupId>com.alibaba.csp</groupId>
-            <artifactId>sentinel-datasource-nacos</artifactId>
-        </dependency>
-
         <!-- SpringBoot Actuator -->
         <!-- SpringBoot Actuator -->
         <dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>
@@ -91,6 +79,17 @@
             <version>${satoken.version}</version>
             <version>${satoken.version}</version>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-sentinel</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.alibaba.csp</groupId>
+                    <artifactId>sentinel-apache-dubbo3-adapter</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
         <dependency>
         <dependency>
             <groupId>com.ruoyi</groupId>
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common-satoken</artifactId>
             <artifactId>ruoyi-common-satoken</artifactId>

+ 0 - 6
ruoyi-modules/ruoyi-gen/pom.xml

@@ -29,12 +29,6 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
         </dependency>
 
 
-        <!-- SpringCloud Alibaba Sentinel -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-
         <!-- SpringBoot Actuator -->
         <!-- SpringBoot Actuator -->
         <dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>

+ 0 - 6
ruoyi-modules/ruoyi-job/pom.xml

@@ -29,12 +29,6 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
         </dependency>
 
 
-        <!-- SpringCloud Alibaba Sentinel -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-
         <!-- SpringBoot Actuator -->
         <!-- SpringBoot Actuator -->
         <dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>

+ 5 - 6
ruoyi-modules/ruoyi-resource/pom.xml

@@ -29,12 +29,6 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
         </dependency>
 
 
-        <!-- SpringCloud Alibaba Sentinel -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-
         <!-- Mysql Connector -->
         <!-- Mysql Connector -->
         <dependency>
         <dependency>
             <groupId>mysql</groupId>
             <groupId>mysql</groupId>
@@ -47,6 +41,11 @@
             <artifactId>spring-boot-starter-actuator</artifactId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-sentinel</artifactId>
+        </dependency>
+
         <dependency>
         <dependency>
             <groupId>com.ruoyi</groupId>
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common-doc</artifactId>
             <artifactId>ruoyi-common-doc</artifactId>

+ 5 - 6
ruoyi-modules/ruoyi-system/pom.xml

@@ -29,12 +29,6 @@
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
         </dependency>
 
 
-        <!-- SpringCloud Alibaba Sentinel -->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-
         <!-- SpringBoot Actuator -->
         <!-- SpringBoot Actuator -->
         <dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>
@@ -47,6 +41,11 @@
             <artifactId>mysql-connector-java</artifactId>
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-sentinel</artifactId>
+        </dependency>
+
         <!-- RuoYi Common Log -->
         <!-- RuoYi Common Log -->
         <dependency>
         <dependency>
             <groupId>com.ruoyi</groupId>
             <groupId>com.ruoyi</groupId>