【微服务架构】——hystrix基础知识

news2024/11/13 11:37:17

文章目录

  • 一、Hystrix是什么?
  • 二、为什么要使用Hystrix?
  • 三、在哪用?什么时候用?
  • 四、Hystrix是如何实现自动服务降级和服务熔断的呢?

一、Hystrix是什么?

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,主要用于隔离访问远程系统、服务和第三方库的点,防止级联故障和提高容错能力。

二、为什么要使用Hystrix?

在微服务架构中,服务之间的调用变得越来越复杂,为了提高系统的可靠性和稳定性,我们需要对服务之间的调用进行监控和控制。Hystrix可以帮助我们实现这个目标,它可以帮助我们在服务调用出现异常时,快速地切换到备用方案,从而保证整个系统的稳定运行。

例如,当所有服务都是健康时,我们的请求流程是这样的:
在这里插入图片描述
当后端系统任何一个发生潜在问题时,会阻断整个用户请求。

在这里插入图片描述
当流量很大时,单个后端依赖关系变得潜在,可能会导致所有服务器上的所有资源在几秒钟内变得饱和。应用程序中通过网络访问或访问客户端库的每个可能导致网络请求的点都是潜在故障的根源,比故障更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,从而备份队列、线程和其他系统资源,从而导致整个系统出现更多级联故障。
在这里插入图片描述

而当我们使用 Hystrix 包装每个底层依赖项时,如上图所示的架构将更改为类似于下图,每个依赖项都是相互隔离的,在发生延迟时它可以让饱和的资源受到限制,并且包含在回退逻辑中,该逻辑决定当依赖项中发生任何类型的故障时要做出什么响应:
在这里插入图片描述

三、在哪用?什么时候用?

在微服务架构中,我们可以用hystrix来实现服务间的熔断、降级、限流等功能。当我们需要确保分布式系统中的服务调用具有高可用性和容错能力时,可以使用Hystrix。例如,当某个服务的响应时间过长或者出现故障时,Hystrix可以帮助我们快速地切换到备用方案,从而保证整个系统的稳定运行。

四、Hystrix是如何实现自动服务降级和服务熔断的呢?

  1. 将所有对外部系统的调用包装在 HystrixCommand 或 HystrixObservableCommand 对象中,该对象通常在单独的线程中执行。
  2. 超时调用时间超过定义的阈值,有一个默认值 但也可以通过“属性”自定义设置这些超时,以便它们略高于每个依赖项测量的第 99.5 个百分点的性能。当某个服务的失败率达到一定阈值时,Hystrix会自动切换到备用方案,从而防止级联故障,提高系统的可用性。
  3. 为每个依赖项维护一个小型线程池(或信号量),以防止一个服务的失败影响到其他服务。如果它已满,发往该依赖项的请求将立即被拒绝,而不是排队。
  4. 测量每次请求的成功、失败(客户端抛出的异常)、超时和线程拒绝。
  5. 如果服务的错误百分比超过阈值,则手动或自动触发断路器以在一段时间内停止对特定服务的所有请求。
  6. 当请求失败、被拒绝、超时或短路时执行回退逻辑。
  7. 近乎实时地监控指标和配置更改。Hystrix提供了强大的监控和配置功能,包括服务健康状况的Metrics等。

以上就是关于Hystrix相关的基础知识,下一篇我们在讲解具体的源码分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1322098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧安防视频监控可视化平台EasyCVR调用接口返回“Unauthorized”是什么原因?

智慧安防视频监控可视化平台EasyCVR采用了开放式的网络结构,平台能在局域网、公网、专网等复杂的网络环境中,将场景中分散的海量网络监控设备进行统一接入与汇聚管理,并能提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云…

在 Windows PC 上轻松下载并安装 FFmpeg

FFmpeg 是一种开源媒体工具,可用于将任何视频格式转换为您需要的格式。该工具只是命令行,因此它没有图形、可点击的界面。如果您习惯使用常规图形 Windows 程序,安装 FFmpeg 一开始可能看起来很复杂,但不用担心,它;很简…

xhr请求是什么?

1、什么是xhr请求? xhr,全称为XMLHttpRequest,用于与服务器交互数据,是ajax功能实现所依赖的对象,jquery中的ajax就是对 xhr的封装。 XHR(XMLHttpRequest)请求是一种在浏览器中发送HTTP请求的…

互式流程图|BPMN JointJS+ JavaScript 3.7.3 Crack

JointJS 是 JavaScript 图表库为卓越的 UI 提供支持 使用经过验证的库快速、自信地构建高级视觉和无代码/低代码应用程序。 赋能全球行业领导者 使用 JointJS 构建的图表 一个库,‍无限 UI 选项 直接在您的应用程序中享受交互式流程图、BPMN 和其他图表工作室。利用…

matplotlib科研绘图之折线图、柱状图、散点图、误差棒

matplotlib折线图例子1 # -*- coding: utf-8 -*- # Time : 2023/12/19 10:56 # Author : 长沙有肥鱼 # FileName: 21.py # Software: PyCharm # Blog : https://blog.csdn.net/weixin_53660567?spm1010.2135.3001.5343# 导入Matplotlib库 import matplotlib import ma…

