Spring Cloud 中断路器 Circuit Breaker的应用

如题所述

第1个回答  2022-05-20

环境:Springboot2.3.12.RELEASE + cloud-netflix-hystrix2.2.10.RELEASE

SpringCloud Circuit breaker(断路器)提供了跨不同断路器实现的抽象。它提供了在应用程序中使用的一致API,允许开发人员选择最适合应用程序需要的断路器实现。

支持的断路器类型:

要在代码中创建断路器(circuit breaker),可以使用断路器工厂API。当您在类路径中包含Spring Cloud Circuit Breaker starter时,将自动创建一个实现此API的bean。下面给出了使用此API的一个非常简单的示例:

通过引入下面不同依赖来确定使用具体的那个断路器

以上5种断路器是不同的实现方式,根据需要引入即可。

这里以Hystrix为例来使用

引入依赖

定义具有熔断功能的服务

Controller接口

CircuitBreakerFactory#create方法创建了CircuitBreaker实例

根据当前的CLASSPATH我们使用的是Hystrix,那么这里使用的工厂就是:

HystrixCircuitBreakerFactory类

泛型参数:Setter就是用来配置Hystrix相关配置信息的(这里主要用来CommandKey与Setter进行绑定),HystrixConfigBuilder用来构建 HystrixCommand.Setter对象。

当执行HystrixCircuitBreakerFactory#configure方法时:

断路器具体的子类实现HystrixCircuitBreakerFactory

断路器工厂有了,接下来就是通过工厂创建具体的断路器对象了

通过上面的代码执行cbf().create("demo-slow")方法时执行了什么?

上面创建的是HystrixCircuitBreaker断路器,当执行run方法时:

完毕!!!

关注+转发

Sentinel 与 Hystrix 的对比

SpringCloud Hystrix实现资源隔离应用

SpringCloud Gateway 应用Hystrix 限流功能 自定义Filter详解

Spring Boot Security防重登录及在线总数

Spring Retry重试框架的应用

springboot mybatis jpa 实现读写分离

Spring容器对象BeanFactory与ApplicationContext你都清楚了吗?

相似回答