• 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;

  • 相关阅读:
    坚持
    随笔
    C++:对象和类
    STEP7 V14 安装和激活
    c++:cout
    C 格式化字符串处理函数
    WIn:消极处理机制
    Python:requests发送json格式数据
    Python:logging日志功能的基本使用
    PLC:西门子测试
  • 原文地址:https://www.cnblogs.com/suhaha/p/14646111.html
Copyright © 2020-2023  润新知