Sentinel流控规则详解

介绍

  • Sentinel 提供一个轻量级的开源控制台,可以提供机器发现以及健康情况管理功能;
  • sentinel是懒加载机制,只有访问过一次的资源才会被监控,不过可以通过配置关闭懒加载;

流控操作台

在簇点链路中,可以给指定路径添加流控规则:

在这里插入图片描述

规则详解

Sentinel流控模式 - 直接

  • 默认的效果为快速失败

Sentinel流控效果 - 快速失败

  • 这个就是字面意思,当这个请求地址每秒访问量超过1qps时,方法将不继续处理请求,有请求访问时,提示失败信息
    在这里插入图片描述
    请求返回信息
    在这里插入图片描述

Sentinel流控效果 - 预热(Warm Up)

  • 默认的冷加载因子为 3 ,如果当你单机阈值为 100 的时候,并不是一开始就允许 100 个QPS访问;
  • 因为已经选择了Warm Up,就要通过计算才能得出初始阈值:
    • 初始阈值 = 单机阈值 / 3,那么,在这里就是 100 / 3 ≈ 33,经过10s的预热之后,阈值才会升到100
  • 使用场景:
    • 秒杀、或者有其他活动的时候都可以进行设置,防止请求QPS短时间激增,搞垮服务器
      在这里插入图片描述

Sentinel流控效果 - 排队等待

  • 字面意思,超出QPS之后,请求进入之后也会匀速等待处理,类似于漏桶算法
  • 主要用于处理突发性比较强的场景,例如消息队列,在某一秒会有大量请求,接下来一段时间是空白的
    在这里插入图片描述

Sentinel流控模式 - 关联

  • 如下所示,如果关联资源/index/v1/hello/indexB的QPS达到100,那么/index/v1/hello/indexA再接收到请求时,则会做快速失败处理;
  • 使用场景:
    • 在同一服务中,分为有写入数据接口和读数据接口,恰好写入数据接口的权重比较重要,那么在关联资源上设置读取接口就行了,一旦写入请求多,就限制读的请求;
      在这里插入图片描述

Sentinel流控模式 - 线程数 直接失败

  • 线程数直接失败与QPS直接失败的区别:
    • 如果QPS为10的话,那么这10个请求需要多少个线程处理是不一定的,有可能是5个,也有可能是6个;
    • 如果请求是线程数的话,那么将不关心多少个请求,最多接受100个线程同时调用此接口;
      在这里插入图片描述

自定义流控异常信息

spring:
  cloud:
    sentinel:
      #配置限流之后的响应内容
      scg:  
        fallback:
          # 两种模式:一种是response返回文字提示信息,一种是redirect,重定向跳转,需要同时配置redirect(跳转的uri)
          mode: response
          # 响应的状态
          response-status: 426
          # 响应体
          response-body: '{"code": 426,"message": "限流了,稍后重试!"}'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

素人岳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值