在评估系统性能的时候,我们经常会听到 QPS、TPS、RT、吞吐量等等一些概念,包括在一些面试场景下可能也会遇到这些概念,我们来稍微梳理一下。
做一个简单的概念扫盲。
一 QPS
QPS(Queries Per Second) 是每秒的查询率,它表示一台服务每秒响应的查询的次数。
具体来说,QPS 反映了系统在高并发环境下处理请求的能力。一个高 QPS 的系统能够在单位时间内处理更多的请求,从而提供更好的用户体验和更高的吞吐量。相反,QPS 较低的系统可能在面对大量请求时会出现响应延迟或请求失败的情况。
举个栗子:
假设服务器 1 秒响应 500 次请求,那么此时 QPS 就是 500。
二 TPS
TPS(Transactions Per Second) 表示每秒事务处理的数量,一个事务表示客户端向服务器发送请求,然后响应的过程。
举个栗子
比如用户在 jd 上下单的时候,每当用户下单请求被服务器接受到之后,服务需要保存订单、扣减商品库存、确认支付等等这一些列的操作,所有过程都完成后,将结果响应给客户端。这个完整的过程就是一次事务,TPS 则表示每秒内可以完成多少次这样的请求。
整体上来说,一个 TPS 包括了三个部分:
用户请求服务器 服务器自己的内部处理 服务器返回给用户
这样一个完整的过程就是一个 TPS。
有的小伙伴分不清 TPS 和 QPS,简单来说是这样:
如果是对一个查询接口压测,且这个接口内部不会再去请求其它接口,那么 TPS = QPS,否则,TPS ≠ QPS。 如果是容量场景,假设 N 个接口都是查询接口,且这个接口内部不会再去请求其它接口,QPS = N * TPS。
第一点好理解,针对第二点我举一个简单的案例:假设请求一个页面,这就是一个 TPS,这个页面中又发送了 5 次请求向服务器加载数据,那么 QPS=TPS*5
。
三 RT
RT(Response-time)响应时间,这个表示执行一个请求从开始到最后收到响应数据所花费的总时间,即从客户端发起请求到收到服务器响应结果的时间。
如果忽略网络传输时间,响应时间是处理时间和等待时间的总和,其中:
处理时间是完成请求要求的工作所需的时间 等待时间是请求在被处理之前必须在队列中等待的时间
RT 是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。
举个栗子
这里,RT = T2 - T1。
四 并发数
系统并发数是指在某一时刻,系统中能够同时处理的请求数量。这个指标通常用来衡量系统在高负载情况下的性能和处理能力。
五 几个概念之间的关系
除了前面第二小节和大家介绍的 TPS 和 QPS 之间的公式之外,再给小伙伴们两个公式:
RT = 并发数/QPS QPS = 并发数/RT
好啦,几个常见的概念,小伙伴搞懂了吧~
Redis 实战
Redis 博大精深,然而很多时候我们说到 Redis,却只知道缓存或者分布式锁,面试的时候也只能从这两个角度去准备。
但是在实际面试中,Redis 这块能够发挥的地方可太多了:
Redis 中 String 类型使用了什么样的数据结构? 为什么每种数据类型几乎都设计了两种以上的数据结构? 为什么要延迟双删?原因是什么 RedLock 解决了什么问题,为什么现在又被废弃了?现在用什么? watchdog 什么情况下会失效? Redis 挂了怎么办? 如何实现百万级排行榜? 。。。
还有很多,我就不一一列举了。
所以松哥今年出了一个 Redis 课程,取名就叫《Redis-不止缓存》,希望能和大家分享一下 Redis 在缓存这个领域之外的一些用法。
这套课程基于目前最新版的 Redis7 录制,从基本用法到原理分析讲了很多,大伙来看下目录:
课程有配套的源码和笔记,同时为了确保大家确确实实能够学会并且掌握 Redis,也提供了答疑群,实时解答课程相关的问题。
课程原价 799,限时 499。
关于松哥
9 年程序员生涯,Java 畅销书作者,华为云最具价值专家,华为开发者社区之星,GitHub 知名项目作者。
目前产品有 Java 项目课程、Java 简历指导、1V1 模拟面试等,如有需求欢迎来勾搭。