什么是服务熔断,什么是服务降级?
什么是服务熔断?
熔断这一概念来源于电子工程中的断路器(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秒),熔断器会进入半熔断状态。所谓半熔断就是尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;如果成功率仍旧很低,则重新进入熔断关闭状态。
三个状态的转化关系如下图:
--------------------- 本文来自 茅坤宝骏氹 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/moakun/article/details/80222325?utm_source=copy
什么是服务熔断,什么是服务降级?相关推荐
- java服务降级与服务熔断区别_服务降级和服务熔断
服务熔断 在微服务架构中,微服务之间的数据交互通过远程调用完成,微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,此时如果链路上某个微服务的调用响应时间过长或者不可用,那么对微服务 ...
- 服务熔断降级什么意思?
服务降级:超过业务设置处理时间,提示服务器忙,请稍后再试 服务熔断:因为服务挂了,告诉你服务不可用,请稍后再试.当检测到服务正常后,慢慢恢复接口使用
- 服务熔断和服务降级的区别
1.服务降级:不管在什么情况下,服务降级的流程都是先调用正常的方法,再调用fallback的方法. 也就是服务器繁忙,请稍后再试,不让客户端等待并立刻返回一个友好提示. 2.服务熔断:假设服务宕机或者 ...
- SpringCloud Hystrix服务熔断和降级的理解
(个人理解,不喜勿喷)假如我要开发一个项目,但是开发的过程中遇到一个问题,我不会操作数据库(包括数据库连接,数据查询等),我只能向我的朋友请教,朋友A会使用Hibernate,朋友B会JDBC访问数据 ...
- java服务降级与服务熔断区别_【原创】谈谈服务雪崩、降级与熔断
引言 首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文.当然,考虑到目前大多微服务的文章都是口水文,烟哥争取将实现方式讲透,点清楚,让大家有所收获! OK,我要先说明 ...
- 什么是服务熔断?什么是服务降级?
转载自 漫画:什么是服务熔断 什么是服务熔断 熔断这一概念来源于电子工程中的断路器(Circuit Breaker).在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体 ...
- 漫画:什么是服务熔断
转载自 漫画:什么是服务熔断 什么是服务熔断? 熔断这一概念来源于电子工程中的断路器(Circuit Breaker).在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整 ...
- 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)
跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...
- Istio服务网格进阶⑤:Istio服务网格的流量管理之服务熔断
Istio流量管理之服务熔断 文章目录 Istio流量管理之服务熔断 1.Istio服务治理之服务熔断 2.Istio服务网格流量管理之配置服务熔断 2.1.案例描述 2.1.在Istio中部署Htt ...
最新文章
- 使用pytorch将数据集分成一份一份的
- 如何在CrossOver里应用Windows容器的存档(备份)与恢复?
- JDK7 源码学习系列——ThreadLocal
- 《C++ Primer 4th》读书笔记 第6章-语句
- 杭电oj2072,2091字符串java实现
- Linux 文件压缩解压缩
- PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果
- 电脑键盘练习_电脑新手最关心的:零基础如何快速掌握电脑打字的技巧?
- C++ 类和对象成员特性
- 【征稿通知】CCF第37届中国计算机应用大会 CCF NCCA 2022
- c语言程序设计实践教程编程题8.3,C语言程序设计教程(21世纪计算机科学与技术实践型教程)...
- Powershell About Active Directory Server
- 毕业设计 基于单片机的智能蓝牙密码锁设计与实现
- CentOS7.5 怎么修改默认SSH端口号
- 参考文献标引方式_参考文献标注及排写格式
- 计讯物联防潮产品,无惧恶劣环境
- php 检测链接,PHP检测链接是否存在的代码实例分享
- 六脉连环大总结,教你干趴Docker
- MySQL下载与安装教程(小白)
- 北京的房租到底有多高?