code review 修改

pull/138/head
koltZhang 2024-09-10 10:35:30 +08:00
parent 66bb809aba
commit 662e8bd02d
13 changed files with 175 additions and 274 deletions

View File

@ -41,8 +41,6 @@
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency> </dependency>
<!-- Sentinel Datasource Nacos -->
<dependency> <dependency>
<groupId>com.alibaba.csp</groupId> <groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId> <artifactId>sentinel-datasource-nacos</artifactId>

View File

@ -6,12 +6,9 @@ import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
/**
* SpringMyServicebeanbean
*/
@AutoConfiguration @AutoConfiguration
@Slf4j @Slf4j
public class SentinelExceptionHandlerAutoConfiguration { public class YudaoSentinelAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean

View File

@ -15,13 +15,13 @@ import org.springframework.http.HttpStatus;
/** /**
* Sentinel * Sentinel
* @author koltZhang
*/ */
public class SentinelExceptionHandler implements BlockExceptionHandler { public class SentinelExceptionHandler implements BlockExceptionHandler {
@Override @Override
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String s, BlockException e) throws Exception { public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String s, BlockException e) throws Exception {
String msg = "未知异常"; String msg = "未知异常";
int status = HttpStatus.TOO_MANY_REQUESTS.value(); int status = HttpStatus.TOO_MANY_REQUESTS.value();
if (e instanceof FlowException) { if (e instanceof FlowException) {
@ -33,10 +33,9 @@ public class SentinelExceptionHandler implements BlockExceptionHandler {
} else if (e instanceof AuthorityException) { } else if (e instanceof AuthorityException) {
msg = "没有权限访问"; msg = "没有权限访问";
status = HttpStatus.UNAUTHORIZED.value(); status = HttpStatus.UNAUTHORIZED.value();
}else if (e instanceof SystemBlockException) { } else if (e instanceof SystemBlockException) {
msg = "系统规则限流或降级"; msg = "系统规则限流或降级";
} }
ServletUtils.writeJSON(httpServletResponse, CommonResult.error(status, msg)); ServletUtils.writeJSON(httpServletResponse, CommonResult.error(status, msg));
} }

View File

@ -2,4 +2,4 @@ cn.iocoder.yudao.framework.idempotent.config.YudaoIdempotentConfiguration
cn.iocoder.yudao.framework.lock4j.config.YudaoLock4jConfiguration cn.iocoder.yudao.framework.lock4j.config.YudaoLock4jConfiguration
cn.iocoder.yudao.framework.ratelimiter.config.YudaoRateLimiterConfiguration cn.iocoder.yudao.framework.ratelimiter.config.YudaoRateLimiterConfiguration
cn.iocoder.yudao.framework.signature.config.YudaoApiSignatureAutoConfiguration cn.iocoder.yudao.framework.signature.config.YudaoApiSignatureAutoConfiguration
cn.iocoder.yudao.framework.sentinel.config.SentinelExceptionHandlerAutoConfiguration cn.iocoder.yudao.framework.sentinel.config.YudaoSentinelAutoConfiguration

View File

@ -17,48 +17,8 @@ spring:
spring: spring:
cloud: cloud:
sentinel: sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport: transport:
dashboard: 127.0.0.1:8080 # Sentinel 控制台地址 dashboard: 127.0.0.1:8080 # Sentinel 控制台地址
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
#自定义流控降级异常信息
scg:
fallback:
mode: response
response-body: '{"code": 429, "msg":"服务压力过大,请稍后重试!"}'
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/system-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-gw-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: gw_flow
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 系统规则
system:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-system-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: system
# 日志文件配置 # 日志文件配置
logging: logging:

View File

@ -230,3 +230,48 @@ knife4j:
yudao: yudao:
info: info:
version: 1.0.0 version: 1.0.0
--- #################### Sentinel相关配置 ####################
spring:
cloud:
sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
#自定义流控降级异常信息
scg:
fallback:
mode: response
response-body: '{"code": 429, "msg":"服务压力过大,请稍后重试!"}'
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/system-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-gw-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: gw_flow
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 系统规则
system:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-system-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: system

View File

@ -16,7 +16,6 @@ public interface SentinelFeigenDemoApi {
String PREFIX = ApiConstants.PREFIX + "/provider/sentinel"; String PREFIX = ApiConstants.PREFIX + "/provider/sentinel";
@GetMapping(PREFIX +"/test/{message}") @GetMapping(PREFIX +"/test/{message}")
public CommonResult<String> providerSentinelTest(@PathVariable("message") String message); public CommonResult<String> providerSentinelTest(@PathVariable("message") String message);

View File

@ -19,61 +19,8 @@ spring:
spring: spring:
cloud: cloud:
sentinel: sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport: transport:
dashboard: 127.0.0.1:8080 # Sentinel 控制台地址 dashboard: 127.0.0.1:8080 # Sentinel 控制台地址
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/gateway-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: flow
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 授权规则
# authority:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-authority-rules
# rule-type: authority
# # 热点规则
# param-flow:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-param-flow-rules
# rule-type: param-flow
# # 系统规则
# system:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-system-rules
# groupId: DEFAULT_GROUP
# data-type: json
# rule-type: system
--- #################### 数据库相关配置 #################### --- #################### 数据库相关配置 ####################
spring: spring:

View File

@ -19,61 +19,8 @@ spring:
spring: spring:
cloud: cloud:
sentinel: sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport: transport:
dashboard: 127.0.0.1:8080 # Sentinel 控制台地址 dashboard: 127.0.0.1:8080 # Sentinel 控制台地址
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/gateway-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: flow
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 授权规则
# authority:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-authority-rules
# rule-type: authority
# # 热点规则
# param-flow:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-param-flow-rules
# rule-type: param-flow
# # 系统规则
# system:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-system-rules
# groupId: DEFAULT_GROUP
# data-type: json
# rule-type: system
--- #################### 数据库相关配置 #################### --- #################### 数据库相关配置 ####################
spring: spring:

View File

@ -91,6 +91,11 @@ easy-trans:
--- #################### RPC 远程调用相关配置 #################### --- #################### RPC 远程调用相关配置 ####################
# 开启 feign 对 sentinel 的支持
feign:
sentinel:
enabled: true
--- #################### 消息队列相关 #################### --- #################### 消息队列相关 ####################
# rocketmq 配置项,对应 RocketMQProperties 配置类 # rocketmq 配置项,对应 RocketMQProperties 配置类
@ -180,8 +185,60 @@ yudao:
debug: false debug: false
--- #################### 开启feign对sentinel的支持 #################### --- #################### Sentinel相关配置 ####################
spring:
feign: cloud:
sentinel: sentinel:
enabled: true enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/gateway-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: flow
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 授权规则
# authority:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-authority-rules
# rule-type: authority
# # 热点规则
# param-flow:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-param-flow-rules
# rule-type: param-flow
# # 系统规则
# system:
# nacos:
# server-addr: ${spring.cloud.nacos.server-addr}
# namespace: ${spring.cloud.nacos.discovery.namespace}
# username: ${spring.cloud.nacos.username}
# password: ${spring.cloud.nacos.password}
# dataId: ${spring.application.name}-system-rules
# groupId: DEFAULT_GROUP
# data-type: json
# rule-type: system

View File

@ -20,61 +20,8 @@ spring:
spring: spring:
cloud: cloud:
sentinel: sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport: transport:
dashboard: 127.0.0.1:8080 # Sentinel 控制台地址 dashboard: 127.0.0.1:8080 # Sentinel 控制台地址
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/system-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: flow
# 授权规则
authority:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-authority-rules
rule-type: authority
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 热点规则
param-flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-param-flow-rules
rule-type: param-flow
# 系统规则
system:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-system-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: system
--- #################### 数据库相关配置 #################### --- #################### 数据库相关配置 ####################
spring: spring:

View File

@ -20,61 +20,8 @@ spring:
spring: spring:
cloud: cloud:
sentinel: sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport: transport:
dashboard: 127.0.0.1:8080 # Sentinel 控制台地址 dashboard: 127.0.0.1:8080 # Sentinel 控制台地址
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/system-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: flow
# 授权规则
authority:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-authority-rules
rule-type: authority
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 热点规则
param-flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-param-flow-rules
rule-type: param-flow
# 系统规则
system:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-system-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: system
--- #################### 数据库相关配置 #################### --- #################### 数据库相关配置 ####################
spring: spring:

View File

@ -91,6 +91,11 @@ easy-trans:
--- #################### RPC 远程调用相关配置 #################### --- #################### RPC 远程调用相关配置 ####################
# 开启 feign 对 sentinel 的支持
feign:
sentinel:
enabled: true
--- #################### 消息队列相关 #################### --- #################### 消息队列相关 ####################
# rocketmq 配置项,对应 RocketMQProperties 配置类 # rocketmq 配置项,对应 RocketMQProperties 配置类
@ -207,8 +212,61 @@ yudao:
debug: false debug: false
--- #################### 开启feign对sentinel的支持 #################### --- #################### Sentinel相关配置 ####################
feign: spring:
sentinel: cloud:
enabled: true sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
filter:
url-patterns: /** # 拦截请求的地址。默认为 /*
# sentinel用nacos作为数据源的配置 (可导入/yudao-cloud/script/sentinel/system-server下对应规则使用时需去掉注释)
datasource:
# 流控规则
flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
data-id: ${spring.application.name}-flow-rules # 在修改的sentinel 源码中定义的规则名
rule-type: flow
# 授权规则
authority:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-authority-rules
rule-type: authority
# 降级规则
degrade:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-degrade-rules
rule-type: degrade
# 热点规则
param-flow:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-param-flow-rules
rule-type: param-flow
# 系统规则
system:
nacos:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
username: ${spring.cloud.nacos.username}
password: ${spring.cloud.nacos.password}
dataId: ${spring.application.name}-system-rules
groupId: DEFAULT_GROUP
data-type: json
rule-type: system