Hystrix 提供了丰富的配置项来适应不同场景下的需求,以下是一些基本的配置项及其说明:
-
超时配置
execution.isolation.thread.timeoutInMilliseconds
:指定命令执行的超时时间,超过这个时间将会抛出HystrixTimeoutException
并执行降级逻辑。默认值通常是1000毫秒。
-
断路器配置
circuitBreaker.enabled
:是否启用断路器,默认为true。circuitBreaker.requestVolumeThreshold
:断路器打开需要的最小请求数量,默认为20。circuitBreaker.sleepWindowInMilliseconds
:断路器打开后多久进入半开状态,开始尝试恢复请求,默认为5000毫秒。circuitBreaker.errorThresholdPercentage
:断路器打开的错误百分比阈值,默认为50%,即错误率超过50%时断路器打开。
-
资源隔离配置
- 对于线程池隔离:
execution.isolation.strategy
:隔离策略,可选THREAD
(默认)或SEMAPHORE
。threadPool.coreSize
:线程池的核心线程数。threadPool.maxQueueSize
:线程池队列的最大长度。threadPool.queueSizeRejectionThreshold
:队列满时的拒绝阈值。
- 对于信号量隔离:
execution.isolation.semaphore.maxConcurrentRequests
:信号量最大并发请求数。
- 对于线程池隔离:
-
请求缓存
requestCache.enabled
:是否启用请求缓存,默认为true。
-
重试配置
execution.isolation.retry.enabled
:是否启用重试,默认为false。注意,Hystrix本身不直接支持重试,这通常需要结合其他库或手动实现。
-
指标滚动窗口
metrics.rollingStats.timeInMilliseconds
:指标滚动窗口的时间长度,默认为10000毫秒。metrics.rollingStats.numBuckets
:滚动窗口的桶数,用来细分时间窗口以便统计,默认为10。
-
日志与监控
logging.level
:Hystrix日志级别。metrics.healthSnapshot.intervalInMilliseconds
:健康快照间隔,影响监控数据的刷新频率。
这些配置项可以通过多种方式设置,包括但不限于通过代码直接配置、使用@HystrixCommand
注解的属性、或通过配置文件(如application.yml或hystrix.properties)来集中管理。正确的配置对于确保Hystrix发挥最佳效能至关重要。