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/