SpringCloud入门实战(七)-Hystrix服务熔断
📝 学技术、更要掌握学习的方法,一起学习,让进步发生
👩🏻 作者:一只IT攻城狮 。
💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。
💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者几个字),从主线入手,由浅入深学习。
❤️ 《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。项目demo:源码地址
👉🏻 SpringCloud 入门实战系列不迷路 👈🏻:
- SpringCloud 入门实战(一)什么是SpringCloud?
- SpringCloud 入门实战(二)-SpringCloud项目搭建
- SpringCloud 入门实战(三)-Eureka注册中心集成
- SpringCloud入门 实战(四)-Zookeeper、Consul注册中心集成
- SpringCloud入门实战(五)-Ribbon负载均衡集成
- SpringCloud入门实战(六)-OpenFeign服务调用集成
- SpringCloud入门实战(七)-Hystrix入门简介
- SpringCloud入门实战(七)-Hystrix服务降级
- SpringCloud入门实战(七)-Hystrix服务熔断
- SpringCloud入门实战(七)-Hystrix服务限流
- SpringCloud入门实战(七)-Hystrix Dashboard图形化监控
文章目录
- 一、Hystrix服务熔断
- 二、断路器三个重要参数
- 1、快照时间窗
- 2、请求总数阈值
- 3、错误百分比阈值
- 三、Hystrix服务熔断配置
- 1、引入Hystrix依赖
- 2、启动类添加激活注解
- 3、yml
- 4、业务类处理
- 四、Hystrix断路器开启或者关闭的条件
Hystrix关键特性:服务降级、服务熔断、服务限流
一、Hystrix服务熔断
熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。
在Spring Cloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用达到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。熔断机制的注解是@HystrixCommand。
马丁福勒提出的服务熔断概念:马丁福勒博客中提到:

由上图可以看到服务熔断的三种状态:
- 熔断打开:请求不再进行调用当前服务,内部设置时钟一般为MTTR(平均故障处理时间)当打开时长达到所设置时钟则进入半熔断状态
- 熔断关闭:熔断关闭,不会对服务进行熔断
- 熔断半开:部分请求根据规则调用当前服务,如果请求成功且符合规则认为当前服务恢复正常,关闭熔断,恢复链路。
二、断路器三个重要参数
断路器三个重要参数:快照时间窗、请求总数阈值、错误百分比阈值
1、快照时间窗
断路器确定是否打开需要统计一些请求和错误数据,而统计的时间范围就是快照时间窗,默认为最近的10s。
2、请求总数阈值
在快照时间窗内,必须满足请求总数阈值才有资格熔断,默认为20,意味着在10s内,如果该hystrix命令的调用次数不足20次,即使所有的请求都超时或其他原因失败,断路器都不会打开。
3、错误百分比阈值
当请求总数在快照时间窗内超过了阈值,比如发生了30次调用,如果在这30次调用中,有15次发生了超时异常,也就是超过50%的错误百分比,在默认设置50%阈值的情况下,这时候就会将断路器打开。
接下来看看几个参数在Hystrix服务熔断种如何配置。
三、Hystrix服务熔断配置
1、引入Hystrix依赖
pom引入hystrix依赖(具体版本根据自己环境决定):
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><version>2.2.1.RELEASE</version></dependency><dependency><groupId>com.netflix.hystrix</groupId><artifactId>hystrix-javanica</artifactId><version>1.5.18</version></dependency>
2、启动类添加激活注解

3、yml

