SpringCloud-Alibaba学习(十):Sentinel流控与Dashboard配置

Sentinel流控

Sentinel 通过流量控制以及熔断降级来保护系统资源

流量控制(flow control):其原理是监控应用流量的 QPS 或并发线程数等指标,当达到设置的阈值时堆流量进行控制,避免服务被瞬时的流量高峰击垮,从而保障服务高可用性。

1、QPS超过阈值直接失败

QPS:queries per second,每秒资源被访问的次数

当访问资源的 QPS 超过阈值,直接进行限流,从而保护资源

image

image

上面设置规则:当每秒 QPS 大于 1 时触发流控,多余的请求直接失败

2、线程数超过阈值直接失败

当工作线程数(并发数)超过阈值,触发限流

image

使用 jmeter 压测可以看到请求被拒绝效果

image

3、QPS超过阈值关联失败

被流控资源受到关联资源的 QPS 影响,当关联资源的 QPS 请求超过阈值时,流控资源请求会拒绝。

image

使用 jmeter 调用资源 /test/get2,浏览器访问 /test/get
image
image

单独访问两个资源都不会被流控,反过来调用也不会被流控

4、线程数超过阈值关联失败

当关联资源正在工作的线程数(并发数)请求超过阈值时,流控资源请求会拒绝。

image

5、QPS 超过阈值链路失败

image

使用注解 @SentinelResource 添加监控资源

@Service
public class TestService {

    @SentinelResource(value = "testServiceResource")
    public String get() {
        return "service resource";
    }
}

image

调用发现流控不生效

需要添加配置项:

spring.cloud.sentinel.web-context-unify=false

流控生效抛出异常:

image

6、线程数超过阈值链路失败

image

7、Warm Up

Warm Up(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式,即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。

仅支持 QPS 限流

image

image

image

8、匀速排队

匀速排队方式会严格控制请求通过的间隔时间,即是让请求以均匀的速度通过,对应于漏桶算法。

image

注意:匀速排队模式暂时不支持 QPS > 1000 的场景

仅支持 QPS 限流

image

规则含义:QPS = 10 表示一秒内匀速通过 10 个请求,每个请求平均间隔 100ms,超时时间表示排队的请求最多等待时间,2s 超时表示排队中的请求最多 20 个,再多就会被拒绝。

简单计算方法:实际QPS / 超时时间s <= 阈值 说明请求可以全部执行,否则部分请求会被拒绝

posted @ 2022-07-06 12:32  originyuan  阅读(385)  评论(0编辑  收藏  举报