千家信息网

什么是Hystrix

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关什么是Hystrix,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Hystrix协调分布式系统中各个服务高可用的框架,Sp
千家信息网最后更新 2025年12月02日什么是Hystrix

这篇文章将为大家详细讲解有关什么是Hystrix,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Hystrix协调分布式系统中各个服务高可用的框架,SpringCloud体系重要的一员。Hystrix主要解决了服务雪崩问题、服务监控问题等。

Hystrix功能介绍

资源隔离与限流

作用

  • 主要在于预防依赖服务崩溃影响到自己服务资源被耗光,使用隔离的方式限制调用依赖服务所能使用的最大线程资源。如果一个服务崩溃,不控制好资源隔离的话,会引发服务雪崩,众多上游服务集体崩溃。

  • 另外在并发量很大的情况下,也可以降低对依赖服务请求的流量,避免依赖服务过度负载。

原理

  • Hystrix将对外部服务的调用和一系列处理封装为一个Commond对象,具体分为HystrixCommand(直接调用命令),HystrixObservableCommand(观察者订阅命令),后者可以注册回调事件。两者都可以以异步或同步的方式调用(异步返回Future,后续可以调用get阻塞获取结果)。

  • Commond对象对资源隔离进行隔离有两种方式,一种是使用线程池(常用),第二种是使用信号量。两者都是对Commond被调用的线程并发数量进行限制,区别在于信号量只是对command被调用并发许可的一个线程,不能记录超时信息等等。

配置项

  • 选择Commond资源隔离的策略,线程池(常用)或信号量

  • 指定command名称、组。名称默认为类名(一个command通常对应一个依赖服务的接口调用),group下的所有command默认情况下共用一个线程池或用一个信号量隔离(group一般对应一个依赖服务)。

  • 指定command线程池,HystrixThreadPool的key默认为组名称,也可以手动指定使用的HystrixThreadPool。

  • 指定线程池核心线程数大小,默认为10。

  • 指定线程池队列长度,默认-1 无界队列,设置值之后超过则拒绝请求。

  • 指定线程池拒绝阀值,默认5,超过就拒绝请求。

  • 信号量隔离下可设置最大并发访问量,默认10。

requestCache-请求缓存

原理

在一个web调用主线程中,为该主线程调用服务的command建立缓存,使得调用依赖服务相同参数的情况下直接从内存中获取结果,由于本人认为其作用不是很大,所以就不多介绍了,主要是在拦截器中初始化HytrixRequestContext(这个缓存数据目测应该是在线程本地变量里面),然后Command中实现getCacheKey方法返回cache的key,当key一样时,直接尝试获取之前调用后返回相同key的结果。

fallback-服务降级

原理

通过Command实现getFallBack方法(HystrixCommand)或resumeWithFallback方法(HystrixObservableCommand),实现降级逻辑,本地返回降级之后的结果。

降级的条件

  • 线程池或信号量拒绝

  • 调用超时

  • 执行报错

  • 断路器被开启

降级的通常逻辑

  • 取本地缓存中较老的数据

  • 返回默认值

注:降级逻辑可以设置参数限制并发线程数量(基于信号量)

circuit breaker-断路器

原理

打开条件
  • 调用超时达到一定比例

  • 执行报错达到一定比例

  • 线程池或信号量拒绝达到一定比例

半开状态

一定时间之后会切换到半开状态,让1个请求通过,看是否能够正常返回

开启状态

如果半开状态允许通过的请求成功了,就关闭断路器

相关可配置项

  • 是否打开断路器(默认打开)

  • 断路器时间滚动窗中最小的请求数(默认20)

  • 多少异常(包括超时、报错、拒绝)比例(默认50%)打开断路器

  • 多长时间进入半开状态(默认5000毫秒)

  • 是否强制打开断路器

  • 是否强制关闭断路器

  • 超时时长配置(默认1000毫秒)

  • 是否打开超时机制(默认打开)

关于什么是Hystrix就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

线程 服务 信号 信号量 隔离 断路器 资源 状态 原理 比例 结果 缓存 名称 情况 方式 方法 时间 逻辑 配置 限制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浙江成功软件开发有限公司( 典型的关系数据库系统的关键技术 佳华科技工业互联网 网络安全大赛的标语 搭建自己的服务器梯子 网络安全专项工作会议 网络安全知识的普及 无锡机电网络技术质量保证 网络安全技术有什么 某网站的数据库泄露 通信网络安全法第七十四条 如何认识到当今网络安全的情况 求生之路一进服务器就断开 数据库连接表空间不对 成都流云网络技术有限公司 oracle数据库和实例 服务器处理器计划 阿里数据库开发手册 计算机软件开发建设项目 做一个官网买哪种服务器 腾讯的软件开发好吗 完善网络安全惩戒制度 数据库中密码字符串乱码 吴江小学生网络安全 互联网科技需要哪些法律保障 宁夏国家信息网络安全中心招聘 浙江米尚网络技术 网红 网络游戏的数据库设计 c 通用数据库连接类 辽阳运和软件开发有限公司招聘
0