zoukankan      html  css  js  c++  java
  • 8-18 Hystrix隔离术介绍

    线程隔离这块,一定会有线程池,有线程池,我们一般会给他启用一个唯一标识。然后用来对于线程池进行一些相关的操作。就像我们有孩子,我们给他起名字张三、二狗,紧接着呢我想去召唤他什么的,我就用这个名字就可以了。这就是ThreadPoolKey的意思。

    ThreadPoolKey不是必填项。Hytrix在你不指定ThreadPoolKey的情况下默认会使用GroupKey命名线程池。

    添加线程池的方法

    演示怎么改线程池的名称。


    信号量是操作系统底层的一个概念。大家如果搜linux的信号量,应该能搜到具体的意思。Hytrix里面信号量的通俗的解释。可以认为它是一种计数器,没进来就加1.当信号量上限满了,我就不允许后面再进来了。说白了它就是一个排队的过程,你进来一个,我就加一个,这就好像停车场,来一个车,车位就数量减1,数量减没了就代表我所有的车就停满了。



    信号量不是单起一个线程给你执行业务逻辑,它就在你的主线程上去执行,但是你主线程调用的次数我要限制,超过这个数量,我就不允许你在主线程上继续执行了。 就是信号量本身做的一个事情。这个事情不难理解。

    官方图,用来讲解信号量和线程隔离。


    当一个请求进来了,它就分为三种情况两大类去执行。首先左边这一块。这一块是线程隔离。


    右侧的就是信号量。它有10个计数。

    两者主要的区别就在这里,加Denpendency Thread依赖的线程,所以在线程池这块它本身会给我重启线程进行业务处理。而在信号量隔离这里,它不会给我们重启线程,直接就进行执行了。

    下面这个图主要讲,线程隔离的好处。这里面有很多的的thread线程。

    同一个业务进来了。访问了两个率框和一个红框。访问了这三个框。访问了之后呢,这两个绿框都执行成功了。而红框失执行失败了。

    但是这里告诉你了,要么它就重试,要么就超时,然后进行一个快速失败。而并不会影响另外两个地方。所以这个图最主要想讲解的就是,当我们线程隔离以后,这些业务处理当某一个线程出现问题以后,并不会影响其他线程的处理。那这件事情本身就是它隔离术想要做的事情。

    一个请求进来分别访问,上两个都可以成功,中间这个就进行一个快速的失败,即便不快速失败也不会影响其他两个线程返回我们正确的结果。这就是它线程隔离的好处。

    信号量隔离就不需要图去说了。因为它就是当前线程去执行,和我们原来理解的没有什么差异,他唯独增加的就是我们限流措施,

    结束

  • 相关阅读:
    WCF 第十三章 可编程站点 为站点创建操作
    WCF 第十三章 可编程站点 所有都与URI相关
    WCF 第十二章 对等网 使用自定义绑定实现消息定向
    WCF 第十三章 可编程站点 使用WebOperationContext
    Using App.Config for user defined runtime parameters
    WCF 第十三章 可编程站点
    WCF 第十三章 可编程站点 使用AJAX和JSON进行网页编程
    WCF 第十二章 总结
    WCF 第十三章 可编程站点 使用WebGet和WebInvoke
    WCF 第十三章 可编程站点 URI和UriTemplates
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12815224.html
Copyright © 2011-2022 走看看