重要、重要、重要
Sentinel中文文档:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D
基本介绍
前一篇讲了怎么部署和配置Sentinel,接下来我们看看Sentinel怎么进行流控。
流量控制(flow control),其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
- 资源名:唯一名称,默认为请求路径
- 针对来源:Sentinel可以针对调用者进行限流,填写微服务名称。若为
default
则不区分调用来源 - 阈值类型/单机阈值:
- QPS(每分钟请求的数量):当调用该api的QPS达到阈值的时候,进行限流
- 线程数:当调用该api的线程达到阈值的时候,进行限流(Tomcat接受请求时是从线程池中获取一个线程来处理请求的,当设置的线程达到我们设置的阈值是才会触发限流)
流控模式
- 直接:api达到流控条件时,直接限流。如下图,当/testA达到限流阈值时就触发限流。我们阈值设置的是5,当前端访问/testA的QPS达到5时就会触发限流。
- 关联:当关联的资源达到阈值时,就限流自己。如下图,当/testB达到限流阈值时,/testA就触发限流。我们阈值设置的是5,当前端访问/testB的QPS达到5时,/testA就会触发限流。
- 链路:记录指定链路上的流量
流控效果
- 快速失败:直接失败,抛出异常。
- Warm Up:根据codeFactor(冷加载因子,默认值为3)的值,从阈值/odeFactor,经过预热时长达到设定的QPS值。
- 排队等待:匀速排队,让请求匀速通过。当阈值设置的类型为QPS时才有排队等待这个设置,否则无效。
其他
1.参考代码:https://github.com/TianLuhua/springCloud2020.git
2.Sentinel:需要自己下载,然后跑起来
3.Sentinel客户端:cloudalibaba-sentinel-service8401