博客
关于我
Hystrix线程隔离策略与传播上下文
阅读量:181 次
发布时间:2019-02-28

本文共 861 字,大约阅读时间需要 2 分钟。

Hystrix的隔离策略主要有两种:线程隔离和信号量隔离。选择哪种策略取决于具体的使用场景和需求。

线程隔离(THREAD)是一种常用的隔离方式。使用这种方法时,HystrixCommand会在单独的线程上执行,线程池中的线程数量会限制并发请求的数量。在大多数情况下,Hystrix默认使用线程隔离,因为这种方式除了网络超时外,还提供了额外的保护层。

信号量隔离(SEMAPHORE)则相对轻量化。使用这种方式时,HystrixCommand会在调用线程上执行,开销较小,并发请求的数量受信号量的个数限制。通常情况下,只有在负载非常高时(如每个实例每秒调用数百次),才建议使用信号量隔离。这种情况下,线程隔离的开销会较高。需要注意的是,信号量隔离通常不适用于网络调用的隔离。

Hystrix提供了通过commandProperties属性来配置隔离策略。例如,可以在注解中指定如下配置:

@HystrixCommand(fallbackMethod = "stubMyService",     commandProperties = {        @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE")    })

如果需要传播线程本地上下文到@HystrixCommand,可以通过配置使其在同一线程上执行,避免找不到上下文的运行时异常。例如:

@HystrixCommand(fallbackMethod = "stubMyService",     commandProperties = {        @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE")    })

总的来说,Hystrix的默认隔离策略是线程隔离,除非有特殊需求,否则无需特别配置。仅在遇到极端高负载场景或需要更高效的资源利用时,才建议考虑信号量隔离。

转载地址:http://purj.baihongyu.com/

你可能感兴趣的文章
Oracle 11gR2构建RAC之(2)--配置共享存储
查看>>
Oracle 11g中的snapshot standby特性
查看>>
Oracle 11g关闭用户连接审计
查看>>
Oracle 11g忘记sys、system、scott密码该这样修改!
查看>>
Oracle 11g数据库安装和卸载教程
查看>>
Oracle 11g数据库成功安装创建详细步骤
查看>>
Oracle 11g超详细安装步骤
查看>>
Oracle 12c中的MGMTDB
查看>>
Oracle 12c安装报错Installation failed to access the temporary location(无法访问临时位置)...
查看>>
Oracle 9i数据库管理教程
查看>>
ORACLE Active dataguard 一个latch: row cache objects BUG
查看>>
oracle avg、count、max、min、sum、having、any、all、nvl的用法
查看>>
Oracle BEQ方式连接配置
查看>>
oracle Blob保存方式,oracle 存储过程操作blob
查看>>
Oracle BMW Racing sailing vessel帆船图
查看>>
ORACLE Bug 4431215 引发的血案—原因分析篇
查看>>
Oracle cmd乱码
查看>>
Oracle Corp甲骨文公司推出Oracle NoSQL数据库2.0版
查看>>
oracle dblink 创建使用 垮库转移数据
查看>>
oracle dblink结合同义词的用法 PLS-00352:无法访问另一数据库
查看>>