Hystrix semaphore和thread隔離策略的區別及配置參
Hystrix semaphore和thread隔離策略的區別及配置參考
通用設定說明
Hystrix所有的配置都是hystrix.command.[HystrixCommandKey]
開頭,其中[HystrixCommandKey]
是可變的,預設是default
,即hystrix.command.default
;另外Hystrix內建了預設引數,如果沒有配置Hystrix屬性,預設引數就會被設定,其優先順序:
hystrix.command.[HystrixCommandKey].
XXX
hystrix.command.default.
XXX
Hystrix程式碼內建屬性引數值
Hystrix隔離策略相關的引數
策略引數設定
execution.isolation.strategy= THREAD|SEMAPHORE
execution.isolation.thread.timeoutInMilliseconds
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
用來設定thread和semaphore兩種隔離策略的超時時間,預設值是1000。
建議設定這個引數,在Hystrix 1.4.0之前,semaphore-isolated隔離策略是不能超時的,從1.4.0開始semaphore-isolated也支援超時時間了。
建議透過CommandKey設定不同微服務的超時時間,對於zuul而言,CommandKey就是service id:
hystrix.command.[CommandKey].execution.isolation.thread.timeoutInMilliseconds
這個超時時間要根據CommandKey
所對應的業務和伺服器所能承受的負載來設定,要根據CommandKey
業務的平均響應時間設定,一般是大於平均響應時間的20%~100%
,最好是根據壓力測試結果來評估,這個值設定太大,會導致執行緒不夠用而會導致太多的任務被fallback;設定太小,一些特殊的慢業務失敗率提升,甚至會造成這個業務一直無法成功,在重試機制存在的情況下,反而會加重後端服務壓力。
execution.isolation.semaphore.maxConcurrentRequests
這個值並非TPS
、QPS
、RPS
等都是相對值,指的是1秒時間視窗內的事務/查詢/請求,semaphore.maxConcurrentRequests
是一個絕對值,無時間視窗,相當於亞毫秒級的,指任意時間點允許的併發數。當請求達到或超過該設定值後,其其餘就會被拒絕。預設值是100。
execution.timeout.enabled
是否開啟超時,預設是true,開啟。
execution.isolation.thread.interruptOnTimeout
發生超時是是否中斷執行緒,預設是true。
execution.isolation.thread.interruptOnCancel
取消時是否中斷執行緒,預設是false。
作者:鐵湯
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3549/viewspace-2820545/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL RR隔離級別的更新衝突策略MySql
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- Thread和Runnable的區別thread
- Thread 和runnable的區別thread
- 熔斷器 Hystrix 原始碼解析 —— 命令執行(二)之執行隔離策略原始碼
- hystrix執行緒池隔離的原理與驗證執行緒
- MySQL的事務處理及隔離級別MySql
- Fescar鎖和隔離級別的理解
- Hystrix 自動降級與依賴隔離原理
- ORACLE的隔離級別Oracle
- MySQL的隔離級別MySql
- Hystrix- 基於 Hystrix 訊號量機制實現資源隔離
- 事務基礎特性及隔離級別
- Java中Runnable和Thread的區別Javathread
- Java 中Thread 和Runnable的區別Javathread
- 網路隔離的最小配置
- MySQL事務隔離級別和MVCCMySqlMVC
- mysql事務隔離級別和鎖MySql
- MySQL之事務隔離級別和MVCCMySqlMVC
- SqlServer事務詳解(事務隔離性和隔離級別詳解)SQLServer
- Mysql 隔離級別MySql
- Hystrix Thread Pool 解析thread
- Mysql RC/RR隔離原理和區別 不可重複讀和可重複讀MySql
- MySQL事務的隔離級別MySql
- MySQL的事務隔離級別MySql
- MySQL 的隔離級別 自理解MySql
- Oracle的隔離級別(Isolation Level)Oracle
- Postgresql 的預設隔離級別SQL
- 轉android-Service和Thread的區別Androidthread
- Task.Delay 和 Thread.Sleep 的區別thread
- 事務可見性的判斷和事務隔離級別,PostgreSQL和MySQL實現上有啥區別MySql
- MySQL 事務隔離級別解析和實戰MySql
- SQL鎖機制和事務隔離級別SQL
- Spring Cloud構建微服務架構-Hystrix依賴隔離SpringCloud微服務架構
- 資料庫事務的隔離級別及四大特性資料庫
- MySQL 事務的隔離級別及鎖操作的一點點演示MySql
- MySQL 事務隔離級別MySql
- PostgreSQL事務隔離級別SQL