Hystrix 配置項講解(二)
1. 前言
在上一篇文章中,我們對 Hystrix 的基礎配置項,即 Hystrix 與 Spring Cloud 整合后,內置的 Hystrix 配置項做了詳細的介紹,這些配置項是我們結合 Spring Cloud 使用 Hystrix 的基礎內容,我們只有在了解了 Spring Cloud 都提供了哪些內置的 Hystrix 配置注解之后,才能很靈活的去應用 Hystrix 。
在了解了 Hystrix 的基礎配置之后,我們還需要對其他常用的 Hystrix 配置項有所了解。本節(jié)會結合 Hystrix 官網(wǎng)列出的配置參數(shù),結合 Spring Cloud 框架,來為大家介紹 Hystrix 的其他配置內容。
本節(jié)主要內容:
-
Hystrix 其他配置項概覽;
-
Hystrix 常用其他配置參數(shù)詳解。
2. Hystrix 其他配置項概覽
結合 Hystrix 官網(wǎng)給出的說明,Hystrix 的其他配置項可分為 3 大模塊,它們分別是公共配置模塊、命令合并配置模塊、線程池配置模塊。
在這三大模塊中,命令合并配置模塊、線程池配置模塊下沒有其他的子項配置內容,也就是說,命令合并配置模塊下,所有的配置項都只配置命令合并;線程池配置模塊下,所有的配置項都只對線程池進行配置。而公共配置模塊中就包含了很多子項的配置,它們的關系如下圖所示:

