From 4e70c9e920844bc9db1adfe40119abd5c0e1c4d0 Mon Sep 17 00:00:00 2001 From: hongqiaowei Date: Thu, 13 Jan 2022 18:37:26 +0800 Subject: [PATCH] Sync degrade rule service --- .../we/config/RefreshLocalCacheConfig.java | 4 - .../java/we/filter/FlowControlFilter.java | 130 ++++++------------ .../src/main/java/we/stats/BlockType.java | 4 +- .../we/stats/degrade/DegradeRuleService.java | 6 - 4 files changed, 40 insertions(+), 104 deletions(-) diff --git a/fizz-core/src/main/java/we/config/RefreshLocalCacheConfig.java b/fizz-core/src/main/java/we/config/RefreshLocalCacheConfig.java index c2155fd..559c8b7 100644 --- a/fizz-core/src/main/java/we/config/RefreshLocalCacheConfig.java +++ b/fizz-core/src/main/java/we/config/RefreshLocalCacheConfig.java @@ -75,11 +75,9 @@ public class RefreshLocalCacheConfig { @Resource private FizzMangerConfig fizzMangerConfig; - // @Resource // private DegradeRuleService degradeRuleService; - @Scheduled(initialDelayString = "${refresh-local-cache.initial-delay-millis:300000}", fixedRateString = "${refresh-local-cache.fixed-rate-millis:300000}") public void refreshLocalCache() { @@ -146,7 +144,6 @@ public class RefreshLocalCacheConfig { } } - // if (refreshLocalCacheConfigProperties.isDegradeRuleCacheRefreshEnabled()) { // LOGGER.debug("refresh degrade rule local cache"); // try { @@ -156,7 +153,6 @@ public class RefreshLocalCacheConfig { // } // } - fizzMangerConfig.updateMangerUrl(); } } diff --git a/fizz-core/src/main/java/we/filter/FlowControlFilter.java b/fizz-core/src/main/java/we/filter/FlowControlFilter.java index 1d3e8ee..50224eb 100644 --- a/fizz-core/src/main/java/we/filter/FlowControlFilter.java +++ b/fizz-core/src/main/java/we/filter/FlowControlFilter.java @@ -38,11 +38,9 @@ import we.stats.BlockType; import we.stats.FlowStat; import we.stats.IncrRequestResult; import we.stats.ResourceConfig; - import we.stats.circuitbreaker.CircuitBreakManager; import we.stats.circuitbreaker.CircuitBreaker; import we.stats.degrade.DegradeRule; - import we.stats.ratelimit.ResourceRateLimitConfig; import we.stats.ratelimit.ResourceRateLimitConfigService; import we.util.*; @@ -98,9 +96,6 @@ public class FlowControlFilter extends FizzWebFilter { @Resource private CircuitBreakManager circuitBreakManager; - @Resource - DegradeRuleService degradeRuleService; - @Override public Mono doFilter(ServerWebExchange exchange, WebFilterChain chain) { @@ -143,15 +138,12 @@ public class FlowControlFilter extends FizzWebFilter { if (result != null && !result.isSuccess()) { String blockedResourceId = result.getBlockedResourceId(); - if (BlockType.CIRCUIT_BREAK == result.getBlockType()) { log.info("{} exceed {} circuit breaker limit", traceId, blockedResourceId, LogService.BIZ_ID, traceId); - String responseContentType = flowControlFilterProperties.getDegradeDefaultResponseContentType(); String responseContent = flowControlFilterProperties.getDegradeDefaultResponseContent(); - CircuitBreaker cb = circuitBreakManager.getCircuitBreaker(blockedResourceId); if (cb.responseContentType != null) { responseContentType = cb.responseContentType; @@ -188,47 +180,6 @@ public class FlowControlFilter extends FizzWebFilter { } } - - DegradeRule degradeRule = degradeRuleService.getDegradeRule(ResourceIdUtils.SERVICE_DEFAULT_RESOURCE); - if (degradeRule != null) { - responseContentType = degradeRule.getResponseContentType(); - responseContent = degradeRule.getResponseContent(); - } - - degradeRule = degradeRuleService.getDegradeRule(blockedResourceId); - if (degradeRule != null) { - if (StringUtils.isNotBlank(degradeRule.getResponseContentType())) { - responseContentType = degradeRule.getResponseContentType(); - } - if (StringUtils.isNotBlank(degradeRule.getResponseContent())) { - responseContent = degradeRule.getResponseContent(); - } - } - - ServerHttpResponse resp = exchange.getResponse(); - resp.setStatusCode(HttpStatus.OK); - resp.getHeaders().add(HttpHeaders.CONTENT_TYPE, responseContentType); - return resp.writeWith(Mono.just(resp.bufferFactory().wrap(responseContent.getBytes()))); - } else { - if (BlockType.CONCURRENT_REQUEST == result.getBlockType()) { - log.info("{} exceed {} flow limit, blocked by maximum concurrent requests", traceId, blockedResourceId, LogService.BIZ_ID, traceId); - } else { - log.info("{} exceed {} flow limit, blocked by maximum QPS", traceId, blockedResourceId, LogService.BIZ_ID, traceId); - } - - ResourceRateLimitConfig c = resourceRateLimitConfigService.getResourceRateLimitConfig(ResourceIdUtils.NODE_RESOURCE); - String rt = c.responseType, rc = c.responseContent; - c = resourceRateLimitConfigService.getResourceRateLimitConfig(blockedResourceId); - if (c != null) { - if (StringUtils.isNotBlank(c.responseType)) { - rt = c.responseType; - } - if (StringUtils.isNotBlank(c.responseContent)) { - rc = c.responseContent; - } - } - - ServerHttpResponse resp = exchange.getResponse(); resp.setStatusCode(HttpStatus.OK); resp.getHeaders().add(HttpHeaders.CONTENT_TYPE, rt); @@ -396,9 +347,7 @@ public class FlowControlFilter extends FizzWebFilter { } } - /*if (checkDegradeRule) { - DegradeRule degradeRule = degradeRuleService.getDegradeRule(resource); if (degradeRule != null && degradeRule.isEnable()) { if (rc == null) { @@ -414,7 +363,6 @@ public class FlowControlFilter extends FizzWebFilter { } } } - }*/ if (checkDegradeRule) { @@ -425,7 +373,7 @@ public class FlowControlFilter extends FizzWebFilter { rc = new ResourceConfig(resource, 0, 0); resourceConfigs.add(rc); } - + } } } @@ -437,53 +385,53 @@ public class FlowControlFilter extends FizzWebFilter { prevPrev = resourceConfigs.get(sz - 2).getResourceId(); if (rateLimitConfig.type == ResourceRateLimitConfig.Type.APP) { - String app = ResourceIdUtils.getApp(prev); - if (rateLimitConfig.path == null) { - if (rateLimitConfig.service != null && app == null) { - something4(resourceConfigs, rateLimitConfig.app, null, null); - } + String app = ResourceIdUtils.getApp(prev); + if (rateLimitConfig.path == null) { + if (rateLimitConfig.service != null && app == null) { + something4(resourceConfigs, rateLimitConfig.app, null, null); + } + } else { + if (app == null) { + something4(resourceConfigs, rateLimitConfig.app, null, null); + something4(resourceConfigs, rateLimitConfig.app, null, rateLimitConfig.service); } else { + String service = ResourceIdUtils.getService(prev); + if (service == null) { + something4(resourceConfigs, rateLimitConfig.app, null, rateLimitConfig.service); + } else { + app = ResourceIdUtils.getApp(prevPrev); if (app == null) { something4(resourceConfigs, rateLimitConfig.app, null, null); - something4(resourceConfigs, rateLimitConfig.app, null, rateLimitConfig.service); - } else { - String service = ResourceIdUtils.getService(prev); - if (service == null) { - something4(resourceConfigs, rateLimitConfig.app, null, rateLimitConfig.service); - } else { - app = ResourceIdUtils.getApp(prevPrev); - if (app == null) { - something4(resourceConfigs, rateLimitConfig.app, null, null); - } - } } + } } + } } else if (rateLimitConfig.type == ResourceRateLimitConfig.Type.IP) { - if (rateLimitConfig.service == null && rateLimitConfig.path == null) { - } else if (rateLimitConfig.path == null) { - String ip = ResourceIdUtils.getIp(prev); - if (ip == null) { - something4(resourceConfigs, null, rateLimitConfig.ip, null); - } - } else { - String ip = ResourceIdUtils.getIp(prev); - if (ip == null) { - something4(resourceConfigs, null, rateLimitConfig.ip, null); - something4(resourceConfigs, null, rateLimitConfig.ip, rateLimitConfig.service); - } else { - String service = ResourceIdUtils.getService(prev); - if (service == null) { - something4(resourceConfigs, null, rateLimitConfig.ip, rateLimitConfig.service); - } else { - ip = ResourceIdUtils.getIp(prevPrev); - if (ip == null) { - something4(resourceConfigs, null, rateLimitConfig.ip, null); - } - } - } + if (rateLimitConfig.service == null && rateLimitConfig.path == null) { + } else if (rateLimitConfig.path == null) { + String ip = ResourceIdUtils.getIp(prev); + if (ip == null) { + something4(resourceConfigs, null, rateLimitConfig.ip, null); } + } else { + String ip = ResourceIdUtils.getIp(prev); + if (ip == null) { + something4(resourceConfigs, null, rateLimitConfig.ip, null); + something4(resourceConfigs, null, rateLimitConfig.ip, rateLimitConfig.service); + } else { + String service = ResourceIdUtils.getService(prev); + if (service == null) { + something4(resourceConfigs, null, rateLimitConfig.ip, rateLimitConfig.service); + } else { + ip = ResourceIdUtils.getIp(prevPrev); + if (ip == null) { + something4(resourceConfigs, null, rateLimitConfig.ip, null); + } + } + } + } } } } diff --git a/fizz-core/src/main/java/we/stats/BlockType.java b/fizz-core/src/main/java/we/stats/BlockType.java index e83d0bc..55005f1 100644 --- a/fizz-core/src/main/java/we/stats/BlockType.java +++ b/fizz-core/src/main/java/we/stats/BlockType.java @@ -18,7 +18,7 @@ package we.stats; /** - * + * * @author Francis Dong * */ @@ -36,9 +36,7 @@ public enum BlockType { /** * Blocked by degrade */ - DEGRADE, CIRCUIT_BREAK - } diff --git a/fizz-core/src/main/java/we/stats/degrade/DegradeRuleService.java b/fizz-core/src/main/java/we/stats/degrade/DegradeRuleService.java index 433eb2a..e451193 100644 --- a/fizz-core/src/main/java/we/stats/degrade/DegradeRuleService.java +++ b/fizz-core/src/main/java/we/stats/degrade/DegradeRuleService.java @@ -17,18 +17,14 @@ package we.stats.degrade; import lombok.extern.slf4j.Slf4j; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.data.redis.core.ReactiveStringRedisTemplate; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import we.config.AggregateRedisConfig; - import we.stats.circuitbreaker.CircuitBreakManager; - import we.util.JacksonUtils; import we.util.Result; @@ -43,14 +39,12 @@ import java.util.concurrent.ConcurrentHashMap; * * @author zhongjie */ - //@Service //@Slf4j public class DegradeRuleService { private static final Logger log = LoggerFactory.getLogger(DegradeRuleService.class); - /** * Redis degrade rule change channel */