当前位置:网站首页>漫画:什么是服务熔断?
漫画:什么是服务熔断?
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—————
边栏推荐
- 单商户 V4.4,初心未变,实力依旧!
- 后台系统发送验证码功能
- 抽象类中子类与父类
- Lesson 4 knowledge summary
- Relationship between objects and classes
- Use of RLOCK lock
- Data communication foundation smart_ Link_&_ Monitor_ Link
- Five common negotiation strategies of consulting companies and how to safeguard their own interests
- Noi / 1.3 01: a+b problem
- Reproduce ThinkPHP 2 X Arbitrary Code Execution Vulnerability
猜你喜欢
Codasip adds verify safe startup function to risc-v processor series
vant tabbar遮挡内容的解决方式
19.[STM32]HC_ SR04 ultrasonic ranging_ Timer mode (OLED display)
18.[stm32] read the ROM of DS18B20 temperature sensor and realize multi-point temperature measurement
Defining strict standards, Intel Evo 3.0 is accelerating the upgrading of the PC industry
Data communication foundation OSPF Foundation
Clock switching with multiple relationship
【简记】解决IDE golang 代码飘红报错
16.[STM32]从原理开始带你了解DS18B20温度传感器-四位数码管显示温度
Analytic hierarchy process of mathematical modeling (including Matlab code)
随机推荐
Data communication foundation - Ethernet port mirroring and link aggregation
助力数字经济发展,夯实数字人才底座—数字人才大赛在昆成功举办
obj集合转为实体集合
Noi / 1.5 37: mercenaries
Data communication foundation - routing communication between VLANs
Vulnhub-Moneybox
OceanBase社区版之OBD方式部署方式本地安装
Reproduce ThinkPHP 2 X Arbitrary Code Execution Vulnerability
视觉体验全面升级,豪威集团与英特尔Evo 3.0共同加速PC产业变革
Arduino控制微小的六足3D打印机器人
Xiao Sha's arithmetic problem solving Report
Replknet: it's not that large convolution is bad, but that convolution is not large enough. 31x31 convolution. Let's have a look at | CVPR 2022
示例项目:简单的六足步行者
MySQL overview
verilog实现计算最大公约数和最小公倍数
抽象类中子类与父类
基于OpenHarmony的智能金属探测器
vant tabbar遮挡内容的解决方式
定义严苛标准,英特尔Evo 3.0正在加速PC产业升级
How to introduce devsecops into enterprises?