環境: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妳都清楚了嗎?