SpringCloud应用熔断机制并使用断路器

本文详细介绍了微服务中熔断的概念和作用,通过实例展示了如何使用Hystrix实现熔断,包括配置熔断超时、创建熔断工程、调用重试以及断路器的开闭控制。同时,文章还提及了幂等性在系统设计中的重要性。

一、什么叫熔断

​ 在微服务环境中,设想以下场景:某一个业务中需要调用S服务,而S服务需要调用A服务,以此类推,依次调用B服务和C服务。当系统环境产生异常,C服务无法正常运行导致宕机。进而会影响到调动链之上的服务执行。这样会造成服务链上的服务发生雪崩性的错误,进而导致整个系统不能使用。为了避免这样的情况发生,当某一个服务发生了异常状态后,架构内应该能够及时自动的终止服务调动,而当服务恢复后,再恢复对服务的访问。这样的容错机制就称为熔断。需要注意的是,熔断机制并是要保障一个报错的接口能够正常执行,而是要让有可能报错的接口,快速返回可预期的失败场景,并快速释放资源,避免调用链上的服务全面崩溃。
在这里插入图片描述
在这里插入图片描述

二、熔断器的运行机制

在这里插入图片描述
断路器很好理解, 当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HALF-OPEN). 这时会判断下一次请求的返回情况, 如果请求成功, 断路器切回闭路状态(CLOSED), 否则重新切换到开路状态(OPEN).

三、如何创建熔断工程(使用restTemplate)

如何使用restTemplate传参数请点击这里.

  1. 首先在中台(s工程,只负责调用其他服务,不进行其他操作)引入熔断机制:
<!-- 熔断机制 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
			<version>2.2.8.RELEASE</version>
		</dependency>
  1. 在yml中引入:
hystrix:
  command:
    cslcp:
      execution:
        timeout:
          enabled: true 
        isolation:
          thread:
            timeoutInMilliseconds: 1000 
    default:
      execution:
        timeout:
        #开启熔断超时
          enabled: true 
        isolation:
          thread:
          #熔断超时的秒数,方法调用总时长,熔断超时要比resttemplate超时大。低于r几倍,比如r重试三次每个100秒,
          #则熔断需要设置小于300秒
            timeoutInMilliseconds: 5000 

  1. 中台(s工程)yml全如下图:
    熔断的超时时间配置:
hystrix:
  command:
    default:
      execution:
        timeout:
      
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

么贺贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值