文章目录
介绍
- Sentinel 提供一个轻量级的开源控制台,可以提供机器发现以及健康情况管理功能;
- sentinel是懒加载机制,只有访问过一次的资源才会被监控,不过可以通过配置关闭懒加载;
流控操作台
在簇点链路中,可以给指定路径添加流控规则:
规则详解
Sentinel流控模式 - 直接
- 默认的效果为快速失败
Sentinel流控效果 - 快速失败
- 这个就是字面意思,当这个请求地址每秒访问量超过
1qps
时,方法将不继续处理请求,有请求访问时,提示失败信息
请求返回信息
Sentinel流控效果 - 预热(Warm Up)
- 默认的冷加载因子为
3
,如果当你单机阈值为100
的时候,并不是一开始就允许100
个QPS访问; - 因为已经选择了Warm Up,就要通过计算才能得出初始阈值:
- 初始阈值 = 单机阈值 / 3,那么,在这里就是 100 / 3 ≈ 33,经过10s的预热之后,阈值才会升到100
- 使用场景:
- 秒杀、或者有其他活动的时候都可以进行设置,防止请求QPS短时间激增,搞垮服务器
- 秒杀、或者有其他活动的时候都可以进行设置,防止请求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": "限流了,稍后重试!"}'