根据4-3节的图,限流不是应该在网关中实现么?
来源:6-8 sentinel限流实战
zjg23
2019-10-10
1、根据4-3节的图,限流不是应该在网关中实现么
2、对“限流”的意义不太理解。
最近在看Little’s Law定律,结合着jmeter实测接口,发现在系统稳定时Little’s Law定律是正确的。它的公式为:并发数(jmeter中的线程数)=吞吐量*平均响应时间。
我现在的疑问是:“限流”限制的是并发数呢,还是吞吐量?
比如并发数100时,吞吐量为1000tps,接口服务运行正常,出错率为0;
当并发数提高到2000时,接口服务不再正常提供服务,出错率大于0。
按照这种场景估计,假设一个人可以用性能测试工具批量跑你的接口,他把并发数提高到很高的话,那你的接口服务是不是就不正常服务了呢?怎么限制这种行为呢?
(不考虑接口防刷的方法,或者说足够多的真实用户突然同一时间都用你的接口,这种场景下怎么限制流量呢?)
在服务中集成限流组件超过流量直接拒绝服务,但是按我的理解,拒绝服务本身也是有吞吐量上限的,如果达到这个上限,服务不是也不能正常提供服务了么?
写回答
1回答
-
1. 我们的做法是在两个地方限流,在网关针对应用限流,也叫粗粒度限流,目的是避免攻击压垮应用。在应用内做服务限流,也叫细粒度限流,目的是避免某个服务占用所有的资源。第六章还没完全录完,我这里出了点问题,章节最后会有一个总结再梳理一下整个方案的。
2. 限流既可以限制并发数,也可以限制吞吐量,在sentinel上有选项,QPS就是吞吐量,线程数就是并发数,可以对一个资源指定多个规则,任何一个规则达到阈值都会触发限流。
012019-10-15
相似问题