什么是服务熔断?

什么是服务熔断?一 什么是服务熔断 nbsp nbsp nbsp nbsp nbsp nbsp 考试过程中当断则断的方式 正好符合微服务架构中的一种安全机制 熔断 nbsp nbsp nbsp nbsp nbsp 熔断这一概念来源于电子工程中的断路器 CircuitBreak nbsp nbsp nbsp nbsp nbsp 在互联网系统中 当下游服务因访问压力过大而响应变慢或失败 上游服务为了保护系统整体的可用性 可以暂时切断对下游服务的调用 nbsp nbsp nbsp nbsp nbsp 这种牺牲局部 保全整体的措

一、什么是服务熔断?

          考试过程中当断则断的方式,正好符合微服务架构中的一种安全机制:【熔断】

         熔断这一概念来源于电子工程中的断路器(Circuit Breaker)。

         在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。

         这种牺牲局部,保全整体的措施就叫做熔断。

  如果不采取熔断措施,我们的系统会怎样呢?

    我们来看一个栗子。

       当前系统中有A,B,C三个服务,服务A是上游,服务B是中游,服务C是下游。

        它们的调用链如下:

            什么是服务熔断?

     一旦下游服务C因某些原因变得不可用,积压了大量请求,服务B的请求线程也随之阻塞。线程资源逐渐耗尽,使得服务B也变得不可用。紧接着,服务      A也变为不可用,整个调用链路被拖垮。

     什么是服务熔断?

     像这种调用链路的连锁故障,叫做雪崩

在这种时候,就需要我们的熔断机制来挽救整个系统。
熔断机制的大体流程和刚才所讲的考试策略如出一辙:

什么是服务熔断?

这里需要解释两点:

      1. 开启熔断

           在固定时间窗口内,接口调用超时比率达到一个阈值,会开启熔断。

           进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的默认方法,达到服务降级的效果。

      2. 熔断恢复

           熔断不可能是永久的。

           当经过了规定时间之后,服务将从熔断状态回复过来,再次接受调用方的远程调用。

 

二、Spring Cloud Hystrix很好的实现了熔断机制

           服务熔断的实际应用

           Spring Cloud Hystrix是基于Netflix的开源框架Hystrix实现,该框架实现了服务熔断线程隔离等一系列服务保护功能。

           对于熔断机制的实现,Hystrix设计了三种状态:

                1.熔断关闭状态(Closed)

                       服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。

                2.熔断开启状态(Open)

                       在固定时间内(Hystrix默认是10秒),接口调用出错比率达到一个阈值(Hystrix默认为50%),会进入熔断开                                  启状态。

                       进入熔断状态后,  后续对该服务接口的调用不再经过网络,直接执行本地的fallback方法

                3.半熔断状态(Half-Open)

                        在进入熔断开启状态一段时间之后(Hystrix默认是5秒),熔断器会进入半熔断状态。

                        所谓半熔断就是尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。

                        如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;如果成功率仍旧很低,则重新进入熔断开启                                     状态。

         三个状态的转化关系如下图:

               什么是服务熔断?

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176054.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:48
下一篇 2026年3月26日 下午10:48


相关推荐

  • 跳跃性思维的一些特征【转】

    跳跃性思维的一些特征【转】好吧!我勇敢地承认我是跳跃性思维。跳跃性思维又称选单式思考,经常讲话前言后语不搭,跳跃性很强;一边和别人在聊天,同时想到完全不搭的另外事;旁人聊天时却很迷惑,浑然不知我在表达什么。当你谈话后意识到我时

    2022年8月4日
    7
  • 数组转化为list

    数组转化为list1、Arrays.asList(strArray)方式将数组转换List后,不能对List增删,只能查改,否则抛异常。此时是java.util.Arrays.ArrayList这里面有java.util.Arrays里面的内部类,里面没有重写增删方法,就会调用父类的AbstractList,可以看到父类的增删方法,就会报错,即使调用iterator也会报错。publicvoi…

    2022年6月29日
    31
  • VMware虚拟机安装DOS6.22

    VMware虚拟机安装DOS6.22

    2022年3月12日
    38
  • PostMan的安装和使用教程[通俗易懂]

    PostMan的安装和使用教程[通俗易懂]postman的下载官网:https://www.getpostman.com/downloads/创建账号或者用谷歌浏览器账号登录一个demo了解一下我做的是一个app,后台使用java做的,app通过ajax来请求后台,但是我不知道后台有没有请求成功!因此需要一个测试接口的东西测试我做的接口有没有问题我的app里面的ajax是这样写的api.aja…

    2026年1月17日
    6
  • Python中的print()函数用法总结

    Python中的print()函数用法总结文章目录 1 print 函数用法 2 格式化输出 3 Python 常用格式字符 1 print 函数用法 函数语法 print objects sep end n file sys stdout objects 复数 表示可以一次输出多个对象 输出多个对象时 需要用 分隔 sep 用来间隔多个对象 默认值是一个空格 end 用来设定以什么结尾 默认值是换行符 n 我们可以换成其他字符串 file 要写入的文件对象 2 格式化输出 在

    2026年3月16日
    2
  • SQL Server 2019基础配置

    SQL Server 2019基础配置SQLServer2019基础配置1、在开始菜单中选中安装的SQLServer2019配置管理器,打开。2、点击SQLServer网络配置->MSSQLSERVER的协议->启用TCP/IP协议。示例:3、启动管理应用。示例:4、默认直接点击连接即可。示例:5、发现有如图所示的结果表示连接成功。示例:6、单击->右键->属性。示例:7…

    2022年7月20日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号