什么是服务熔断?

熔断这一概念来源于电子工程中的断路器(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

什么是服务熔断,什么是服务降级?相关推荐

  1. java服务降级与服务熔断区别_服务降级和服务熔断

    服务熔断 在微服务架构中,微服务之间的数据交互通过远程调用完成,微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,此时如果链路上某个微服务的调用响应时间过长或者不可用,那么对微服务 ...

  2. 服务熔断降级什么意思?

    服务降级:超过业务设置处理时间,提示服务器忙,请稍后再试 服务熔断:因为服务挂了,告诉你服务不可用,请稍后再试.当检测到服务正常后,慢慢恢复接口使用

  3. 服务熔断和服务降级的区别

    1.服务降级:不管在什么情况下,服务降级的流程都是先调用正常的方法,再调用fallback的方法. 也就是服务器繁忙,请稍后再试,不让客户端等待并立刻返回一个友好提示. 2.服务熔断:假设服务宕机或者 ...

  4. SpringCloud Hystrix服务熔断和降级的理解

    (个人理解,不喜勿喷)假如我要开发一个项目,但是开发的过程中遇到一个问题,我不会操作数据库(包括数据库连接,数据查询等),我只能向我的朋友请教,朋友A会使用Hibernate,朋友B会JDBC访问数据 ...

  5. java服务降级与服务熔断区别_【原创】谈谈服务雪崩、降级与熔断

    引言 首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文.当然,考虑到目前大多微服务的文章都是口水文,烟哥争取将实现方式讲透,点清楚,让大家有所收获! OK,我要先说明 ...

  6. 什么是服务熔断?什么是服务降级?

    转载自 漫画:什么是服务熔断 什么是服务熔断 熔断这一概念来源于电子工程中的断路器(Circuit Breaker).在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体 ...

  7. 漫画:什么是服务熔断

    转载自 漫画:什么是服务熔断 什么是服务熔断? 熔断这一概念来源于电子工程中的断路器(Circuit Breaker).在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整 ...

  8. 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)

    跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...

  9. Istio服务网格进阶⑤:Istio服务网格的流量管理之服务熔断

    Istio流量管理之服务熔断 文章目录 Istio流量管理之服务熔断 1.Istio服务治理之服务熔断 2.Istio服务网格流量管理之配置服务熔断 2.1.案例描述 2.1.在Istio中部署Htt ...

最新文章

  1. 使用pytorch将数据集分成一份一份的
  2. 如何在CrossOver里应用Windows容器的存档(备份)与恢复?
  3. JDK7 源码学习系列——ThreadLocal
  4. 《C++ Primer 4th》读书笔记 第6章-语句
  5. 杭电oj2072,2091字符串java实现
  6. Linux 文件压缩解压缩
  7. PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果
  8. 电脑键盘练习_电脑新手最关心的:零基础如何快速掌握电脑打字的技巧?
  9. C++ 类和对象成员特性
  10. 【征稿通知】CCF第37届中国计算机应用大会 CCF NCCA 2022
  11. c语言程序设计实践教程编程题8.3,C语言程序设计教程(21世纪计算机科学与技术实践型教程)...
  12. Powershell About Active Directory Server
  13. 毕业设计 基于单片机的智能蓝牙密码锁设计与实现
  14. CentOS7.5 怎么修改默认SSH端口号
  15. 参考文献标引方式_参考文献标注及排写格式
  16. 计讯物联防潮产品,无惧恶劣环境
  17. php 检测链接,PHP检测链接是否存在的代码实例分享
  18. 六脉连环大总结,教你干趴Docker
  19. MySQL下载与安装教程(小白)
  20. 北京的房租到底有多高?

热门文章

  1. git的使用和上传代码到gitee(码云) 教程
  2. 删除容器docker rm和强制删除容器docker rm -f
  3. qlv,qsv,kux格式转换成MP4格式软件
  4. 多卡训练中的BN(BatchNorm)
  5. mysql入门很简单系列视频-学习笔记
  6. 在三人易行学习PLC编程有什么好处?
  7. 推荐系统3--FM和FFM
  8. 11.小白初学日记 STM32F429 HAL库 STM32程序启动过程
  9. 汉字转换为拼音的函数
  10. 论文中可以让代码变得非常好看的工具