当前位置:网站首页>漫画:什么是服务熔断?
漫画:什么是服务熔断?
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—————
边栏推荐
- Arduino控制微小的六足3D打印机器人
- Data communication foundation - routing communication between VLANs
- 18.[STM32]读取DS18B20温度传感器的ROM并实现多点测量温度
- Cs231n notes (top) - applicable to 0 Foundation
- Vulnhub-Moneybox
- Cs231n notes (medium) -- applicable to 0 Foundation
- Five common negotiation strategies of consulting companies and how to safeguard their own interests
- Explanation report of the explosion
- OceanBase社区版之OBD方式部署方式本地安装
- 记录一下树莓派搭建环境中遇到的坑。。。
猜你喜欢

一文搞定vscode编写go程序

Example project: simple hexapod Walker

Background system sending verification code function
![17. [stm32] use only three wires to drive LCD1602 LCD](/img/c6/b56c54da2553a451b526179f8b5867.png)
17. [stm32] use only three wires to drive LCD1602 LCD
![16.[STM32]从原理开始带你了解DS18B20温度传感器-四位数码管显示温度](/img/9f/c91904b6b1d3a1e85c0b50e43972e5.jpg)
16.[STM32]从原理开始带你了解DS18B20温度传感器-四位数码管显示温度

Li Kou today's question -729 My schedule I

Data communication foundation - routing communication between VLANs

The visual experience has been comprehensively upgraded, and Howell group and Intel Evo 3.0 have jointly accelerated the reform of the PC industry

Convert obj set to entity set

Codasip adds verify safe startup function to risc-v processor series
随机推荐
CISP-PTE之PHP伪协议总结
Cs231n notes (top) - applicable to 0 Foundation
Use of RLOCK lock
Linear DP (basic questions have been updated)
20. [stm32] realize the function of intelligent garbage can by using ultrasonic module and steering gear
I'm fat, huh
记录一下树莓派搭建环境中遇到的坑。。。
vulnhub-Root_ this_ box
lv_ font_ Conv offline conversion
Data communication foundation - dynamic routing protocol rip
19.[STM32]HC_SR04超声波测距_定时器方式(OLED显示)
Quick completion guide for manipulator (IX): forward kinematics analysis
Fundamentals of data communication - Principles of IP routing
Record the pits encountered in the raspberry pie construction environment...
Appium自动化测试基础 — APPium基础操作API(二)
【簡記】解决IDE golang 代碼飄紅報錯
写单元测试的时候犯的错
ES6深入—ES6 Generator 函数
Codasip adds verify safe startup function to risc-v processor series
sql中set标签的使用