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

你可能感兴趣的文章
Objective-C实现BitMap算法(附完整源码)
查看>>
Objective-C实现bogo sort排序算法(附完整源码)
查看>>
Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
查看>>
Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
查看>>
Objective-C实现check strong password检查密码强度算法(附完整源码)
查看>>
Objective-C实现circle sort圆形排序算法(附完整源码)
查看>>
Objective-C实现coulombs law库仑定律算法(附完整源码)
查看>>
Objective-C实现DBSCAN聚类算法(附完整源码)
查看>>
Objective-C实现Diffie-Hellman算法(附完整源码)
查看>>
Objective-C实现dijkstra银行家算法(附完整源码)
查看>>
Objective-C实现Dinic算法(附完整源码)
查看>>
Objective-C实现disjoint set不相交集算法(附完整源码)
查看>>
Objective-C实现DisjointSet并查集的算法(附完整源码)
查看>>
Objective-C实现djb2哈希算法(附完整源码)
查看>>
Objective-C实现DNF排序算法(附完整源码)
查看>>
Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
查看>>
Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
查看>>
Objective-C实现double hash双哈希算法(附完整源码)
查看>>
Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
查看>>
Objective-C实现DoublyLinkedList双链表的算法(附完整源码)
查看>>