1.背景:
同样是写代码,为什么互联网公司对技术的要求要比普通公司高,工作压力也更大。主要的原因就在于性能。
实现一个功能有一百种方式,在这一百种方式当中,有的复用性高,有的代码流程清晰,有的代码稳定,有的代码高效,互联网工资最注重的就是稳定和高效。
因为用户对于app时间的反映是特别敏感的,举个例子,早年12306为什么被这么多人诟病,主要原因就在于性能不高并且不稳定,导致用户体验特别差。
本文首先先谈一谈性能。
想要清晰的描述一个现象,最重要的方法是量化。把用语言描述的模糊的指标量化为可以用数字来表示的指标
如果评价一个人学习的好坏,不能简单地用 优良可差来描述,应该把成绩量化成分数,才能更清晰的描述一个人的学习成绩。
代码的性能同样也是如此,所以就有了几个基本的描述指标,其中最基本的是在两个维度对服务进行描述的指标:
1、能力
2、耗时
所谓能力,就是该接口能扛得住多大的流量,为什么12306服务不稳定,不是因为12306的技术人员水平不行,主要的原因是春运抢票这个bug场景。每年春运开始,有无数的人在同时抢票。普通的小app根本无法想象这种场景。
如果你的服务能扛得住这么大的流量。说明你的接口能力强
但是光能扛得住也不行,如果一个用户买火车票,需要一个小时才能完成,即使能扛得住春运这个流量,那么用户体验也不行。
所以 你的服务既能扛得住这么大的流量,又能在很短的时间内完成服务,说明你的接口相对来说完美了。
对于系统的服务,这两个维度能能力上的量化就有了两个指标:qps和tp
2.指标的含义
QPS:Query Per Second 每秒查询率。
表示一个服务每秒钟完成的请求数量。
一次请求是什么:
对于程序来说,其工作的本质就是输入 处理 输出。所以,完成一次输入,处理,输出的过程,就是一次请求,也就是一次query
用户使用手机淘宝app查询商品的时候,在搜索栏输入nike,即发起一次请求,服务查询数据库,获取到信息,返回给用户,当用户看到的结果,也就是nike相关的商品信息显示在手机屏幕上的时候,一次请求完成。
用户使用12306订票,选好起点和终点后,点击查询,服务即查询库存,随后把当前的车次以及车票情况显示给了用户,这就是一次请求的完成
QPS是什么:QPS是一个数量,每一秒,完成多少次上面例子中的请求。QPS就是多少。 QPS本身只是一个数值,描述qps不能少了主语,什么东西的QPS是多少。对于后台服务来说,通常将 某个接口的qps是多少。
那么,qps是简单的用来形容服务的能力的吗?
我的一个接口 qps是10000,那就说明我的接口能力强吗?
并不是
qps是描述服务当前所处状态的指标。这一秒完成了100次请求,那么我的qps是100,下一秒完成了1000次,那么qps是1000,这是随着时间的推移而变化的一个指标
举个例子 对于淘宝商品查询服务,可能每天0点qps只有100,但是在双十一,qps可能有两万。
所以,qps只是用来描述当前服务一秒钟完成了多少次请求,并不能直接描述接口的性能。
那么,什么能描述接口的性能呢?
描述接口性能的是 接口的最大qps。
这是个固定的数值,这个数值如何得出的呢? 这个数值是在对服务对接口进行压力测试的时候得出的。
为了检验自己的服务的能力到底有多强,会对上线的代码进行压测,压测结果就是这个服务的最大qps。
这个值表示这个接口可以承受住一秒钟完成多少次请求。
举个例子,淘宝的商品查询接口,在压力测试的报告上面显示,最大qps是5000,那么 平时100左右的qps根本对这个服务造不成什么影响,只是挠痒痒。而双十一 qps达到两万后,很可能就会出现问题,因为压力测试中,最大qps是5000,现在用户每秒请求量大大超过了这个值,就容易造成系统崩溃。
怎么解决这个问题呢?
不断的迭代优化接口,或者换更好的服务器。让接口可以承受住这么大的压力
这就是qps:表示某个服务当前每秒钟给用户完成多少次请求。
最大qps:表示这个接口最大能承受住每秒钟完成多少次请求。
qps监控示意图
如上图所示,服务的qps等于5000. 表示这个服务每秒钟完成了五千多次用户请求。并且看趋势qps还不断在增加。
如果你压测报告上面qps是20000,那么是小case,完全能承受住,如果你的服务压测报告能承受的qps是9000,那当前值是9430,说明此时很危险。
那么为什么会出现当前qps比最大qps还高的情况呢?
有两种情况:
1.代码没压测就上线,自己并不知道最大qps是多少。
2.突然出现的某些事故或者场景如下图这种,明显是出现事故了 当前qps陡增
qps陡增示意图
这就是形容服务能力的qps指标。
而在时间维度形容服务耗时的另一个指标——tp,下期接着讲。
欢迎关注本头条号,我的愿望是,把我学到的知识转化成其他人的知识。通过这个过程,深入理解我的知识
头条名字起的不是太好,今后可能会更换。