(24)SpringCloud-Hystrix(熔斷器)介紹及使用
Hystrix 是 Netflix 針對微服務分散式系統採用的熔斷保護中介軟體,相當於電路中的保險絲。
在分散式環境中,許多服務依賴項中的一些必然會失敗。Hystrix 是一個庫,透過新增延遲容忍和容錯邏輯,幫助你控制這些分散式服務之間的互動。Hystrix 透過隔離服務之間的訪問點、停止級聯失敗和提供回退選項來實現這一點,所有這些都可以提高系統的整體彈性。
在微服務架構下,很多服務都相互依賴,如果不能對依賴的服務進行隔離,那麼服務本身也有可能發生故障,Hystrix 透過 HystrixCommand 對呼叫進行隔離,這樣可以阻止故障的連鎖效應,能夠讓介面呼叫快速失敗並迅速恢復正常,或者回退並優雅降級。
Hystrix 的簡單使用
建立一個空的 Maven 專案,在專案中增加 Hystrix 的依賴,程式碼如下所示。
<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>1.5.18</version> </dependency>
編寫第一個 HystrixCommand,程式碼如下所示。
首先需要繼承 HystrixCommand,透過建構函式設定一個 Groupkey。具體的邏輯在 run 方法中,我們返回了一個當前執行緒名稱的值。寫一個 main 方法來呼叫上面編寫的 MyHystrixCommand 程式,程式碼如下所示。
輸出結果如圖 1 所示:
從圖 1 中可以看到輸出結果是“zhangsan:hystrix-MyGroup-1”。由此可以看出,建構函式中設定的組名變成了執行緒的名字。
上面是同步呼叫,如果需要非同步呼叫可以使用如下程式碼所示的方法。
執行結果和圖 1 相同。
回退支援
下面我們透過增加執行時間模擬呼叫超時失敗的情況。首先改造 MyHystrixCommand,增加 getFallback 方法返回回退內容,程式碼如下所示。
public class MyHystrixCommand extends HystrixCommand<String> { private final String name; public MyHystrixCommand(String name) { super(HystrixCommandGroupKey.Factory.asKey("MyGroup")); this.name = name; } @Override protected String run() { try { Thread.sleep(1000 * 10); } catch (InterruptedException e) { e.printStackTrace(); } return this.name + ":" + Thread.currentThread().getName(); } @Override protected String getFallback() { return "失敗了 "; } }
重新執行呼叫程式碼,執行結果如圖 2 所示,可以發現返回的內容是“失敗了”,證明已經觸發了回退。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2921618/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringCloud-Hystrix 服務降級、熔斷SpringGCCloud
- Hystrix斷路器介紹
- 介紹Spring Cloud斷路器SpringCloud
- springcloud(四):熔斷器HystrixSpringGCCloud
- springcloud之Hystrix熔斷器SpringGCCloud
- Swagger介紹及使用Swagger
- vagrant介紹及使用
- Canal 介紹及使用
- 使用springcloud gateway搭建閘道器(分流,限流,熔斷)SpringGCCloudGateway
- 微服務SpringCloud之熔斷器微服務SpringGCCloud
- Python APScheduler介紹及使用Python
- Gin框架介紹及使用框架
- Tomcat 介紹及使用教程Tomcat
- Docker基本介紹及使用Docker
- Lombok介紹及使用方法Lombok
- netcat 命令介紹及使用示例
- Nacos 配置中心介紹及使用
- JEB工具的介紹及使用
- 微服務元件之限流器與熔斷器微服務元件
- 《SpringCloud專題17》-Hystrix熔斷器案例SpringGCCloud
- 附002.Minikube介紹及使用
- MapStruct的介紹及入門使用Struct
- Hystrix--熔斷
- Istio實踐(4)- 故障注入、熔斷及ServiceEntry
- SpringCloud原始碼學習之Hystrix熔斷器SpringGCCloud原始碼
- SpringCloud學習筆記:熔斷器Hystrix(5)SpringGCCloud筆記
- Spring Cloud實戰系列(四) - 熔斷器HystrixSpringCloud
- JavaScript FormData的詳細介紹及使用JavaScriptORM
- Golang指標基本介紹及使用案例Golang指標
- Jupyter Notebook介紹、安裝及使用教程
- 簡單介紹nginx反向代理及使用Nginx
- (7)Spring Boot Starter的介紹及使用Spring Boot
- 微服務熔斷隔離機制及注意事項微服務
- springcloud之hystrix熔斷器-Finchley.SR2版SpringGCCloud
- 熔斷器 Hystrix 原始碼解析 —— 執行命令方式原始碼
- 跟我學SpringCloud | 第四篇:熔斷器HystrixSpringGCCloud
- 從kratos分析breaker熔斷器原始碼實現原始碼
- Django-中介軟體的介紹及使用Django