sentinel流量控制、降级、熔断

  流量控制(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配置错误,当接口异常时,会返回原本的异常信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值