微服务保护--熔断降级

这篇具有很好参考价值的文章主要介绍了微服务保护--熔断降级。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.熔断降级介绍

熔断降级是解决雪崩问题的重要手段。其思路是由断路器统计服务调用的异常比例、慢请求比例,如果超出阈值则会熔断该服务。即拦截访问该服务的一切请求;而当服务恢复时,断路器会放行访问该服务的请求。

断路器控制熔断和放行是通过状态机来完成的:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

状态机包括三个状态:

  • closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例。超过阈值则切换到open状态

  • open:打开状态,服务调用被熔断,访问被熔断服务的请求会被拒绝,快速失败,直接走降级逻辑。Open状态5秒后会进入half-open状态

  • half-open:半开状态,放行一次请求,根据执行结果来判断接下来的操作。

    • 请求成功:则切换到closed状态

    • 请求失败:则切换到open状态

断路器熔断策略有三种:慢调用、异常比例、异常数

2.慢调用

慢调用:业务的响应时长(RT)大于指定时长的请求认定为慢调用请求。在指定时间内,如果请求数量超过设定的最小数量,慢调用比例大于设定的阈值,则触发熔断。

例如:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

解读:RT超过500ms的调用是慢调用,统计最近10000ms内的请求,如果请求量超过10次,并且慢调用比例不低于0.5,则触发熔断,熔断时长为5秒。然后进入half-open状态,放行一次请求做测试。

案例

需求:给 UserClient的查询用户接口设置降级规则,慢调用的RT阈值为50ms,统计时间为1秒,最小请求数量为5,失败阈值比例为0.4,熔断时长为5

1)设置慢调用

修改user-service中的/user/{id}这个接口的业务。通过休眠模拟一个延迟时间:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

此时,orderId=101的订单,关联的是id为1的用户,调用时长为60ms:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

orderId=102的订单,关联的是id为2的用户,调用时长为非常短;

微服务保护--熔断降级,Java服务框架,微服务,java,架构

 2)设置熔断规则

下面,给feign接口设置降级规则:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

微服务保护--熔断降级,Java服务框架,微服务,java,架构

超过50ms的请求都会被认为是慢请求

3)测试

在浏览器访问:http://localhost:8088/order/101,快速刷新5次,可以发现:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

触发了熔断,请求时长缩短至5ms,快速失败了,并且走降级逻辑,返回的null

在浏览器访问:http://localhost:8088/order/102,竟然也被熔断了:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

3.异常比例、异常数

异常比例或异常数:统计指定时间内的调用,如果调用次数超过指定请求数,并且出现异常的比例达到设定的比例阈值(或超过指定异常数),则触发熔断。

例如,一个异常比例设置:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

解读:统计最近1000ms内的请求,如果请求量超过10次,并且异常比例不低于0.4,则触发熔断。

一个异常数设置:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

解读:统计最近1000ms内的请求,如果请求量超过10次,并且异常比例不低于2次,则触发熔断。

案例

需求:给 UserClient的查询用户接口设置降级规则,统计时间为1秒,最小请求数量为5,失败阈值比例为0.4,熔断时长为5s

1)设置异常请求

首先,修改user-service中的/user/{id}这个接口的业务。手动抛出异常,以触发异常比例的熔断:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

也就是说,id 为 2时,就会触发异常

2)设置熔断规则

下面,给feign接口设置降级规则:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

微服务保护--熔断降级,Java服务框架,微服务,java,架构

在5次请求中,只要异常比例超过0.4,也就是有2次以上的异常,就会触发熔断。

 3)测试

在浏览器快速访问:http://localhost:8088/order/102,快速刷新5次,触发熔断:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

此时,我们去访问本来应该正常的103:

微服务保护--熔断降级,Java服务框架,微服务,java,架构

喜欢的话点个关注吧!

微服务保护--熔断降级,Java服务框架,微服务,java,架构文章来源地址https://www.toymoban.com/news/detail-769838.html

