当前位置:网站首页>漫画:什么是服务熔断?
漫画:什么是服务熔断?
2022-07-05 15:34:00 【小灰】
小灰的答题策略,是遇到难题不断思考、不断思考,一直到考试结束为止。可以用下面这张图流程图来表示:
大黄的答题策略,是遇到难题先尝试几次思考,如果尝试一定次数不成功,则果断放弃,继续回答别的题目。等别的题目回答完毕,再回过头来重新思考那道难题。可以用下面这张图流程图来表示:
什么是服务熔断?
熔断这一概念来源于电子工程中的断路器(Circuit Breaker)。在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。
这种牺牲局部,保全整体的措施就叫做熔断。
如果不采取熔断措施,我们的系统会怎样呢?我们来看一个栗子。
当前系统中有A,B,C三个服务,服务A是上游,服务B是中游,服务C是下游。它们的调用链如下:
一旦下游服务C因某些原因变得不可用,积压了大量请求,服务B的请求线程也随之阻塞。线程资源逐渐耗尽,使得服务B也变得不可用。紧接着,服务A也变为不可用,整个调用链路被拖垮。
像这种调用链路的连锁故障,叫做雪崩。
正所谓刮骨疗毒,壮士断腕。在这种时候,就需要我们的熔断机制来挽救整个系统。熔断机制的大体流程和刚才所讲的考试策略如出一辙:
这里需要解释两点:
1.开启熔断
在固定时间窗口内,接口调用超时比率达到一个阈值,会开启熔断。进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的默认方法,达到服务降级的效果。
2.熔断回复
熔断不可能是永久的。当经过了规定时间之后,服务将从熔断状态回复过来,再次接受调用方的远程调用。
服务熔断的实际应用
Spring Cloud Hystrix是基于Netflix的开源框架Hystrix实现,该框架实现了服务熔断、线程隔离等一系列服务保护功能。
对于熔断机制的实现,Hystrix设计了三种状态:
1.熔断关闭状态(Closed)
服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。
2.熔断开启状态(Open)
在固定时间窗口内(Hystrix默认是10秒),接口调用出错比率达到一个阈值(Hystrix默认为50%),会进入熔断开启状态。进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的fallback方法。
3.半熔断状态(Half-Open)
在进入熔断开启状态一段时间之后(Hystrix默认是5秒),熔断器会进入半熔断状态。所谓半熔断就是尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;如果成功率仍旧很低,则重新进入熔断关闭状态。
三个状态的转化关系如下图:
—————END—————
边栏推荐
- Six common transaction solutions, you sing, I come on stage (no best, only better)
- 16. [stm32] starting from the principle, I will show you the DS18B20 temperature sensor - four digit digital tube displays the temperature
- vant tabbar遮挡内容的解决方式
- MySQL overview
- [brief notes] solve the problem of IDE golang code red and error reporting
- Defining strict standards, Intel Evo 3.0 is accelerating the upgrading of the PC industry
- Background system sending verification code function
- 超分辨率技术在实时音视频领域的研究与实践
- Obj resolves to a set
- 力扣今日题-729. 我的日程安排表 I
猜你喜欢
Appium自动化测试基础 — APPium基础操作API(一)
verilog实现计算最大公约数和最小公倍数
16.[STM32]从原理开始带你了解DS18B20温度传感器-四位数码管显示温度
视觉体验全面升级,豪威集团与英特尔Evo 3.0共同加速PC产业变革
Fundamentals of data communication - Principles of IP routing
效果编辑器新版上线!3D渲染、加标注、设置动画,这次一个编辑器就够了
Six common transaction solutions, you sing, I come on stage (no best, only better)
MySQL overview
Information collection of penetration test
后台系统发送验证码功能
随机推荐
助力数字经济发展,夯实数字人才底座—数字人才大赛在昆成功举办
18.[STM32]读取DS18B20温度传感器的ROM并实现多点测量温度
CODING DevSecOps 助力金融企业跑出数字加速度
obj解析为集合
OceanBase社区版之OBD方式部署方式本地安装
Subclasses and superclasses of abstract classes
Data communication foundation ACL access control list
OSI seven layer model
一文带你吃透js处理树状结构数据的增删改查
20. [stm32] realize the function of intelligent garbage can by using ultrasonic module and steering gear
Interval DP (gravel consolidation)
写单元测试的时候犯的错
程序员如何提升自己的格局?
list去重并统计个数
一键安装脚本实现快速部署GrayLog Server 4.2.10单机版
vulnhub-Root_ this_ box
Background system sending verification code function
国泰君安网上开户安全吗
Convert obj set to entity set
研发效能度量指标构成及效能度量方法论