美文网首页程序员
Hystrix线程隔离技术解析-信号量

Hystrix线程隔离技术解析-信号量

作者: 新栋BOOK | 来源:发表于2017-08-10 18:36 被阅读2041次

hystrix的线程隔离技术除了线程池,还有另外一种方式:信号量。

线程池和信号量的区别

《Hystrix线程隔离技术解析-线程池》一文最后,我们谈到了线程池的缺点,当我们依赖的服务是极低延迟的,比如访问内存缓存,就没有必要使用线程池的方式,那样的话开销得不偿失,而是推荐使用信号量这种方式。下面这张图说明了线程池隔离和信号量隔离的主要区别:线程池方式下业务请求线程和执行依赖的服务的线程不是同一个线程;信号量方式下业务请求线程和执行依赖服务的线程是同一个线程

信号量和线程池的区别.png
如何使用信号量来隔离线程

将属性execution.isolation.strategy设置为SEMAPHORE ,象这样 ExecutionIsolationStrategy.SEMAPHORE,则Hystrix使用信号量而不是默认的线程池来做隔离。

public class CommandUsingSemaphoreIsolation extends HystrixCommand<String> {

    private final int id;

    public CommandUsingSemaphoreIsolation(int id) {
        super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"))
                // since we're doing work in the run() method that doesn't involve network traffic
                // and executes very fast with low risk we choose SEMAPHORE isolation
                .andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
                        .withExecutionIsolationStrategy(ExecutionIsolationStrategy.SEMAPHORE)));
        this.id = id;
    }

    @Override
    protected String run() {
        // a real implementation would retrieve data from in memory data structure
        // or some other similar non-network involved work
        return "ValueFromHashMap_" + id;
    }

}
总结

信号量隔离的方式是限制了总的并发数,每一次请求过来,请求线程和调用依赖服务的线程是同一个线程,那么如果不涉及远程RPC调用(没有网络开销)则使用信号量来隔离,更为轻量,开销更小。

转载请注明出处,并附上链接http://www.jianshu.com/p/af8dc67e5238

参考资料:https://github.com/Netflix/Hystrix/wiki

相关文章

  • Hystrix线程隔离技术解析-信号量

    hystrix的线程隔离技术除了线程池,还有另外一种方式:信号量。 线程池和信号量的区别 在《Hystrix线程隔...

  • Hystrix 隔离策略细粒度控制

    Hystrix 隔离策略细粒度控制 Hystrix 实现资源隔离,有两种策略: 线程池隔离 信号量隔离 对资源隔离...

  • Hystrix - Hystrix 隔离策略细粒度控制

    Hystrix 隔离策略细粒度控制 Hystrix 实现资源隔离,有两种策略: 线程池隔离 信号量隔离 对资源隔离...

  • SpringCloud--熔断器:Hystricx

    1.1 Hystrix介绍 Hystrix的设计原则是什么? l 资源隔离(线程池隔离和信号量隔离)机制:限制调用...

  • 用 Hystrix 构建高可用服务架构(中)

    4.Hystrix 隔离策略细粒度控制 Hystrix 实现资源隔离,有两种策略: 线程池隔离 信号量隔离 对资源...

  • Hystrix线程隔离技术解析-线程池

    认识Hystrix Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降...

  • SpringCloud生态

    1、hystrix简述 使用Hystrix实现隔离分布式服务故障。提供线程和信号量隔离,以减少不同服务之间资源竞争...

  • Semaphore使用

    在spring cloud的hystrix组件中资源隔离分为线程池隔离和信号量,信号量底层用的就是Semaphor...

  • Hystrix技术解析(图片版)

    一、认识Hystrix Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程池隔离、信号量隔...

  • Hystrix技术解析

    一、认识Hystrix Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程池隔离、信号量隔...

网友评论

    本文标题:Hystrix线程隔离技术解析-信号量

    本文链接:https://www.haomeiwen.com/subject/egxkrxtx.html