关闭服务熔断和限流规则
最近更新时间: 2024-10-17 17:10:00
操作场景
用户在服务限流和服务熔断 tab 下新建服务限流/熔断规则时,如果已通过 Hystrix/Sentinel 等组件配置了限流熔断规则,可能会与此处新建的规则冲突,需要关闭已自建的规则。该任务指导您关闭自建的服务限流/熔断规则。
注意:
某些配置可能会关闭其他功能,请注意使用,做好验证。
操作步骤
限流
组件 | 关闭方法 |
---|---|
Resilience | 不支持通过 property 配置,需自行修改代码来关闭 |
Sentinel | 不支持通过 property 配置,需自行修改代码来关闭 |
熔断
Hystrix/Spring Cloud Hystrix
可以通过 property hystrix.command.default.circuitBreaker.enabled 关闭,修改 application.yml:
hystrix:
command:
default:
circuitBreaker:
enabled: false
如果用了 Feign,此方式也可以关闭其中的熔断功能。
Resilience
不支持配置,只能通过 transitionToDisabledState() 或自行修改代码来关闭。
transitionToDisabledState
示例如下:
public class ProviderServiceResilience {
private final static String cbName = "default";
private final CircuitBreakerRegistry cbRegistry;
public ProviderServiceResilience() {
cbRegistry = CircuitBreakerRegistry.ofDefaults();
}
public String run() {
try {
cbRegistry.circuitBreaker(cbName).executeCallable(...);
} catch (Exception e) {
}
return "resilience fallback\n";
}
public void disable() {
cbRegistry.circuitBreaker(cbName).transitionToDisabledState();
}
}
Spring Cloud Circuit Breaker - Resilience
注意:
此方法会关闭其他 Resilience 功能,如 TimeLimiter,请谨慎使用。
可以通过 property spring.cloud.circuitbreaker.resilience4j.enabled
关闭,修改 application.yml:
spring:
cloud:
circuitbreaker:
resilience4j:
enabled: false
Sentinel
需要自行修改代码来关闭。
Spring Cloud Circuit Breaker - Sentinel
可以通过 property spring.cloud.circuitbreaker.sentinel.enabled
关闭,修改 application.yml:
spring:
cloud:
circuitbreaker:
sentinel:
enabled: false