聊聊Hystrix

举报
周杰伦本人 发表于 2022/09/29 14:41:41 2022/09/29
【摘要】 聊聊HystrixHystrix也是SpringCloud框架中的重要组件,它的功能有跳闸机制,也就是当服务的错误率超过一定的阈值的时候,Hystrix在一段时间内停止请求这个服务,它还有资源隔离的功能,也就是每个方法都可以使用一个小型的线程池,线程池满了话会立即拒绝请求,它还有回退机制:当请求失败的时候会进入回退逻辑,我们可以自定义回退方法,断路器打开一段时候后,Hystrix会自动进入...

聊聊Hystrix

Hystrix也是SpringCloud框架中的重要组件,它的功能有跳闸机制,也就是当服务的错误率超过一定的阈值的时候,Hystrix在一段时间内停止请求这个服务,它还有资源隔离的功能,也就是每个方法都可以使用一个小型的线程池,线程池满了话会立即拒绝请求,它还有回退机制:当请求失败的时候会进入回退逻辑,我们可以自定义回退方法,断路器打开一段时候后,Hystrix会自动进入半开状态

Hytrix的使用

如果使用Hystrix,我们需要引入相关的jar包,然后使用注解@EnableCircuitBreaker开启Hystrix功能

然后在方法上添加@HystrixCommand注解进行熔断配置,我们可以通过fallbackMethod来指定具体的方法名,当服务超时熔断的时候执行这个方法,做兜底处理。

我们看一下Hystrix的工作流程,当调用出现错误的时候,看是否达到最小请求数,如果达到了看错误数量是否达到了阈值,如果也达到了就进行跳闸,也就是不再调用远程服务,同时有一个活动窗口时间,如果活动窗口时间内发送远程请求成功就进行恢复

舱壁模式

Hystrix中有个舱壁模式的概念,就是被@HystrixCommand修饰的方法都有单独的线程池,做到方法中的线程池的隔离,可以通过threadPoolKey属性来配置

我们可以配置它的最小请求数、错误数量的阈值、活动窗口时间等等

同时Hystrix还可以被我们监控,看出Hystrix熔断是否开启,有对应的仪表盘的包来引入开启监控

我们可以通过jps命令查看java进程,然后使用jstack命令查看具体进程的线程,从而定位到这个服务占用了多少线程

总结

这篇文章主要介绍了Hystrix的一些功能点,它可以进行熔断处理,还有舱壁模式,让每个方法独立线程池,还介绍了Hystrix的工作流程,使用微服务开发项目,必然会涉及到微服务的熔断,而Hystrix又是我们项目中的首选的熔断处理技术,下篇文章中我们将介绍Hystrix的源码的内容,深入分析一下它的具体功能的实现逻辑。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。