Sentinel隔离和降级-熔断策略

断路器熔断策略有三种:慢调用、异常比例、异常数

1.慢调用
业务的响应时长(RT)大于指定时长的请求认定为慢调用请求。在指定时间内,如果请求数量超过设定的最小数量,慢调用比例大于设定的阈值,则触发熔断。例如:

解读:RT超过500ms的调用是慢调用,统计最近10000ms内的请求,如果请求量超过10次,并且慢调用比例>=0.5,则触发熔断,熔断时长为5秒。然后进入half-open状态(半开路状态),放行一次请求做测试。

需求:给 UserClient的查询用户接口设置降级规则,慢调用的RT阈值为50ms,统计时间为1秒,最小请求数量为5,失败阈值比例为0.4,熔断时长为5
提示:为了触发慢调用规则,我们需要修改UserService中的业务,增加业务耗时:

    /**
     * 路径: /user/110
     *
     * @param id 用户id
     * @return 用户
     */
    @GetMapping("/{id}")
    public User queryById(@PathVariable("id") Long id,
                          @RequestHeader(value = "Truth", required = false) String truth) throws InterruptedException {
        log.info(String.format("userId=%s", id));
        if (id == 1) {
            // 休眠,触发熔断
            Thread.sleep(60);
        } else if (id == 2) {
            throw new RuntimeException("故意出错,触发熔断");
        }
        return userService.queryById(id);
    }

 

2.熔断策略-异常比例、异常数
异常比例或异常数:统计指定时间内的调用,如果调用次数超过指定请求数,并且出现异常的比例达到设定的比例阈值(或超过指定异常数),则触发熔断。例如:

解读:统计最近1000ms内的请求,如果请求量超过10次,并且异常比例不低于0.4,则触发熔断,熔断时长为5秒。然后进入half-open状态,放行一次请求做测试。

总结
Sentinel熔断降级的策略有哪些?
1.慢调用比例:超过指定时长的调用为慢调用,统计单位时长内慢调用的比例,超过阈值则熔断
2.异常比例:统计单位时长内异常调用的比例,超过阈值则熔断
3.异常数:统计单位时长内异常调用的次数,超过阈值则熔断

posted on 2021-10-07 09:05  Ruthless  阅读(1587)  评论(0编辑  收藏  举报