Hystrix流程图分析

Hystrix流程图分析

1. 什么是Hysrix

1.1. sentinel翻译成中文是哨兵的意思,哨兵的职责是守卫,提到sentinel必然会联想到另一个服务降级,服务熔断的组件,那就是Hystrix,这个英文翻译成中文也挺有意思的,那就是豪猪,两个都挺有意思哈哈,这两个东西都可以解决微服务中常见的一种现象,“服务雪崩”,当然,也不仅仅局限于此,比如sentinel就涉及到了流控热点等。怎么说了,毕竟在双十一这样的背景下,sentinel还是抗住了压力,所以说阿里那帮人挺牛逼的。所以下一篇,介绍哨兵(sentinel
1.2. 简单说说一下豪猪哥,对于豪猪哥的介绍仅仅限于一张牛逼图片,先看下图。
在这里插入图片描述
1.3 对于这个流程图的分析如下:

  • 前两步(1,2)的分析,就是图的起点
    在这里插入图片描述

这里的第一步就是构造一个HystrixCommandHystrixObservableCommand对象来表示对依赖项的请求。向构造函数传递发出请求时所需的任何参数。我们需要进行操作的任务,需要使用这两个对象中的一个进行包裹。才能享受Hystrix带来的福利,对于execut(),其本质上是封装了queue(),queue()的本质上又封装了observe(),observe()
又封装了toObservable方法,所以才有了图例上的指向性虚线。

  • 第三步的分析,图例的第三步:缓存
    在这里插入图片描述

available in cache? 翻译过来的中文意思就是,是否可以从缓存中拿响应资源的结果,如果配置开启了运行缓存,并且该命令命中了缓存,而不会继续走下一步,而是直接以Obsercvable对象的形式返回,这样就形成了第一个闭环。反之往下走下一步:是否开启熔断

  • 断路器是否打开,是否通过信号量,线程池是否已满。
    在这里插入图片描述
  • circuit-breaker open翻译过来大概的意思就是断路器是否已经打开,如果断路器是打开的,那么直接走降级这个通道,也就是图例的fallback函数的处理
  • 如果断路器是关闭的,那么就会往下走,这是到了Semaphore/Thread pool rejected,这个翻译过来就是信号量/线程池 请求队列是否被拒绝(也就是是否已经满了),如果没有占满,就继续走下一步,如果占满,也是走服务降级那一套通道。有关服务降级这一套道路,后面再说。
  • HyStrixObervableCommand.construct 或者 HystrixCommand.run()
    在这里插入图片描述

Hystrix会根据我们第一步所做的选择,而判断采用construct() 还是采用run() 的方式去请求依赖的函数,其实这些都不重要,对吧,去执行时如图就是两种情况,是否执行失败?,执行成功之后又会判断是否超时? ok,如果没有超时,那么整个最理想,最完整的闭环结束,任务也请求到了想要的资源。如果执行失败或者超时,那么就会走服务降级 这一套通道。

  • 健康检查
    在这里插入图片描述

说到健康检查,我们得再说一次熔断,为了防止雪崩,我们采用的是将整个请进行直接隔离,但是这种隔离再某种条件下会变成半隔离,半隔离运行一部分请求进来试探,在每一次成功,失败,超时,拒绝,Hystrix都会将这个信息返回给一个健康检查的计数器,计数器会进行统计,这是属于半开状态的断路器会通过这些数据来确定是否要继续熔断,或者关闭熔断,是不是很高级哈哈。

  • 服务降级
    在这里插入图片描述

当出现以上几种情况:断路器打开,请求被拒绝,执行失败,执行超时,我们该怎么办?这时候就有了服务降级这个概念,当出现某些意料之中的情况,我们可以快速调用某些逻辑,实现回退处理。至于调用的是getFallBack()还是resumeWithFallback(),取决你第一步所选择的是HyStrixObervableCommand 还是 HystrixCommand,如果你回退的逻辑出现了异常,那么恭喜你,进入了本流程图的唯一一个非闭环通道(逻辑非闭环,算了,就理解成非闭环吧),如果连这个逻辑都会出现大异常,那么可以转行了。执行成功,完成降级闭环通道。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值