熔断降级

简介: 本内容介绍了微服务中熔断降级的实现原理及Sentinel的底层机制。通过OpenFeign集成Sentinel,利用断路器统计异常和慢请求比例,触发熔断并降级,提升系统稳定性。还讲解了Sentinel使用的限流算法,如滑动窗口、令牌桶和漏桶算法,以应对不同场景下的流量控制需求。

熔断降级怎么实现的?

是Sentinel实现的熔断降级。

熔断和降级是两个概念:

微服务远程调用我们用的OpenFeign,它集成了Sentinel,在远程调用时由断路器统计服务调用的异常比例、慢请求比例,如果超出阈值则会熔断该服务。

降级是当遇到访问失败可以快速返回一些默认数据或者友好提示,避免长期等待服务提供方,提高系统的稳定性。

熔断降级结合后是当线路断开后直接走降级线路避免再次去请求失败线路。

断路器包括三个状态:

  • closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例、异常数。超过阈值则切换到open状态
  • open:打开状态,服务调用被熔断,访问被熔断服务的请求会被拒绝,快速失败,直接走降级逻辑。Open状态5秒后会进入half-open状态
  • half-open:半开状态,放行一次请求,根据执行结果来判断接下来的操作。请求成功则切换到closed状态,请求失败则切换到open状态。

我们在开发中具体是这么做的:

  1. 首先在服务调用方配置sentinel,引入sentinel的依赖,配置sentinel的地址
  2. 在服务调用方配置开启feign使用sentinel。
  3. 在服务调用方编写feign接口并编写降级逻辑。
  4. 通过Sentinel控制台配置熔断策略,比如:异常比例、慢请求比例。

Sentinel实现熔断、限流的底层原理是什么?

Sentinel提供多种流量 控制算法 ,包括:滑动窗口算法、令牌桶算法以及漏桶算法等。

滑动窗口算法:

是一种用于统计单位时间内请求次数的方法,用来实现限流的目的。它将时间划分为多个小的时间窗口,并在每个小窗口内记录请求的数量。当新的请求到来时,系统会检查当前小窗口内的请求数量是否超过了预设的阈值,如果超过则拒绝请求。

令牌桶算法:

核心思想是一个桶中存储了一定数量的令牌,每当有请求到达时,就需要从桶中取出一个令牌。如果没有足够的令牌,则请求被延迟或拒绝。

以固定的速率生成令牌,存入令牌桶中,如果令牌桶满了以后,多余令牌丢弃。

请求进入后,必须先尝试从桶中获取令牌,获取到令牌后才可以被处理

如果令牌桶中没有令牌,则请求等待或丢弃

在使用令牌桶算法时,可能会存在突发流量导致系统过载,所以尽量不要将令牌上限设定到服务能承受的QPS上限。而是预留一定的波动空间,这样我们才能应对突发流量。

漏桶算法:

漏桶算法与令牌桶相似,但在设计上更适合应对并发波动较大的场景,以解决令牌桶中的问题。

就是请求到达后不是直接处理,而是先放入一个队列。而后以固定的速率从队列中取出并处理请求。之所以叫漏桶算法,就是把请求看做水,队列看做是一个漏了的桶。

相关文章
Windows 命令提示符(CMD)操作(七):扩展命令和功能
Windows 命令提示符(CMD)操作(七):扩展命令和功能
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
26285 2
|
数据可视化 Java Nacos
OpenFeign + Sentinel 实现微服务熔断限流实战
本文介绍如何在Spring Cloud微服务架构中,结合OpenFeign与阿里巴巴开源组件Sentinel,实现服务调用的熔断、降级与限流。通过实战步骤搭建user-service与order-service,集成Nacos注册中心与Sentinel Dashboard,演示服务异常熔断、QPS限流控制,并支持自定义限流响应。借助Fallback降级机制与可视化规则配置,提升系统稳定性与高可用性,助力构建健壮的分布式应用。
1409 155
|
10月前
|
监控 Java 数据库
1.4. sentinel降级
本文介绍如何在微服务中使用Sentinel对A服务自身接口进行限流与降级。通过@SentinelResource注解定义资源,设置限流规则,并实现fallback和blockHandler方法处理异常与限流降级。同时对比Feign远程调用与非远程调用的降级方式,结合信号量隔离实现线程级防护,保障系统稳定性。
|
12月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
958 8
|
监控 API 开发者
Sentinel:微服务的全能守护
Sentinel 是阿里巴巴开源的一款轻量级流量控制和熔断降级框架。它通过设置流量控制、熔断降级和系统保护规则,确保微服务在高并发场景下稳定运行。Sentinel 提供丰富的功能、实时监控和灵活的集成方式,适用于各种分布式系统。
2149 0
|
缓存 安全 网络协议
Windows 安全基础——NetBIOS篇
Windows 安全基础——NetBIOS篇
884 4
|
运维 监控 算法
聊一聊Sentinel背后的原理
本文介绍了Sentinel的核心原理,包括流量控制、熔断降级、系统负载保护、实时监控和统计、与多种微服务框架的集成能力以及扩展性,强调了Sentinel在保障分布式系统稳定性方面的重要性。
1331 0