zoukankan      html  css  js  c++  java
  • Hystrix工作流程【转】

    原文链接:https://blog.csdn.net/yangguosb/article/details/80820766

    工作流程

      工作流程主要分为三部分:调用请求封装成HystrixCommand、执行请求调用第三方服务和调用结果处理,如下图所示:

    命令执行

    执行方式

    • execute() — 同步调用,阻塞等待直至返回结果或者抛出异常;
    • queue() — 返回Future;
    • observe() — 返回Observable,立即执行,通过subscribe获取结果,相当于异步回调;
    • toObservable() — 返回Observable,延迟执行,当调用subscribe时命令才被执行;

    执行过程

    Step1:响应是否被缓存

      如果请求对应的结果已经被缓存,则直接返回结果;否则,执行下一步;

    Step2:熔断器是否被打开

      如果熔断器被打开,说明请求链路被熔断,无法调用第三方请求;否则,执行下一步。

    Step3:资源是否耗尽

    • 线程隔离:查看线程是否耗尽或者队列是否可用;
    • Semaphore隔离:查看是否有信号量可用;

    Step4:调用第三方服务

    • HystrixCommand.run() — returns a single response or throws an exception;
    • HystrixObservableCommand.construct() — returns an Observable that emits the response(s) or sends an onError notification

    调用结果处理

    Step1:健康度计算

      熔断器根据调用结果(成功、失败、超时或异常等)计算健康度,以便决定是否进行熔断;

    Step2:执行getFallback

      如果有服务降级逻辑,可以重写次方法实现。

    Step3:返回响应

    参考:

    官网说明:https://github.com/Netflix/Hystrix/wiki/How-it-Works#flow1;

  • 相关阅读:
    洛谷P1330 封锁阳光大学
    洛谷P1341 无序字母对
    Bzoj1059 [ZJOI2007]矩阵游戏
    POJ2337 Catenyms
    Bzoj2342 [Shoi2011]双倍回文
    Bzoj1009 [HNOI2008]GT考试
    Bzoj3670 [Noi2014]动物园
    POJ2406 Power Strings
    POJ 2752 Seek the Name, Seek the Fame
    POJ3522 Slim Span
  • 原文地址:https://www.cnblogs.com/suhaha/p/14646111.html
Copyright © 2011-2022 走看看