sentinel 限流熔断组件

主流限流熔断组件对比

在这里插入图片描述

Sentinel

Sentinel 是一款面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障服务的稳定性,核心思想是:根据对应资源配置的规则来为资源执行相应的流控/降级/系统保护策略,Sentinel 的主要特性如下图
在这里插入图片描述

官方文档地址:https://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0

资源与规则:

Sentinel 可以简单分为 Sentinel 核心库和 Dashboard,核心库不依赖 Dashboard,但是结合 Dashboard 可以获得更好的效果。使用 Sentinel 来进行资源保护,主要分为几个步骤:

(1)定义资源:资源可以是程序中的任何内容,例如一个服务,服务里的方法,甚至是一段代码。

(2)定义规则:Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则 和 热点参数规则。

(3)检验规则是否生效

由于 Sentinel 中所有的规则都可以在动态地查询和修改,并且修改后立即生效,并且 Sentinel 中资源定义和规则的配置是分离的。因此在编码时,我们先把需要保护的资源定义好(埋点),之后便可以在需要的时候动态配置规则了。也可以理解为,只要有了资源,我们就能在任何时候灵活地定义各种规则。

定义资源:

对于资源的定义有两种,一种是硬编码的方式,一种是通过 @SentinelResource 注解的方式。

定义规则:

Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则 和 热点参数规则。而定义规则同样支持两种方式:一种是硬编码的方式,一种是通过 sentinel-dashboard 控制台直接配置

流量控制规则

流量控制,原理是监控应用流量的 QPS 或 并发线程数 等指标,当达到指定阈值时对流量进行控制,避免系统被瞬时的流量高峰冲垮,保障应用高可用性。同一个资源可以创建多条限流规则,一条限流规则由以下属性组成:

  1. resource:资源名,即限流规则的作用对象,默认请求路径。

  2. limitApp:流控针对的调用来源,若为 default 则不区分调用来源,默认值default

  3. count:限流阈值

  4. grade:限流阈值类型(1代表 QPS,0 代表并发线程数),默认值QPS

  5. strategy:流控模式

直接拒绝(默认):接口达到限流条件时,
直接限流 关联:当关联的资源达到阈值时,就限流自己(适合做应用让步)
链路:只记录指定链路上的流量,指定资源从入口资源进来的流量,如果达到阈值,就可以限流

⑥ controlBehavior:流控效果

快速失败(默认):当 QPS 超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException
排队等待:这种方式严格控制了请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。
WarmUp:该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮的情况。预热底层是根据令牌桶算法实现的。

熔断降级规则

在这里插入图片描述

sentinel 提供了以下几种荣熔断策略:

(1)平均响应时间 :
DEGRADE_GRADE_RT,当资源的平均响应时间超过阈值(DegradeRule 中的 count,以 ms 为单位)之后,资源会进入降级状态,那么在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地熔断(抛出 DegradeException)。

(2)异常比例 :
DEGRADE_GRADE_EXCEPTION_RATIO,当资源的每秒异常总数占通过量的比值超过阈值(DegradeRule 中的 count)之后,资源进入降级状态,即在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

(3)异常数 :
DEGRADE_GRADE_EXCEPTION_COUNT,当资源近 1 分钟的异常数目超过阈值之后会进行熔断。

参考资料:https://blog.csdn.net/a745233700/article/details/122733366

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值