断路器

断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果。

在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),直接切断原来的主逻辑调用。但是,在Hystrix中的断路器除了切断主逻辑的功能之外,还有更复杂的逻辑,下面我们来看看它更为深层次的处理逻辑。

以在《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文中实现的服务降级例子为示例,我们来说说断路器的工作原理。当我们把服务提供者eureka-client中加入了模拟的时间延迟之后,在服务消费端的服务降级逻辑因为hystrix命令调用依赖服务超时,触发了降级逻辑,但是即使这样,受限于Hystrix超时时间的问题,我们的调用依然很有可能产生堆积。

这个时候断路器就会发挥作用,那么断路器是在什么情况下开始起作用呢?这里涉及到断路器的三个重要参数:快照时间窗、请求总数下限、错误百分比下限。这个参数的作用分别是:

  • 快照时间窗:断路器确定是否打开需要统计一些请求和错误数据,而统计的时间范围就是快照时间窗,默认为最近的10秒。
  • 请求总数下限:在快照时间窗内,必须满足请求总数下限才有资格根据熔断。默认为20,意味着在10秒内,如果该hystrix命令的调用此时不足20次,即时所有的请求都超时或其他原因失败,断路器都不会打开。
  • 错误百分比下限:当请求总数在快照时间窗内超过了下限,比如发生了30次调用,如果在这30次调用中,有16次发生了超时异常,也就是超过50%的错误百分比,在默认设定50%下限情况下,这时候就会将断路器打开。

那么当断路器打开之后会发生什么呢?我们先来说说断路器未打开之前,对于之前那个示例的情况就是每个请求都会在当hystrix超时之后返回fallback,每个请求时间延迟就是近似hystrix的超时时间,如果设置为5秒,那么每个请求就都要延迟5秒才会返回。当熔断器在10秒内发现请求总数超过20,并且错误百分比超过50%,这个时候熔断器打开。打开之后,再有请求调用的时候,将不会调用主逻辑,而是直接调用降级逻辑,这个时候就不会等待5秒之后才返回fallback。通过断路器,实现了自动地发现错误并将降级逻辑切换为主逻辑,减少响应延迟的效果。

在断路器打开之后,处理逻辑并没有结束,我们的降级逻辑已经被成了主逻辑,那么原来的主逻辑要如何恢复呢?对于这一问题,hystrix也为我们实现了自动恢复功能。当断路器打开,对主逻辑进行熔断之后,hystrix会启动一个休眠时间窗,在这个时间窗内,降级逻辑是临时的成为主逻辑,当休眠时间窗到期,断路器将进入半开状态,释放一次请求到原来的主逻辑上,如果此次请求正常返回,那么断路器将继续闭合,主逻辑恢复,如果这次请求依然有问题,断路器继续进入打开状态,休眠时间窗重新计时。

通过上面的一系列机制,hystrix的断路器实现了对依赖资源故障的端口、对降级策略的自动切换以及对主逻辑的自动恢复机制。这使得我们的微服务在依赖外部服务或资源的时候得到了非常好的保护,同时对于一些具备降级逻辑的业务需求可以实现自动化的切换与恢复,相比于设置开关由监控和运维来进行切换的传统实现方式显得更为智能和高效。

电子商务社交平台源码请加企鹅求求:三五三六二四七二五九

转载于:https://juejin.im/post/5cfe1c7be51d455a694f94e9

java版电子商务spring cloud分布式微服务b2b2c社交电商:服务容错保护(Hystrix断路器)...相关推荐

  1. java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇

    社交电商平台源码请加企鹅求求:一零三八七七四六二六.filter的作用和生命周期 由filter工作流程点,可以知道filter有着非常重要的作用,在"pre"类型的过滤器可以做参 ...

  2. java版电子商务spring cloud分布式微服务b2b2c社交电商 (十四)服务注册(consul)

    Springcloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.这篇文章主要介绍 spring cloud consul 组件,它是一个提供服务发现和配置的工具.consul ...

  3. java版电子商务spring cloud分布式微服务b2b2c社交电商(四)SpringBoot 整合JPA

    b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对 ...

  4. java版电子商务spring cloud分布式微服务b2b2c社交电商(一)服务的注册与发现(Eureka)...

    一.spring cloud简介 电子商务平台源码请加企鹅求求:一零三八七七四六二六-spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代 ...

  5. (六)java版电子商务spring cloud分布式微服务b2b2c社交电商- commonservice-config配置服务搭建...

    介绍 电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持.使用Config Server,您可以在所有环境中管理应 ...

  6. java版电子商务spring cloud分布式微服务b2b2c社交电商-服务容错保护(Hystrix服务降级)...

    动手试一试 Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.在开始使用Spring Cloud Hystrix实现断路器之前,我们先拿之前实现的一些内容作为 ...

  7. (十二)java版电子商务spring cloud分布式微服务- Spring 4.2.2以上版本和swagger集成方案和踩过的坑...

    电子商务平台源码请加企鹅求求:一零三八七七四六二六.因为公司使用的spring版本太高,在集成swagger的时候会存在一些问题,而网上的很多实例大多都是版本比较低的,为了是朋友们少才坑,我这边将集成 ...

  8. java版商城+Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城 直播带货商城 电子商务

    一个好的SpringCloud+SpringBoot b2b2c 电子商务平台涉及哪些技术.运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管 ...

  9. java spring cloud版b2b2c社交电商spring cloud分布式微服务:分布式配置中心

    JAVASpring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud Config是Spring Cloud团队创建的一个 ...

最新文章

  1. android 访问http地址吗,浅谈android访问http原理
  2. Centos7 安装mongodb记录
  3. android什么是回调,Android中的回调是什么?
  4. c# url编码 字母编码_我如何通过每天30分钟编码来完成#100DaysOfCode挑战
  5. 使用Qunit对JavaScript进行单元测试
  6. 金山手机卫士论坛_三星多款手机黑屏系统崩溃 客服:闰4月BUG,无法保证数据不丢失...
  7. dnn305的一个bug
  8. 使用DOM4J解析大容量XML文件
  9. cdlinux教程wpa2无线网络密码破解
  10. Windows 恢复使用老版的图片查看器
  11. 51个最佳jQuery教程和示例
  12. w7无法訪问计算机上硬盘分区,Win7/win10双系统无法打开磁盘分区提示拒绝访问怎么解决...
  13. vue项目使用mand mobile check选择项组点击选中,选中的列表延迟一位问题
  14. maven镜像源及代理配置
  15. 【数据安全案例】案例汇总
  16. 手撕七大排序 (二)
  17. 微信小程序不能直接加载本地静态图像作为背景的解决办法
  18. idea中添加mysql驱动jia包的方法
  19. NOIP2018提高组省一冲奖班模测训练2 T3 XYK的音游
  20. 转-Linux进程后台运行的几种方法

热门文章

  1. gcc 编译器使用指南
  2. 《MySQL——选错索引,该如何做》
  3. stl vector 函数_vector :: at()函数以及C ++ STL中的示例
  4. Scala程序将多行字符串转换为数组
  5. 实训09.09:简单的彩票系统(注册信息)
  6. nutsdb与mysql_分享下 nutsdb 单机 1 亿、10 亿数据实测
  7. 2560介绍_炒股高手收益翻10倍,只因妙用这一招2560战法,看了都不亏了
  8. 求1+2+......+100的和
  9. 信息系统项目管理师论文_「高项论文」谨防信息系统项目管理师论文12个写作丢分点...
  10. redis 哨兵_Redis哨兵机制的原理介绍