4、业务类处理
仍然还是在@HystrixCommand注解中进行配置,添加四个Hystrix新的属性配置。
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderHystrixController {@HystrixCommand(fallbackMethod = "circuitFallback", commandProperties = {@HystrixProperty(name = "circuitBreaker.enabled", value = "true"),//是否开启断路器@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),// 请求次数@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"),// 时间窗口期@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "60")// 失败率达到多少后跳})@GetMapping(value = "/hystrix/circuit/{id}")public String paymentCircuit(@PathVariable("id") Integer id) {if (id < 0) {throw new RuntimeException("id不能为负数");}String serial = IdUtil.simpleUUID();return "调用成功,线程池:" + Thread.currentThread().getName() + "访问paymentInfoTimeOut,serial=" + serial;}public String circuitFallback(Integer id) {return "测试断路器,线程池:" + Thread.currentThread().getName() + "访问paymentInfoTimeOut,id=" + id;}
}
意思就是在10s的窗口期内,发送十次请求,假如说有60%也就是6次都失败了,就激活断路器。
在controller中写出响应的调用,然后进行访问,如果十次中有六次及以上是负数,会发现,第11次时就算是正数仍然会进入fallback方法,因为此时进行了服务熔断。

而当他断路器激活以后,所有的请求都无法处理了,而过一段时间之后,断路器又会尝试着让少量的请求通过一下(也就是断路器进入了half-open状态),而如果请求仍然失败,断路器又会重新回到open状态,如果请求成功,断路器则会关闭。也就是链路恢复。

Tip:参数如果不写默认值是多少?其他还有哪些参数?
hystrix源码:找到 hystrix-core.jar包下的HystrixCommandProperties类,可以看到相关参数及默认值
四、Hystrix断路器开启或者关闭的条件
- 当满足一定的阀值的时候 (默认10秒内超过20个请求次数)
- 当失败率达到一定的时候 (默认10秒内超过50%的请求失败)
- 到达以上阀值,断路器将会开启
- 当开启的时候,所有请求都不会进行转发
- 一段时间之后(默认是5秒) ,这个时候断路器是半开状态,会让其中一个请求进行转发如果成功,断路器会关闭,若失败,继续开启。
相关文章:
SpringCloud入门实战(七)-Hystrix服务熔断
📝 学技术、更要掌握学习的方法,一起学习,让进步发生 👩🏻 作者:一只IT攻城狮 。 💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看&…...
百度平地起“雷”,突然爆出的QPS数据意味着什么?
鲁迅先生1923年在北师大发表了著名的演讲《娜拉走后怎样》,其中的提问与思考方式振聋发聩,直到今天也依旧有效。面对很多产业现象、技术趋势,我们也不妨多问几个“之后怎样”。 比如说,自ChatGPT爆火之后,中国各个互联…...
电子模块|外控集成 LED 光源 WS2812模块---硬件介绍和stm32驱动
电子模块|外控集成 LED 光源 WS2812模块 模块简介模块特点机械尺寸单线归零码通讯方式24bit 数据结构 stm32 驱动 模块简介 WS2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能…...
Jenkins+Python自动化测试持续集成详细教程(全网独家)
目录 一、前言 二、环境准备 三、创建Jenkins Job 四、编写Python自动化测试脚本 五、测试报告生成与展示 六、持续集成流程优化 七、实战演练 八、常见问题及解决方案 九、结论 一、前言 Jenkins是目前最为流行的CI/CD工具之一,它可以支持多种语言和技术…...
运维监控工具PIGOSS BSM扩展指标介绍
PIGOSS BSM运维监控工具,除系统自带指标外,还支持添加SNMP扩展指标、脚本扩展指标、JMX扩展指标、自定义JDBC指标等,今天本文将介绍如何添加SNMP扩展指标和脚本扩展指标。 添加SNMP扩展指标 前提:需要知道指标的oid 例子ÿ…...
一些前端问题2
1.业务场景中需要嵌入公司其他行业线的页面,这种不使用 iframe 该怎么办? 答:理论上应该让他们给你做个组件出来,但是如果实在没别的办法,就使用 iframe 吧。 2.jquery ajax 同步请求的原理是? 目前用 axios 库&…...
Moviepy模块之视频添加图片水印
文章目录 前言视频添加图片水印1.引入库2.加载视频文件3.加载水印图片4.缩放水印图片大小5.设置水印的位置5.1 相对于视频的左上角5.2 相对于视频的左下角5.3 相对于视频的右上角5.4 相对于视频的右下角5.5 相对于视频的左中位置5.6 相对于视频的正中位置5.7 相对于视频的右中位…...
day35—编程题
文章目录 1.第一题1.1题目1.2思路1.3解题 2.第二题2.1题目2.2思路2.3解题 1.第一题 1.1题目 描述: 今年公司年会的奖品特别给力,但获奖的规矩却很奇葩: 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;待所有…...
Linux安装Nginx
前言 提示:这里可以添加本文要记录的大概内容: Linux安装Nginx的详细步骤。 一、安装Nginx的相关依赖 1、安装gcc,PCRE pcre-devel,zlib,OpenSSL, 提示:安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境。 PCRE(…...
Qt 项目Mingw编译器转换为VS编译器时的错误及解决办法
错误 在mingw生成的项目,转换为VS编译器时通常会报些以下错误(C4819警告,C2001错误,C2143错误) 原因及解决方式 这一般是由于字符编码引起的,在源代码文件中包含了中文字符导致的。Qt Creator 生成的代码文…...
大学生用什么蓝牙耳机好?2023好用的蓝牙耳机推荐
近几年,蓝牙耳机市场不断扩大,逐渐取代有线耳机成为最受人欢迎的数码产品之一。作为蓝牙耳机主要受众群的大学生,用什么蓝牙耳机比较好呢?下面,我来给大家推荐几款便宜好用的蓝牙耳机,一起来看看吧。 一、…...
【好题】好题分享
1001-四舍五入_牛客竞赛语法入门班数组模拟、枚举、贪心习题 (nowcoder.com) 题目描述 四舍五入是个好东西。比如你只考了45分,四舍五入后你是50分再四舍五入你就是满分啦!qdgg刚考完拓扑。成绩十分不理想。但老师觉得他每天都很认真的听课很不容易。于是…...
three.js 怎么在自动缩放的时候添加动画效果
要在自动缩放的时候添加动画效果可以使用three.js中的Tween.js库。Tween.js提供了一种简单的方式来创建和管理动画,它可以让开发者通过简单的API来控制对象的属性变化,从而实现动画效果。 以下是一个使用Tween.js实现模型缩放动画的示例: 加…...
考虑梯水电站群的水火电节能调度(Python代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
CF914G Sum the Fibonacci
CF914G Sum the Fibonacci 洛谷Sum the Fibonacci 题目大意 给你一个长度为 n n n的数组 s s s,定义五元组 ( a , b , c , d , e ) (a,b,c,d,e) (a,b,c,d,e)是合法的当且仅当: 1 ≤ a , b , c , d , e ≤ n 1\leq a,b,c,d,e\leq n 1≤a,b,c,d,e≤n ( …...
Shell基础入门实战
写在前面 好久没在项目内做自动化了,主要是现阶段在项目内做自动化收益不大,最近开发做batch run的正好缺人,我看了一下代码,就是通过代码读取jar包和远程服务器连接,然后通过shell脚本,向数据库插入数据&a…...
如何进行微服务的技术选型?
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 作者:陈于吉吉|慕课网讲师 随着这几年微服务的火爆,在平时的工作或者技术交流中,我们总能听到哪家公…...
Vue电商项目--应用开发详解
vue-cli脚手架初始化项目 首先,页面上新建一个文件夹。然后打开命令端口 vue create app 选择Default ([Vue 2] babel, eslint) 然后把项目拖拽到vscode中。项目目录看一下 脚手架项目的目录 node_modules:放置项目依赖的地方 public:一般放置一些共用的静态资源&a…...
Lvs负载均衡
系列文章目录 文章目录 系列文章目录一、集群1.集群2. 二、LVS1.LVS简介2.负载均衡的结构3.Lvs调度算法 总结 一、集群 1.集群 集群群集 cluster由多台主机构成的一个整体,提供一个放问入口(IP或域名),集群中的多台主机都干一件事提供一样的服务 负载均…...
JAVAWeb08-手动实现 Tomcat 底层机制+ 自己设计 Servlet
1. 前言 先看一个小案例, 引出对 Tomcat 底层实现思考 1.1 完成小案例 ● 快速给小伙伴完成这个小案例 0. 我们准备使用 Maven 来创建一个 WEB 项目, 老师先简单给小伙伴介绍一下 Maven 是什么, 更加详细的使用,我们还会细讲, 现在先使用一把 先创建…...
3步突破AI编程助手限制:免费解锁Cursor Pro高级功能全指南
3步突破AI编程助手限制:免费解锁Cursor Pro高级功能全指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your…...
在QT中将多个项目(同代码不同ui和资源文件)合并
Linux下的qt环境 我现在有三个项目,代码一模一样,只有UI文件和资源文件不同现在想要合并代码 后期好上传在git 仅需要一个分支 更好管理将随行 康养 采图三个项目代码合并 思路是这样的 将每个项目都分类打包区分开我是在康养这个项目的基础上合…...
QT图形界面开发集成Phi-4-mini-reasoning:打造智能桌面应用
QT图形界面开发集成Phi-4-mini-reasoning:打造智能桌面应用 1. 智能桌面应用的新可能 传统桌面应用开发正在经历一场智能化变革。想象一下,你的QT应用不仅能响应用户操作,还能理解用户意图、自动生成内容、提供智能建议——这就是集成Phi-4…...
如何高效突破内容付费墙:Bypass Paywalls Clean浏览器扩展深度技术解析
如何高效突破内容付费墙:Bypass Paywalls Clean浏览器扩展深度技术解析 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字内容访问受限的时代,Bypass Payw…...
利用快马平台快速搭建comfyui工作流原型,十分钟验证ai绘画创意
最近在尝试用ComfyUI搭建AI绘画工作流时,发现从零开始调试节点连接特别耗时。后来发现InsCode(快马)平台的AI生成功能能快速搭建原型,把验证周期从几小时缩短到十分钟,分享下具体实践: 为什么需要快速原型验证 传统ComfyUI工作流搭…...
[特殊字符] GLM-4V-9B企业级方案:客户上传截图问题自动诊断
GLM-4V-9B企业级方案:客户上传截图问题自动诊断 1. 引言 想象一下这个场景:你是一家SaaS公司的技术支持工程师,每天的工作就是处理海量的客户工单。其中,有相当一部分问题描述是模糊的,比如“我的页面显示不正常”、…...
Java协议解析性能瓶颈诊断清单(附JFR火焰图+ByteBuf内存泄漏定位实录)
第一章:Java协议解析性能瓶颈诊断清单(附JFR火焰图ByteBuf内存泄漏定位实录)协议解析层是Netty等高性能网络框架的核心路径,其性能劣化往往表现为CPU尖刺、GC频发或连接延迟陡增。以下为一线实战验证的诊断清单,覆盖JF…...
颠覆式剧本创作:Dramatron如何用AI重构故事生成流程
颠覆式剧本创作:Dramatron如何用AI重构故事生成流程 【免费下载链接】dramatron Dramatron uses large language models to generate coherent scripts and screenplays. 项目地址: https://gitcode.com/gh_mirrors/dr/dramatron 痛点直击:剧本创…...
从《魔兽世界》到你的项目:拆解一个高可用的Unity Buff系统架构设计
从《魔兽世界》到你的项目:拆解一个高可用的Unity Buff系统架构设计 在MMO游戏的黄金时代,《魔兽世界》的Buff系统曾让无数玩家着迷——从圣骑士的光环到法师的变形术,每个效果背后都隐藏着精密的系统设计。如今,这些经过千万级用…...
xi-mac性能优化指南:7个技巧让你的编辑器运行如飞
xi-mac性能优化指南:7个技巧让你的编辑器运行如飞 【免费下载链接】xi-mac The xi-editor mac frontend. 项目地址: https://gitcode.com/gh_mirrors/xim/xi-mac xi-mac是一款基于Rust后端和Cocoa前端的现代文本编辑器,以其卓越的性能表现而闻名。…...