到了这里,关于微服务保护--熔断降级的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务降级和服务熔断的区别

            概念:服务降级是指在面对高并发请求的时候,根据实际业务使用情况以及流量,对一些服务和页面有策略的不处理或者用一种简单的方式进行处理,从而 释放服务器资源的资源以保证核心业务的正常高效运行         问题产生的原因:  服务器的资源是有限的,

    2024年04月15日
    浏览(39)
  • 【架构详细解读】缓存、限流、降级和熔断、负载均衡、灾备和故障转移——

    目录  架构基础 # 如何理解架构的演进? # 如何理解架构的服务化趋势? # 架构中有哪些技术点?   缓存 # 谈谈架构中的缓存应用? # 在开发中缓存具体如何实现? # 使用缓存的经验?  限流 # 什么是限流?三种限流的算法? # 限流令牌桶和漏桶对比? # 在单机情况下如何

    2024年01月16日
    浏览(46)
  • 微服务- 熔断、降级和限流

    在微服务架构中,由于服务之间的相互依赖性,任何一个服务的故障或性能问题都可能导致整个系统的不稳定。因此,熔断、降级和限流是三种常见的技术手段,用于提高系统的可用性和稳定性。 熔断 (Circuit Breaker) 熔断机制的设计灵感来源于电路中的熔断器,用于防止过载

    2024年02月19日
    浏览(56)
  • Hystrix入门使用 服务熔断 服务降级 服务雪崩

    hystrix停止更新,理念优秀。 分布式系统面临的问题: 对于复杂的分布式体系,有数十个依赖,依赖不可避免的错误。 服务会出现雪崩, 高可用受到破坏 。 Hystrix就是用于解决分布式系统延迟和容错的开源库。 保证在一个依赖出现问题,不会导致整体的服务失败,避免级联故

    2024年02月07日
    浏览(49)
  • 简单理解微服务限流、降级、熔断

    微服务限流、降级、熔断分别都是什么意思,我们平时工作中为什么要关注这些东西呢? 公司不断的发展壮大,一开始处于蛮荒时代,咱们从单体应用过渡到微服务的时候,可能还是那一套单体的思想,再加上用户量可能也不多,直接就不去考虑起量了之后,我们需要如何处

    2024年02月09日
    浏览(42)
  • 【SpringCloud】2.微服务的熔断和降级

    在 上篇博客,我们完成了项目的基本搭建工作,那这篇博客就来实现一下微服务的熔断和降级。 1.1 发生场景 在前面,我们用 springcloud-service-consumer 这个服务消费者调用 springcloud-service-provider 这个服务提供者的接口,现在我们假设一种情况,如果某天服务提供者宕机了,它的

    2024年02月09日
    浏览(33)
  • 微服务篇之雪崩、降级和熔断

            服务雪崩: 一个服务失败,导致整条链路的服务都失败的情形。          服务降级 是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。         Hystrix 熔断机制,用于监控微服务调

    2024年02月22日
    浏览(39)
  • 微服务中的熔断、降级和限流

    在现代微服务架构中,熔断、降级和限流是保障系统稳定性和可靠性的重要手段。本文将深入探讨这三种机制在微服务架构中的作用、原理以及实践方法。 1.1 作用和原理 熔断器是一种可以在服务发生故障时快速中断请求的机制,防止故障蔓延到整个系统。当服务出现异常或

    2024年02月22日
    浏览(44)
  • SpringCloud(四)Hystrix服务降级、熔断、监控页面

    官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.3.5.RELEASE/single/spring-cloud-netflix.html#_circuit_breaker_hystrix_clients 我们知道,微服务之间是可以进行相互调用的,那么如果出现了下面的情况会导致什么问题? 由于位于最底端的服务提供者E发生故障,那么此时会直接导

    2024年02月17日
    浏览(56)
  • 舞动微服务的安全舞伴:服务熔断与服务降级的精妙演绎

    目录 引言 1、服务熔断:避免连锁反应的舞姿 1.1 什么是服务熔断? 1.2服务熔断的工作原理 场景:支付服务的重要性 1. 监控支付服务 2. 设定阈值 3. 熔断器状态 4. 触发熔断 5. 定时检测 6. 自动恢复 1.3解析 2、服务降级:优雅的后退舞步 2.1什么是服务降级? 2.2服务降级原理

    2024年01月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包