聊聊Hystrix

Posted 周杰伦本人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊聊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的源码的内容,深入分析一下它的具体功能的实现逻辑。

以上是关于聊聊Hystrix的主要内容,如果未能解决你的问题,请参考以下文章

聊聊Hystrix的源码

聊聊Hystrix 命令执行流程

Hystrix 简单聊聊断路器/熔断器

8-2 Hystrix入门

Hystrix和Sentinel对比,如何选择

SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置服务降级HystrixDashboard服务监控Turbine聚合监控)