zoukankan      html  css  js  c++  java
  • Spring Cloud Hystrix 学习(一)

    在学习Hystrix之前,首先引入一个问题场景,服务雪崩。如下图所示:

    可以看到,三个入口服务A、B、C最终都会请求到服务T。当服务T的请求过载,打满CPU都无法匹配请求的频率时,同步调用的上级服务就会逐级发生阻塞,最终导致所有服务陷入瘫痪状态,这就是服务雪崩的一种场景。如何解决雪崩?常见的几种方式就是降级、隔离、熔断、请求缓存以及请求合并。那么Hystrix是如何实现这几个功能的呢?在开始代码实践前,有必要对原理进行一定程度的了解。

    再通过一张流程图来加深对上方图中链路的理解:

    1. 构造一个 HystrixCommand或HystrixObservableCommand对象,用于封装请求,并在构造方法 配置请求被执行需要的参数;

    2. 执行命令,Hystrix提供了4种执行命令的方法,后面详述;

    3. 判断是否使用缓存响应请求,若启用了缓存,且缓存可用,直接使用缓存响应请求。Hystrix支持请求缓存,但需要用户自定义启动;

    4. 判断熔断器是否打开,如果打开,跳到第8步;

    5. 判断线程池/队列/信号量是否已满,已满则跳到第8步;

    6. 执行HystrixObservableCommand.construct()或HystrixCommand.run(),如果执行失败或者超时跳,到第8步;否则,跳到第9步;

    7. 统计熔断器监控指标;

    8. 走Fallback备用逻辑;

    9. 返回请求响应

    参考资料:

    https://www.cnblogs.com/yb-ken/p/15068392.html

    http://www.uml.org.cn/wfw/201906063.asp?artid=22057

  • 相关阅读:
    Spring Cloud 五 Feign的文件上传实现
    Spring Cloud 四:服务消费(Feign)【Dalston版】
    Spring Cloud 三:服务消费(Ribbon)【Dalston版】
    Spring Cloud二:服务消费(基础)【Dalston版】
    Spring Cloud 一:服务注册与发现(Eureka)【Dalston版】
    mybatis 单个参数
    医院设置(图论Floyd)
    Mysql学习——安装登录
    字母游戏(搜索)
    子数列连续和
  • 原文地址:https://www.cnblogs.com/xuzichao/p/15308752.html
Copyright © 2011-2022 走看看