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>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- Sentinel Datasource Nacos -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<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.context.annotation.Bean;
/**
* SpringMyServicebeanbean
*/
@AutoConfiguration
@Slf4j
public class SentinelExceptionHandlerAutoConfiguration {
public class YudaoSentinelAutoConfiguration {
@Bean
@ConditionalOnMissingBean

View File

@ -15,13 +15,13 @@ import org.springframework.http.HttpStatus;
/**
* Sentinel
* Sentinel
* @author koltZhang
*/
public class SentinelExceptionHandler implements BlockExceptionHandler {
@Override
public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String s, BlockException e) throws Exception {
String msg = "未知异常";
int status = HttpStatus.TOO_MANY_REQUESTS.value();
if (e instanceof FlowException) {
@ -33,10 +33,9 @@ public class SentinelExceptionHandler implements BlockExceptionHandler {
} else if (e instanceof AuthorityException) {
msg = "没有权限访问";
status = HttpStatus.UNAUTHORIZED.value();
}else if (e instanceof SystemBlockException) {
} else if (e instanceof SystemBlockException) {
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.ratelimiter.config.YudaoRateLimiterConfiguration
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:
cloud:
sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport:
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:

View File

@ -229,4 +229,49 @@ knife4j:
yudao:
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";
@GetMapping(PREFIX +"/test/{message}")
public CommonResult<String> providerSentinelTest(@PathVariable("message") String message);

View File

@ -19,61 +19,8 @@ spring:
spring:
cloud:
sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport:
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:

View File

@ -19,61 +19,8 @@ spring:
spring:
cloud:
sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport:
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:

View File

@ -91,6 +91,11 @@ easy-trans:
--- #################### RPC 远程调用相关配置 ####################
# 开启 feign 对 sentinel 的支持
feign:
sentinel:
enabled: true
--- #################### 消息队列相关 ####################
# rocketmq 配置项,对应 RocketMQProperties 配置类
@ -180,8 +185,60 @@ yudao:
debug: false
--- #################### 开启feign对sentinel的支持 ####################
feign:
sentinel:
enabled: true
--- #################### Sentinel相关配置 ####################
spring:
cloud:
sentinel:
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:
cloud:
sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport:
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:

View File

@ -20,61 +20,8 @@ spring:
spring:
cloud:
sentinel:
enabled: true # 是否开启。默认为 true 开启
eager: true # 是否饥饿加载。默认为 false 关闭
transport:
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:

View File

@ -91,6 +91,11 @@ easy-trans:
--- #################### RPC 远程调用相关配置 ####################
# 开启 feign 对 sentinel 的支持
feign:
sentinel:
enabled: true
--- #################### 消息队列相关 ####################
# rocketmq 配置项,对应 RocketMQProperties 配置类
@ -207,8 +212,61 @@ yudao:
debug: false
--- #################### 开启feign对sentinel的支持 ####################
--- #################### Sentinel相关配置 ####################
feign:
sentinel:
enabled: true
spring:
cloud:
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