附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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM