1. 程式人生 > >hystrix詳述(2)- 配置

hystrix詳述(2)- 配置

一、hystrix在生產中的建議

1、保持timeout的預設值(1000ms),除非需要修改(其實通常會修改)

2、保持threadpool的的執行緒數為10個,除非需要更多

3、依賴標準的報警和監控系統來捕獲問題

4、通過dashboards的實時監控來動態修改配置,直到滿意為止

 

二、配置資訊(default或HystrixCommandKey最常用的幾項

  • 超時時間(預設1000ms,單位:ms)
    • hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
      • 在呼叫方配置,被該呼叫方的所有方法的超時時間都是該值,優先順序低於下邊的指定配置
    • hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds
      • 在呼叫方配置,被該呼叫方的指定方法(HystrixCommandKey方法名)的超時時間是該值
  • 執行緒池核心執行緒數
    • hystrix.threadpool.default.coreSize(預設為10)
  • Queue
    • hystrix.threadpool.default.maxQueueSize(最大排隊長度。預設-1,使用SynchronousQueue。其他值則使用 LinkedBlockingQueue。如果要從-1換成其他值則需重啟,即該值不能動態調整,若要動態調整,需要使用到下邊這個配置)
    • hystrix.threadpool.default.queueSizeRejectionThreshold(排隊執行緒數量閾值,預設為5,達到時拒絕,如果配置了該選項,佇列的大小是該佇列)
      • 注意:如果maxQueueSize=-1的話,則該選項不起作用
  • 斷路器
    • hystrix.command.default.circuitBreaker.requestVolumeThreshold(當在配置時間視窗內達到此數量的失敗後,進行短路。預設20個)
      • For example, if the value is 20, then if only 19 requests are received in the rolling window (say a window of 10 seconds
        ) the circuit will not trip open even if all 19 failed.
    • hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds(短路多久以後開始嘗試是否恢復,預設5s)
    • hystrix.command.default.circuitBreaker.errorThresholdPercentage(出錯百分比閾值,當達到此閾值後,開始短路。預設50%)
  • fallback
    • hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests(呼叫執行緒允許請求HystrixCommand.GetFallback()的最大數量,預設10。超出時將會有異常丟擲,注意:該項配置對於THREAD隔離模式也起作用)

 

三、監控hystrix

說明:hystrix為每一個commandKey提供了計數器。原理:

附:清晰大圖

 

四、常見的hystrix事件型別

  • run()
    • SUCCESS:run()成功,不觸發getFallback()
    • FAILURE:run()拋異常,觸發getFallback()
    • TIMEOUT:run()超時,觸發getFallback()
    • BAD_REQUEST:run()丟擲HystrixBadRequestException,不觸發getFallback()
    • SHORT_CIRCUITED:斷路器開路,觸發getFallback()
    • THREAD_POOL_REJECTED:執行緒池耗盡,觸發getFallback()
    • FALLBACK_MISSING:沒有實現getFallback(),丟擲異常
  • getFallback()
    • FALLBACK_SUCCESS:getFallback()成功,不拋異常
    • FALLBACK_FAILURE:getFallback()失敗,拋異常
    • FALLBACK_REJECTION:呼叫getFallback()的執行緒數超量,拋異常

五、Metrics storage and Dashboard

僅僅記錄hystrix1.5.0及其後續版本,之前的版本的資料結構不一樣。

http://www.ahlinux.com/java/18235.html

 

https://www.cnblogs.com/java-zhao/p/5524584.html