服务熔断

熔断原理

熔断器,也叫断路器,其英文单词为:Circuit Breaker

熔断状态机3个状态:

  • Closed:关闭状态,所有请求都正常访问。

  • Open:打开状态,所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次。

  • Half Open:半开状态,open状态不是永久的,打开后会进入休眠时间(默认是5S)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会完全关闭断路器,否则继续保持打开,再次进行休眠计时

动手实践

为了能够精确控制请求的成功或失败,我们在consumer的调用业务中加入一段逻辑:

@GetMapping("{id}")
@HystrixCommand
public String queryUserById(@PathVariable("id") Long id){if(id == 1){throw new RuntimeException("太忙了");}String user = this.restTemplate.getForObject("http://service-provider/user/" + id, String.class);return user;
}

这样如果参数是id为1,一定失败,其它情况都成功。(不要忘了清空service-provider中的休眠逻辑)

我们准备两个请求窗口:

  • 一个请求:http://localhost/consumer/user/1,注定失败

  • 一个请求:http://localhost/consumer/user/2,肯定成功

当我们疯狂访问id为1的请求时(超过20次),就会触发熔断。断路器会断开,一切请求都会被降级处理。

此时你访问id为2的请求,会发现返回的也是失败,而且失败时间很短,只有几毫秒左右:

不过,默认的熔断触发要求较高,休眠时间窗较短,为了测试方便,我们可以通过配置修改熔断策略:

circuitBreaker.requestVolumeThreshold=10
circuitBreaker.sleepWindowInMilliseconds=10000
circuitBreaker.errorThresholdPercentage=50

解读:

  • requestVolumeThreshold:触发熔断的最小请求次数,默认20

  • errorThresholdPercentage:触发熔断的失败请求最小占比,默认50%

  • sleepWindowInMilliseconds:休眠时长,默认是5000毫秒

hystrix之熔断相关推荐

  1. Spring Cloud(十一):Hystrix服务熔断-工作流程

    1. Hystrix服务熔断 1.1 断路器 类似保险丝 1.2 熔断是什么 熔断机制是应对雪崩效应的一种微服务链路保护机制.当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而 ...

  2. SpringCloud进阶-Hystrix的熔断机制+Hystrix的工作流程

    提示:本文主要对SpringCloud中的Hystrix的熔断机制和工作流程进行总结 文章目录 前言 一.简介 1.熔断是什么 二.实操 1.实现 2.测试 三.总结 1.大神结论 2.熔断类型 3. ...

  3. Hystrix的熔断机制

    1.什么是服务的熔断机制? 在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很常见的. 在高并发情况下,单个服务的延迟会导致整个请求都处 ...

  4. hystrix 全局熔断_跟我学Spring Cloud(Finchley版)14Feign使用Hystrix

    Feign默认已经整合了Hystrix,本节详细探讨Feign使用Hystrix的具体细节. 服务降级 1 加配置,默认Feign是不启用Hystrix的,需要添加如下配置启用Hystrix,这样所有 ...

  5. Spring Cloud微服务之Hystrix服务熔断(十二)

    Hystrix熔断器 一.Hystrix概念 二.feign结合Hystrix使用 1.在service的pom中添加依赖 2.在service-user配置文件中添加hystrix配置 3.在ser ...

  6. 9.Springcloud的Hystrix服务熔断和服务降级

    项目地址: github地址 服务熔断和服务降级异同 相同点:让用户体验到的是某些功能暂时不可用:都是从可用性和可靠性出发,为了防止系统崩溃: 不同点: 服务熔断:一般是某个服务(下游服务)故障引起, ...

  7. Hystrix实现熔断降级

    目录 一.Hystrix执行过程 二.Hystrix熔断机制 1. 熔断原理 2. HystrixCircuitBreakerImpl源码解析 3. 熔断器开关状态 4. 采样统计 三.配置参数 四. ...

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

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

  9. 微服务之Hystrix降级熔断

    前言 分布式系统面临的问题-----服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的"扇出".如果扇出的链 ...

  10. 算法高级(8)-Hystrix实现熔断、限流与服务保护中的算法详解

    上一章讲了常见的限流算法,本章我们来看看,Spring Cloud中的Hystrix组件在对请求进行熔断.限流与服务保护操作时的算法实践. 一.雪崩 分布式系统环境下,服务间依赖非常常见,一个业务调用 ...

最新文章

  1. mnist学习实例(2)
  2. TextBox中的KeyDown 时间不能响应的问题!
  3. Docker实战 (docker swarm的应用,docker集群的构建,在docker集群中部署服务)
  4. 项目部署—连接不上远程redis服务怎么办?
  5. 北大博士,毕业做北京城管,他的同事清一色名校硕士,博士,这个世界怎么了?...
  6. Mysql更新数据库数据sql_一条更新SQL在MySQL数据库中是如何执行的
  7. file does not exist 阿里云OSS图片上传遇到的问题
  8. 【夯实PHP基础】PHP的反射机制
  9. final关键字深入解析
  10. 如何正确在NSMutableDictionary中加入一个变量int
  11. BiometricPrompt之三 - Fingerprint, Iris, Face UI优先级
  12. oracle报03113,一条SQL查询,报ora-03113的错误,请高手分析
  13. POJ 2503 Babelfish(map)
  14. ubuntu 20.04安装各类软件
  15. 2021 CNSS招新赛 WEB WP
  16. UDS诊断系列介绍13-31服务
  17. 反编译工具dava的使用
  18. 冈萨雷斯图像处理---非锐化掩蔽和高提升滤波
  19. 【bat】验证是否安装某个软件
  20. HACER:human增强子数据库

热门文章

  1. jdbc mysql数据类型对比 (版本: 5.1)
  2. .NET开发Windows服务
  3. Visual C# 2008+SQL Server 2005 数据库与网络开发--13.1.3 简单记事本程序菜单设计
  4. 【Spring MVC学习】spring mvc入门示例
  5. Linux lvs 多端口组成
  6. 基于 DataLakeAnalytics 做跨地域的数据分析
  7. 基于canvas的图片压缩函数实现
  8. Android `AsyncTask`简要分析
  9. mongodb按照时间分组统计
  10. JAVA中的Hashset类