【Vue】el-date-picker日期范围组件(本周、本月、上周)

系列文章 【Vue】vue增加导航标签 本文链接:https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接:https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue,在Windows IIS平台…

proxysql读写分离组件部署

一、前言 在mysql一主两从架构的前提下,引入读写分离组件,可以极大的提高mysql性能,proxysql可以在高可用mysql架构发生主从故障时,进行自动的主从读写节点切换,即当mysql其他从节点当选新的主节点时,proxy…

使用yolov8和moviepy自动截取视频中人出现的片段

前言 这么长时间没写博客,其实主要是忙于一个行为实时检测大型项目的开发,最近闲下来就写这篇当年末总结了。这篇文章的起因还是某个业务需求,要求分析视频中有人的部分,没人的部分需要去掉,同时行为检测的数据集如果…

沉浸式数字文旅黑科技!用AI数字人升级景区体验

这年头文旅界也太卷了! 在国家文化数字化战略的深入实施下,各地方文旅纷纷打造新型消费场景,以数字文旅提升消费产品的互动性和社交性,增强用户沉浸式体验。 其中,数字人乘着AI大语言模型的东风,被文旅品牌…

SAP 特殊采购类80简介

前面我们已经测试特殊采购类40、70,我们今天测试一下特殊采购类80。 特殊采购类80:在替代工厂生产,在成品层维护特殊采购类,需求和收货在计划工厂完成,成品生产和组件采购在生产工厂完成。 80采购类也是我们在SAP系统中实现跨工厂需求传递的一种方式。它具有传递方式简单、…

破局:国内母婴市场“红利减退”,母婴店如何拓客引流裂变?

破局:国内母婴市场“红利减退”,母婴店如何拓客引流裂变? 背景:中国母婴市场近年来人口出生率一直在恒定范围值,国家也在鼓励优生、多生政策,并且随着互联网的高速发展,人均可支配收入也在增加&…

XC6617 双路输出电容式触摸感应加PWM调光芯片 适用于触摸台灯、触摸调光LED灯

XC6617是一款单路输入双路输出电容式触摸感应PWM调光IC XC6617可在有介质(如玻璃、亚克力、塑料、陶瓷等)隔离保护的情况下实现触摸功能,安全性高。XC6617内置稳压源、上电复位/低压复位及环境自适应算法等多种措施,抗干扰性能优秀。 应用范围:…

程序员应用开发的神器——低代码

一、火热的低代码 低代码的热潮至今未消停,从阿里钉钉跨平台协作方式,再到飞书上的审批流程,以及目前我们接触到的表单审批、投票的模板,这些都是关于低代码的实现方式。 据Gartner最新报告显示,到2023年,超…

微信小程序隐藏返回首页按钮

当用户打开的小程序最底层页面是非首页时,默认展示“返回首页”按钮,开发者可在页面onLoad或者onShow中调用 hideHomeButton 进行隐藏 onLoad(options) {wx.hideHomeButton() }, 官方文档 链接:wx.hideHomeButton(Object object) | 微信开放…

flowable工作流学习笔记

不同版本使用方式不一样,案例使用两个版本6.5.0及6.6.0,学习中6.5.0 版本是独立框架(服务单独部署)使用的, 6.6.0与springboot集成, 6.5.0版本如下: 下载flowable: https://github.com/flowa…

【ranger】CDP环境 更新 ranger 权限策略会发生低概率丢失权限策略的解决方法

一、问题描述: 我们的 kafka 服务在更新(添加) ranger 权限时,会有极低的概率导致 MM2 同步服务报错,报错内容 Not Authorized。但是查看 ranger 权限是赋予的,并且很早配置的权限策略也会报错。 相关组件…

有损编码——Wyner-Ziv理论

有损编码是一种在信息传输和存储中常见的编码技术,其主要目标是通过牺牲一定的信息质量,以换取更高的压缩效率。相比于无损编码,有损编码可以在保证一定程度的信息还原的前提下,使用更少的比特数来表示信息。Wyner-Ziv理论是一种重…

类的6个默认成员函数(上)

<center>Efforts of today and tomorrow.<center>今天的努力&#xff0c;明天的实力。开启本文&#xff01; 引入&#xff1a;  如果一个类中森么都没有&#xff0c;那么这个类就是空类&#xff0c;然而空类中真的是什么都没有吗&#xff1f; 其实不然&#xff0c…

第五节 操作符

第五节 操作符 目录 一&#xff0e; 操作符分类二&#xff0e; 算术操作符三&#xff0e; 移位操作符1. 二进制位2. 左移操作符3. 右移操作符 四&#xff0e; 位操作符1. 按位与2. 按位或3. 按位异或 五&#xff0e; 赋值操作符六&#xff0e; 单目操作符1. 概述2. sizeof是操作…

【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC JDBC Spring配置类

目录 1 流程分析2 整合配置2.1 步骤1&#xff1a;创建Maven的web项目2.2 步骤2:添加依赖2.3 步骤3:创建项目包结构2.4 步骤4:创建SpringConfig配置类2.5 步骤5:创建JdbcConfig配置类2.6 步骤6:创建MybatisConfig配置类2.7 步骤7:创建jdbc.properties2.8 步骤8:创建SpringMVC配置…