筆記:Spring Cloud Hystrix Command屬性


主要用來控制 HystrixCommand 命令的行為,主要有下面5種類型的屬性配置:

  • execution配置

    該配置前綴為 hystrix.command.default

    • execution.isolation.strategy :該屬性用來設置執行的隔離策略,有如下二個選項:
      • THREAD:通過線程池隔離的策略,在獨立線程上執行,並且他的並發限制受線程池中線程數量的限制(默認)
      • SEMAPHONE:通過信號量隔離的策略,在調用線程上執行,並且他的並發限制受信號量計數的限制。
    • execution.isolation.thread.timeoutInMilliseconds:該屬性用來配置 HystrixCommand 執行的超時時間,單位為毫秒,默認值 1000 ,超出此時間配置,Hystrix 會將該執行命令為 TIMEOUT 並進入服務降級處理邏輯
    • execution.timeout.enabled:該屬性用來配置 HystrixCommand 執行是否啟動超時時間,默認值 true,如果設置為 false,則 execution.isolation.thread.timeoutInMilliseconds 屬性的配置將不起作用
    • execution.isolation.thread.interruptOnTimeout:該屬性用來配置當 HystrixCommand 執行超時的時候,是否需要將他中斷,默認值 true
    • execution.isolation.semaphore.maxConcurrentRequests:當隔離策略使用信號量時,該屬性用來配置信號量的大小,當最大並發請求數達到該設置值,后續的請求將會被拒絕
  • fallback配置

    該配置前綴為 hystrix.command.default

    • fallback.enabled:該屬性用來設置服務降級策略是否啟用,默認值 true ,如果設置為false,當請求失敗或拒絕發生時,將不會調用 HystrixCommand.getFallback() 來執行服務降級邏輯
  • circuitBreaker 配置

    該配置前綴為 hystrix.command.default

    • circuitBreaker.enabled:該屬性用來確定當服務請求命令失敗時,是否使用斷路器來跟蹤其健康指標和熔斷請求,默認值 true
    • circuitBreaker.requestVolumeThreshold:該屬性用來設置在滾動時間窗中,斷路器的最小請求數。例如:默認值 20 的情況下,如果滾動時間窗(默認值 10秒)內僅收到19個請求,即使這19個請求都失敗了,斷路器也不會打開。
    • circuitBreaker.sleepWindowInMilliseconds:該屬性用來設置當斷路器打開之后的休眠時間窗。默認值 5000 毫秒,休眠時間窗結束之后,會將斷路器設置為"半開"狀態,嘗試熔斷的請求命令,如果依然失敗就將斷路器繼續設置為"打開"狀態,如果成功就設置為"關閉"狀態。
    • circuitBreaker.errorThresholdPercentage:該屬性用來設置斷路器打開的錯誤百分比條件。例如,默認值為 50 的情況下,表示在滾動時間窗中,在請求數量超過 circuitBreaker.requestVolumeThreshold 閾值的請求下,如果錯誤請求數的百分比超過50,就把斷路器設置為"打開"狀態,否則就設置為"關閉"狀態。
    • circuitBreaker.forceOpen:該屬性用來設置斷路器強制進入"打開"狀態,會拒絕所有請求,該屬性優先於 circuitBreaker.forceClosed
    • circuitBreaker.forceClosed:該屬性用來設置斷路器強制進入"關閉"狀態,會接收所有請求。
  • metrics 配置

    該配置屬性與HystrixCommand 和 HystrixObservableCommand 執行中捕獲指標信息有關,配置前綴為 hystrix.command.default

    • metrics.rollingStats.timeInMilliseconds:該屬性用於設置滾動時間窗的長度,單位毫秒,該時間用於斷路器判斷健康度時需要收集信息的持續時間,默認值 10000 。斷路器值啊收集指標信息時候會根據設置的時間窗長度拆分成多個"桶"來累計各度量值,每個"桶"記錄了一段時間內的采集指標。
    • metrics.rollingStats.numBuckets:該屬性用來設置滾動時間窗統計指標信息時,划分"桶"的數量,默認值 10 。 metrics.rollingStats.timeInMilliseconds 參數的設置必須能被該參數整除,否則將拋出異常。

      metrics.rollingPercentile.enabled:該屬性用來設置對命令執行的延遲是否使用百分位數來跟蹤和計算,默認值 true ,如果設置為 false 那么所有概要統計都將返回 -1

    • metrics.rollingPercentile.timeInMilliseconds:該屬性用來設置百分位統計的滾動窗口的持續時間,單位:毫秒,默認值 60000
    • metrics.rollingPercentile.numBuckets:該屬性用來設置百分位統計窗口中使用"桶"的數量,默認值 6
    • metrics.rollingPercentile.bucketSize:該屬性用來設置在執行過程中每個"桶"中保留的最大執行次數,如果在滾動時間窗內發生超該設定值的執行次數,就從最初的位置開始重寫,例如:設置為 100,滾動窗口為 10 秒,若在10秒內一個"桶"中發生了500次執行,那么該"桶"中只保留最后的100次執行的統計,默認值 100
    • metrics.healthSnapshot.intervalInMilliseconds:該屬性用來設置采集影響斷路器狀態的健康快照(請求的成功、錯誤百分比)的間隔等待時間,默認值 500
  • requestContext 配置

    該配置前綴為 hystrix.command.default

    • requestCache.enabled:該屬性用來配置是否開啟請求緩存
    • requestLog.enabledg:該屬性用來設置 HystrixCommand 的執行和事件是否打印日志到 HystrixRequestLog 中,默認值 true
  • collapser 配置

    該配置前綴為 hystrix.collapser.default

    • maxRequestsInBatch:該屬性用來設置一次請求合並批處理允許的最大請求數量,默認值 Integer.MAX_VALUE
    • timerDelayInMilliseconds:該屬性用來設置批處理過程中每個命令延遲的時間,單位毫秒,默認值 10
    • requestCache.enabled:該屬性用來設置批處理過程中是否開啟請求緩存,默認值 true

    threadPool 配置

    該配置前綴為 hystrix.threadpool.default

    • coreSize:該屬性用來設置執行命令線程池的核心線程數,該值也就是命令執行的最大並發量,默認值 10
    • maxQueueSize:該屬性用來設置線程池的最大隊列大小,當設置為 -1 時,線程池將使用 SynchronousQueue 實現的隊列,否則使用 LinkedBlockingQueue 實現的隊列,默認值 -1
    • queueSizeRejectionThreshold :該屬性用來為隊列設置拒絕閾值,即使隊列沒有到達最大值也能拒絕請求,該屬性主要對 LinkedBlockingQueue 隊列的補充,默認值 5,當 maxQueueSize 屬性為 -1 時候,該屬性無效
    • metrics.rollingPercentile.timeInMilliseconds:該屬性用來設置線程池統計的滾動窗口的持續時間,單位:毫秒,默認值 10000
    • metrics.rollingPercentile.numBuckets:該屬性用來設置線程池統計窗口中使用"桶"的數量,默認值 10
    •  


免責聲明!

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



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