Spring Cloud Circuit Breaker
目录
Spring Cloud Circuit breaker provides an abstraction across different circuit breaker implementations. It provides a consistent API to use in your applications allowing you the developer to choose the circuit breaker implementation that best fits your needs for your app.
支持实现
Sentinel | Hystrix(维护状态) | Resilience4j(Spring推荐) | |
---|---|---|---|
开发者 | alibaba | Netflix | 独立 |
隔离策略 | 信号量隔离(并发线程数限流) | 线程池隔离/信号量隔离 | 信号量隔离 |
熔断降级策略 | 基于响应时间、异常比率、异常数 | 基于异常比率 | 基于异常比率、响应时间 |
实时统计实现 | 滑动窗口(LeapArray) | 滑动窗口(基于 RxJava) | Ring Bit Buffer |
动态规则配置 | 支持多种数据源 | 支持多种数据源 | 有限支持 |
扩展性 | 多个扩展点 | 插件的形式 | 接口的形式 |
基于注解的支持 | 支持 | 支持 | 支持 |
限流 | 基于 QPS,支持基于调用关系的限流 | 有限的支持 | Rate Limiter |
流量整形 | 支持预热模式、匀速器模式、预热排队模式 | 不支持 | 简单的 Rate Limiter 模式 |
系统自适应保护 | 支持 | 不支持 | 不支持 |
控制台 | 提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等 | 简单的监控查看 | 不提供控制台,可对接其它监控系统 |
github star(2022.5) | 19.1 | 22.7k | 8k |
核心概念
要在代码中创建断路器,您可以使用CircuitBreakerFactoryAPI。当您在类路径中包含 Spring Cloud 断路器启动器时,将自动为您创建实现此 API 的 bean。
|
|
API 将 CircuitBreakerFactory.create
创建一个名为 CircuitBreaker
的类的实例。该 run 方法需要 Supplier 和 Function。这 Supplier 是您要包装在断路器中的代码。这Function是如果断路器跳闸将执行的后备。将传递 Throwable 导致触发回退的函数。如果您不想提供回退,您可以选择排除回退。
Spring Boot Config
The following starters are available with the Spring Cloud BOM
- Hystrix -
org.springframework.cloud:spring-cloud-starter-netflix-hystrix
- Resilience4J -
org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j
- Reactive Resilience4J -
org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j
- Spring Retry -
org.springframework.cloud:spring-cloud-starter-circuitbreaker-spring-retry
- Sentinal -
org.springframework.cloud:spring-cloud-starter-circuitbreaker-sentinal
https://docs.spring.io/spring-cloud-circuitbreaker/docs/current/reference/html/