Hystrix淺談

Hystrix如何使用不少說明,看了不少博客,卻發現能說明一些簡單概念的文章就沒有.git

因此本文不太回去說如何使用 Hystrix ,可是會簡明的說一下 一些概念github

 

super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ProductInfoService"))後端

.andCommandKey(HystrixCommandKey.Factory.asKey("GetProductInfoCommand"))緩存

.andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("GetProductInfoPool"))ui

.andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter()線程

.withCoreSize(3)blog

.withMaximumSize(30)接口

.withAllowMaximumSizeToDivergeFromCoreSize(true)隊列

.withKeepAliveTimeMinutes(1)ci

.withMaxQueueSize(12)

.withQueueSizeRejectionThreshold(15))

.andCommandPropertiesDefaults(HystrixCommandProperties.Setter()

.withCircuitBreakerRequestVolumeThreshold(30)

.withCircuitBreakerErrorThresholdPercentage(40)

.withCircuitBreakerSleepWindowInMilliseconds(3000)

.withExecutionTimeoutInMilliseconds(500)

.withFallbackIsolationSemaphoreMaxConcurrentRequests(30))

);

以上代碼是 Hystrix的一些設置.

HystrixCommandGroupKey.Factory.asKey("ProductInfoService")

HystrixCommandGroupKey 是用來 聲明一個服務接口的,,默認 HystrixCommandGroupKey 就是線程池名稱

HystrixCommandKey 默認是 類名,通常設置爲類名+Comand就 ok

HystrixThreadPoolKey 用來設置線程池 的,若是不設置 ,默認 HystrixCommandGroupKey 就是線程池名稱

withCoreSize 設置線程池的線程數量

withMaximumSize 設置線程池的最大數量

withAllowMaximumSizeToDivergeFromCoreSize 容許動態調整線程池的數量

withKeepAliveTimeMinutes 線程池中的線程多久不使用就回收

withMaxQueueSize 設置緩存隊列的最大大小

withQueueSizeRejectionThreshold 設置緩存隊列的大小

withMaxQueueSize withQueueSizeRejectionThreshold 哪一個值小,哪一個就是 緩存隊列的大小

 

withCircuitBreakerRequestVolumeThreshold 設置斷路器10秒內的 流量閥值

舉個例子,可能看起來是這樣子的,要求在10s內,通過短路器的流量必須達到30個;在10s內,通過短路器的流量才10個,那麼根本不會去判斷要不要短路

withCircuitBreakerErrorThresholdPercentage  斷路器統計到的異常調用的佔比超過了必定的閾值

好比說在10s內,通過短路器的流量(你,只要執行一個command,這個請求就必定會通過短路器),達到了30個;同時其中異常的訪問數量,佔到了必定的比例,好比說40%的請求都是異常(報錯,timeout,reject),會開啓短路

withCircuitBreakerSleepWindowInMilliseconds: 斷路器打開,嘗試 會half-open 請求的等待時間

斷路器打開的時候,全部通過該斷路器的請求所有被短路,不調用後端服務,直接走fallback降級 

通過了一段時間以後,HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds(),會half-open,讓一條請求通過短路器,看能不能正常調用。若是調用成功了,那麼就自動恢復,轉到close狀態

短路器,會自動恢復的,half-open,半開狀態

 

 

 

 

使用 github地址:

本人以爲 github 已經說明的很是詳細了

https://github.com/Netflix/Hystrix/wiki/How-To-Use#Hello-World



做者:wuy
連接:https://www.jianshu.com/p/cc22d5a70d79
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
 
相關文章
相關標籤/搜索