背景
虽然日常curd boy,但是也要有点追求,没有场景我们自己造场景,那我就定一个200万并发秒杀的场景吧。
常用术语
1并发量
就是来了多少人啊,比如618,xxx直播间某件商品有100万人秒杀,那并发量就100万,但是不是说你来了100万我就能同一时间全给你处理了,咱们可以10万10万的处理。
2吞吐量
吞吐量是单位时间内系统处理客户请求的数量。说白了就是1秒内能处理多少。
在并发量较低的情况下,吞吐量与并发量成正比,此时后台处理能力充足。当并发量到达一定的数量后,服务器处理能力不足(线程切换),吞吐量反而降低。
比如刚开始并发是10个,每个请求的响应时间是0.01,那吞吐量就是1000,后来加大了并发变成了100请求的响应时间还是0.01那吞吐量就是10000,后来把并发加到了10000每个请求响应时间变成1.1秒,那吞吐量就变成了9000左右。
TPS、QPS
如果说kg是重量的标准,那么TPS就是QPS的衡量标准,你说服务器的吞吐量大,怎么叫大,100qps/s 比 50qps/s 大,有理有据才可以。
TPS:Transactions Per Second(每秒事务处理数),指服务器每秒处理的事务次数。一般用于评估数据库、交易系统的基准性能。
QPS:Queries Per Second(查询量/秒),是服务器每秒能够处理的查询次数,例如域名服务器、接口、Mysql查询性能。
那tps和qps有什么区别呢?
这里引用别人的一个回答:
分享下自己的理解:TPS 也就是 transactions per second,反映的是做一个事情,1s能做多少次。它更关心的是一个事情能够做多少次。比如说,我们转账,A用户向B用户转账,1s 能够支持多少笔这样的操作。以转账举例:支付系统有1个接口,支持A向B转账;账务系统有1接口,支持某个用户减少多少钱。我们正常的转账流程,就是支付系统调用2次账务系统,A用户减钱1次,B用户加钱1次。业务人员不懂这些专业技术词汇,提出需求说就要0点支持10W笔转账操作,那么技术人员一般怎么描述,那就是:
支付系统该转账接口支持 TPS 10W。
账务系统该转账接口支持 TPS 20W。
QPS 也就是 queries per second,字面意思反映的是每秒能够查多少次。因为有这个 query 查询这个单词,无论看 wiki 还是 百度百科,都说的是针对查询的操作,1s能够支持多少次。我觉得提到这些术语主要是要知道他想表达什么。比如你的老大和你说,我们这个转账业务要支持 10W 的 TPS,你要分清楚是整个业务 10W TPS,还是说打到我们系统的接口量就是 10W TPS,因为业务支持的量和调用到我们系统的接口不一定1:1。比如你的同事和你说,我们这个查询接口支持 100W TPS。虽然按照定义来说,用 QPS 来表达更合适,但是你知道他想表达的就是这个接口支持这么多 QPS 就可以了。有人和你吹牛说,系统支持多少多少 QPS。你就可以留个心眼,一般查询操作相对来说还是比非查询操作简单点的,甚至说加缓存后都可能没打到DB,所以也没什么了不起。但是如果说 TPS 的话,一般来说,技术含量还是会相对高些的。