我叫QPS,初次见面

自我介绍

QPS,query per second,每秒的请求数。当我看到这里的时候很不明白,每秒?按照我的理解应该是计算开始的时间到1秒钟这中间的请求数,但是怎么算是开始的时间,是指服务启动的时间还是第一次请求开始的时间,至少对于我来说讲述的并不是很明确。在比如,有一个时间线,第二秒的后500ms到第三秒的前500ms这样子也算是一个每秒的区间,那这之间的请求数算是咋回事呢?在说说QPS的目的,有人说是为了防止恶意刷取,增加项目负载,既然是控制刷取,那么我觉得这个控制应该是从别人第一次请求的时间开始算起,当它在1秒内多次请求达到上限后被服务限制了,这才算是合理的,所以我觉得应该是从第一次请求开始的时间经过1秒后的请求数,纯属个人理解。最近接触的项目中有提到QPS,说是恶意刷取,更准确的讲应该是用来做流量控制,这个词语给人的感觉更专业!而它算的时间也是从第一次请求开始算起的。

模拟QPS

方便理解,模拟了一个场景来实现QPS的流量控制效果。
假设控制在1秒内不多于Limit个请求,Limit代表请求上限。

public boolean checkQps(){
    if (count < limit ) {
        count++;
        total++;
        return true;
    }

    if (System.nanoTime() - start > duration) {
        total++;
        reset();
        return true;
    }

    return false;
}

这只是其中的一部分代码,也是最主要的,要想看所有的可到该文章的底部点击源码下载即可跳转到相应的位置。

再见朋友

QPS是很多网站来衡量吞吐量的其中一个因素,基本上都会有一个统计图或者曲线图之类的,和QPS有关系的是另外一个朋友-并发数,目前笔者还没有去了解它,对于并发这块的知识点还远远不够,所以还早呢。又到了说几句鸡汤的时候了,技术是永远也学不完的,慢慢来,有一点点的进步总比呆坐着好,加油自己,加油每一个人。

源码下载

posted @ 2020-12-21 20:46  zliawk  阅读(57)  评论(0)    收藏  举报