美文网首页
java spring cloud 版 b2b2c 社交电商-

java spring cloud 版 b2b2c 社交电商-

作者: IT达人Q | 来源:发表于2019-07-15 09:45 被阅读0次

    电子商务平台源码请加企鹅求求:三五三六二四七二五九。 Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力.

    Hystrix的设计原则包括:资源隔离、熔断器、命令模式。

    下面的流程图展示了当使用Hystrix的依赖请求,Hystrix是如何工作的。

    Hystrix工作原理.png

    Hystrix主要有4种调用方式:

    toObservable() 方法 :未做订阅,只是返回一个Observable 。

    observe() 方法 :调用 #toObservable() 方法,并向 Observable 注册 rx.subjects.ReplaySubject 发起订阅。

    queue() 方法 :调用 #toObservable() 方法的基础上,调用:Observable#toBlocking() 和 BlockingObservable#toFuture() 返回 Future 对象

    execute() 方法 :调用 #queue() 方法的基础上,调用 Future#get() 方法,同步返回 #run() 的执行结果。

    主要的执行逻辑:

    1.每次调用创建一个新的HystrixCommand,把依赖调用封装在run()方法中.

    2.执行execute()/queue做同步或异步调用.

    3.判断熔断器(circuit-breaker)是否打开,如果打开跳到步骤8,进行降级策略,如果关闭进入步骤.

    4.判断线程池/队列/信号量是否跑满,如果跑满进入降级步骤8,否则继续后续步骤.

    5.调用HystrixCommand的run方法.运行依赖逻辑

    依赖逻辑调用超时,进入步骤8.

    6.判断逻辑是否调用成功。返回成功调用结果;调用出错,进入步骤8.

    7.计算熔断器状态,所有的运行状态(成功, 失败, 拒绝,超时)上报给熔断器,用于统计从而判断熔断器状态.

    8.getFallback()降级逻辑。以下四种情况将触发getFallback调用:

    run()方法抛出非HystrixBadRequestException异常。

    run()方法调用超时

    熔断器开启拦截调用

    线程池/队列/信号量是否跑满

    没有实现getFallback的Command将直接抛出异常,fallback降级逻辑调用成功直接返回,降级逻辑调用失败抛出异常.

    9.返回执行成功结果

    相关文章

      网友评论

          本文标题:java spring cloud 版 b2b2c 社交电商-

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