hystrix简介

1、概述

hystrix的功能如下所示:

  • 资源隔离(线程池隔离和信号量隔离)机制:限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其它服务调用。
  • 限流机制:限流机制主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源。
  • 熔断机制:当失败率达到阀值自动触发熔断(如因网络故障、超时造成的失败率真高)。熔断的含义是直接忽略该服务,或返回兜底数据;熔断器触发的快速失败会自动进行恢复。
  • 降级机制:超时降级、资源不足时(线程或信号量)降级 、运行异常降级等,降级后可以配合降级接口返回托底数据。
  • 缓存支持:提供了请求缓存、请求合并实现
  • 监控报警:通过近实时的统计/监控/报警功能,来提高故障发现的速度
  • 热部署:通过近实时的属性和配置热修改功能,来提高故障处理和恢复的速度

1.1 名词解释

一直以来,熔断和降级这两个概念都非常模糊,无法区分,在此说一下自己的理解:

熔断 VS 降级

熔断:当依赖的服务一直返回调用错误(错误、超时)时,对依赖的服务进行“降级”。降级的手段包括快速返回错误、返回兜底数据等。

降级:降级这个概念很有意思,上面说到熔断的时候,也提到了降级。降级的含义是不再调用被降级的服务,而是快速返回错误或兜底数据。只不过我们一般说的降级,其实指的是引起降级的原因:当核心业务压力非常大的时候,可以把非核心业务进行降级,节省资源,提升核心业务的稳定性。

总结一下:

  • 熔断:当发现依赖的服务调用错误达到阈值时,对依赖的服务进行降级。
  • 降级:当核心业务压力大时,对非核心业务进行降级。在熔断的时候,降级表达的是处理的手段;在此表达的是降级的原因。

2、原理

2.1 资源隔离

在这里插入图片描述
如上图所示,网关服务在同一个线程中调用3个依赖的服务,当名单服务出现问题时(超时),会造成网关服务的线程等待。当风控网关的等待线程达到系统上线后,风控网关将不能再提供服务。

资源隔离目的:防止由于依赖的单个服务出现问题,造成整个服务不可用。
在这里插入图片描述

hystrix资源隔离机制分为线程池隔离、信号量隔离两种方式,两种方式的区别为:

线程池隔离信号量隔离
机制依赖的服务通过线程池的形式异步调用,不会造成主进程的阻塞依赖的服务通过信号量的形式同步调用
适用场景rpc服务等比较耗时的服务内存调用等低延时的服务(感觉有点鸡肋呀,都低延迟了还要你干啥?)
资源消耗排队、调度、上下文切换

2.2 限流机制

限流机制是对服务本身进行保护的一种手段,当访问服务的qps达到配置的额度时,直接拒绝请求。

2.3 熔断机制

熔断,来源于电子学,当电流过大时起到对电路的保护作用。
熔断机制,同样是对服务本身的一种保护机制,当发现依赖的服务在一段时间内持续出现错误,则会打开熔断。打开熔断机制后,后续的请求不会再真正访问依赖的服务,而是快速返回错误或缓存的数据。从而避免程序不断的尝试执行可能失败的操作,降低资源消耗。
熔断一段时间后,会尝试关闭熔断,这个状态称为“半开”,在该状态下会尝试进行请求,如果成功,则关闭熔断,恢复正常。
在这里插入图片描述

2.4 降级机制

此处的降级,指的是熔断后的处理机制:fallback。
fallback的方式包括:

  • 返回空值。
  • 返回默认值。
  • 重新发起请求:比如访问缓存。

2.5 缓存支持

hystrix支持将请求的结果缓存起来,当请求的参数与之前一样时,直接从读取缓存的内容返回,不需要真正调用下游的服务。从而提升服务的调用效率。

3、使用

4、参考

sun_qiangwei 大神的hystrix系列文章写的非常棒,前因后果、原理、使用面面俱到。
一、Hystrix 简介
二、Hystrix特性之资源隔离
三、Hystrix特性之限流
四、Hystrix特性之熔断
五、Hystrix特性之降级

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值