博客
关于我
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/

你可能感兴趣的文章
poj1068Parencodings
查看>>
poj1182(带权并查集)
查看>>
POJ1182(带权并查集)
查看>>
Qt笔记——Qt初探、PyQt5和Qt5
查看>>
poj1190生日蛋糕
查看>>
POJ1218 HDU1337 ZOJ1350 UVALive2557 THE DRUNK JAILER
查看>>
poj1222 EXTENDED LIGHTS OUT(gauss)
查看>>
POJ1240 m叉树
查看>>
Poj1328--Radar Installation(区间选点)
查看>>
POJ1384Piggy-Bank(DP)
查看>>
POJ1417 True Liars —— 并查集 + DP
查看>>
Poj1459 Power Network 预流推进
查看>>
POJ1502(MPI Maelstrom)
查看>>
poj1568 Find the Winning Move[极大极小搜索+alpha-beta剪枝]
查看>>
poj1730 - Perfect Pth Powers(完全平方数)(水题)
查看>>
poj1753——Flip Game
查看>>
poj1936 假期计划第一水
查看>>
poj1958-汉诺四塔问题(三种方法)
查看>>
poj1988(并查集)
查看>>
POJ2007+几何+极角排序
查看>>