欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

sentinel流量控制、降级、熔断

时间:2023-06-14

  流量控制(flow control),其原理是监控资源(Resource)的统计指标,然后根据Token计算策略来计算资源的可用Token(也就是阈值),然后根据流量控制策略对请求进行控制,避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

流控配置

1.选择访问的簇点链路,选择具体流控规则

新增留空信息

流控规则名词解释与作用

QPS: 每秒请求访问量,配合阈值使用
并发线程数:当前请求每秒并发访问量,配合阈值使用
流控模式:
 直接:单个接口访问
 关联:关联两接口A、B。如当前A访问量达到阈值后,B同样限流
 链路:分布式服务中,多服务调用总时常
流控效果:
 快速失败:顾名思义,当请求达到配置阈值直接失败
 warm up:慢加载,在指定时间内,慢慢达到请求阈值。如阈值:10,预热时长:5。当服务接收到第一次求请求,前5秒会以10/3的流量慢慢达到请求阈值10.
 排队等待:类似于队列机制,先到先得,后到排队访问。


如上:当前请求/testA接口,当QPS大于10时,会直接触发失败

如上:当前/testA请求并发数,大于10时。接口/testB与/testA都会触发限流

如上:当/testA从无接口请求->有请求时。服务会以 10/3 -> 10的阈值过度,持续时间为5秒

降级配置

参考官方文档:https://sentinelguard.io/zh-cn/docs/golang/circuit-breaking.html

以上图为例:最大RT -> 最大request time

解读上图的意思就是:最少5次请求中,超过比例阈值50%的请求,每次响应时间大于200毫秒,则触发熔断,每次熔断触发时间为3秒


解读上图的意思就是:最少5次请求中,超过比例阈值70%的请求,出现异常时,则触发熔断,每次熔断触发时间为3秒

解读上图的意思就是:最少5次请求中,超过4次请求,出现异常时,则触发熔断,每次熔断触发时间为3秒

热点key限流


上图意思为:/testB资源,QPS最大为1,当超过时就会触发熔断。但是当请求参数包含10时,QPS可以是10。

@RequestMapping("/testB") @SentinelResource(value = "testB", blockHandler = "error_request") // 不配置blockHandler会返回限流异常错误 public String testB(@RequestParam("p1") Long p1) { log.info("request testB"); return "test -- B"; } public String error_request(@RequestParam("p1") Long p1, BlockException e) { log.info("request testB fallback"); return "请求异常,请稍后再尝试"; }

代码示例
 另外 @SentinelResource 注解,只能fallback配置错误,当接口异常时,会返回原本的异常信息。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。