Hystrix概述(二)

1、hystrix在生產中的建議html

一、保持timeout的默認值(1000ms),除非須要修改(其實一般會修改)java

二、保持threadpool的的線程數爲10個,除非須要更多linux

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

四、經過dashboards的實時監控來動態修改配置,直到滿意爲止github

 

2、配置信息(default或HystrixCommandKey最經常使用的幾項數據結構

  • 超時時間(默認1000ms,單位:ms)
    • hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
    • hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds
  • 線程池核心線程數
    • 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個)
    • hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds(短路多久之後開始嘗試是否恢復,默認5s)
    • hystrix.command.default.circuitBreaker.errorThresholdPercentage(出錯百分比閾值,當達到此閾值後,開始短路。默認50%)
  • fallback
    • hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests(調用線程容許請求HystrixCommand.GetFallback()的最大數量,默認10。超出時將會有異常拋出,注意:該項配置對於THREAD隔離模式也起做用)

 

3、監控hystrixui

說明:hystrix爲每個commandKey提供了計數器。原理:線程

附:清晰大圖htm

 

4、常見的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()的線程數超量,拋異常

5、Metrics storage and Dashboard

僅僅記錄hystrix1.5.0及其後續版本,以前的版本的數據結構不同。

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

相關文章
相關標籤/搜索