在這三個模塊中,我會挑選其中常用的屬性參數(shù)來為大家介紹,至于那些在實際工作中很少用或者基本使用不到的屬性,這里就不做介紹了。
3. Hystrix 常用其他配置參數(shù)詳解
3.1 公共配置模塊詳解
根據(jù)上述公共配置模塊的分類圖可知,在公共配置模塊中分為了很多子項配置,但是這些子項配置并不是都需要我們進行掌握,有的配置我們只需要簡單了解即可。
接下來就讓我們來看一下,在公共配置模塊的各項子配置中,都有哪些參數(shù)是經(jīng)常使用的吧。
執(zhí)行參數(shù)配置
參數(shù)名稱:execution.isolation.strategy
參數(shù)說明:該參數(shù)是用來配置 Hystrix 的隔離策略,有兩種模式可供選擇,分別是線程隔離模式、信號量隔離模式,默認情況下, Hystrix 被配置為了線程隔離模式,這也是 Hystrix 官網(wǎng)推薦的默認配置。
參數(shù)名稱:execution.timeout.enabled
參數(shù)說明:該參數(shù)是用來配置,Hystrix 的執(zhí)行是否支持延遲,即配置 Hystrix 執(zhí)行的延時時間,默認是啟用延遲時間。
參數(shù)名稱:execution.isolation.thread.interruptOnTimeout
參數(shù)說明:該參數(shù)是用來配置,當 Hystrix 的執(zhí)行超過了我們設置的延遲時間時,是否會中斷當前線程的執(zhí)行,默認是啟用該中斷效果。
參數(shù)名稱:execution.isolation.semaphore.
maxConcurrentRequests
參數(shù)說明:該參數(shù)只在當 Hystrix 的隔離策略被設置為信號量隔離模式時才會生效,即配置 Hystrix 執(zhí)行所允許的最大請求數(shù)量,當請求數(shù)量超過了最大請求數(shù)量時,那么后續(xù)的請求將被拒絕,不再處理。該配置的默認最大請求數(shù)量為 10 。
降級參數(shù)配置
參數(shù)名稱:fallback.isolation.semaphore.
maxConcurrentRequests
參數(shù)說明:該參數(shù)只在當 Hystrix 的降級策略被配置為 semaphore 信號量模式下才會生效,即配置請求降級方法的最大請求數(shù)量,當請求的數(shù)量達到最大請求數(shù)量時,如果配置了降級方法,則請求會打到對應的降級方法上,且后續(xù)的請求都會被拒絕;如果沒有配置降級方法,則會拋出異常。該屬性的默認最大請求數(shù)量為 10 。
參數(shù)名稱:fallback.enabled
參數(shù)說明:該參數(shù)就是用來配置,服務降級是否開啟,默認為開啟。
熔斷參數(shù)配置
參數(shù)名稱:circuitBreaker.enabled
參數(shù)說明:該參數(shù)就是用來配置,服務熔斷是否開啟,默認為開啟。
參數(shù)名稱:circuitBreaker.requestVolumeThreshold
參數(shù)說明:該參數(shù)是用來設置,啟用服務熔斷的最少請求數(shù)量,例如:我們設置該屬性的值為 10 ,此時,只有 9 個請求需要處理,那么我們配置的服務熔斷也是未啟用狀態(tài)。該屬性的默認值為 20 。
參數(shù)名稱:circuitBreaker.errorThresholdPercentage
參數(shù)說明:該參數(shù)是用來配置啟用服務熔斷的請求出錯比例,例如:當我們設置該屬性的值為 50% 時,在有 20 個請求需要處理的場景下,有 10 個請求錯誤,那么此時就會啟用服務熔斷。該屬性的默認值為 50 。
參數(shù)名稱:circuitBreaker.forceOpen
參數(shù)說明:該參數(shù)時用來配置服務熔斷的打開狀態(tài),如果該屬性被設置為 true ,則表示服務熔斷將會一直啟用,那么再有請求過來時,則不會處理任何請求,即斷路器一直會拒絕所有的請求。該屬性的默認值為 false 。
參數(shù)名稱:circuitBreaker.forceClosed
參數(shù)說明:該參數(shù)的作用與 forceOpen 屬性正好相反,該屬性是設置服務熔斷的關閉狀態(tài),如果該屬性被設置為 true ,則斷路器會一直處于關閉狀態(tài),會處理所有打過來的請求,無視請求錯誤率。該屬性的默認值為 false 。
監(jiān)控參數(shù)配置
對于 Hystrix 監(jiān)控參數(shù) Metrics 的相關配置項,由于太過抽象,所以這里就先不做介紹了,后續(xù)我們在介紹 Hystrix 監(jiān)控面板的時候再做介紹。
請求上下文參數(shù)配置
參數(shù)名稱:requestCache.enabled
參數(shù)說明:該參數(shù)的作用就是配置請求緩存的使用狀態(tài),默認為 true ,即使用請求緩存。
參數(shù)名稱:requestLog.enabled
參數(shù)說明:該參數(shù)的作用就是配置請求日志的使用狀態(tài),默認為 true ,即使用請求日志。
3.2 命令合并配置模塊詳解
參數(shù)名稱:maxRequestsInBatch
參數(shù)說明:該參數(shù)就是用來設置可以合并的最大請求數(shù)量,默認值為 Integer.MAX_VALUE 。
參數(shù)名稱:timerDelayInMilliseconds
參數(shù)說明:該參數(shù)是用來設置請求合并到執(zhí)行請求合并之間的間隔時間,默認值為 10 毫秒。
參數(shù)名稱:requestCache.enabled
參數(shù)說明:該參數(shù)是用來設置,請求合并是否要寫進請求緩存中去,默認為 true ,即寫進請求緩存中。
3.3 線程池配置模塊詳解
參數(shù)名稱:coreSize
參數(shù)說明:該屬性用來設置核心線程池的大小,默認為 10 。
參數(shù)名稱:maximumSize
參數(shù)說明:該屬性是用來設置線程池的最大線程數(shù)量,默認為 10 ,在 1.5.9 版本之前,線程池的核心線程數(shù)量總是與線程池的最大線程數(shù)量保持一致。
參數(shù)名稱:allowMaximumSizeToDivergeFromCoreSize
參數(shù)說明:該屬性是用來設置,是否啟用 maximumSize ,即設置線程池的 coreSize 和 maximumSize 的值不一致,當被設置為 true 時,該屬性生效,即線程池的最大線程數(shù)量大于或等于線程池的核心線程數(shù)量。該屬性的默認值為 false 。
參數(shù)名稱:keepAliveTimeMinutes
參數(shù)說明:該參數(shù)是用來設置線程的存活時間,即在線程池的核心線程數(shù)量小于線程池的最大線程數(shù)量時,一個線程的可運行時長。該屬性的默認值為 1 分鐘。
4. 小結

本小節(jié)通過圖文并茂的方式,為大家介紹了 Hystrix 的其他配置項,這些配置項并不像 Hystrix 基礎配置項那樣重要,但是在實際 Hystrix 配置使用中,也扮演著比較重要的角色,同學們要對這些配置項有簡單的了解才行。