作为一名开发人员,仅仅了解开发语言是不够的。对于网络知识,服务器,数据库,中间件等等,都要有一定的了解,是什么,怎么用,为什么这么用,都应该知道。下面先来了解一下和网络相关的几个概率
TPS:一个request发起到响应响应的过程。官方解释就是:每秒事务处理量(TransactionPerSecond) 事务数/秒。事务很简单,就是request+response 的过程。
QPS:每秒的查询数量,官方解释是每秒查询率 (Query Per Second).
并发量:就是服务器同时处理请求的数量,并发简单点理解就是比如汽车过隧道入口,能同时容纳哦多少辆车进入,这就是并发。
吞吐量:从业务角度来说,可以用qps来代替。网络角度来说,就是 每秒带宽的多少
PV: page view 页面的每次浏览
RT:response time 响应时间
之间的联系:
一个tps最少可以产生一个qps
TPS=request/时间=QPS
并发量=QPS*RT
PV:1:每天总PV = QPS * 3600 * 6;2:每天总PV = QPS * 3600 * 8
场景演练:
秒杀平台,凌晨12点开始秒杀,12点10分结束,预计的用户量为10w人,每个用户停留时间为1分钟。
TPS=100000/10*60=166.67
并发数=166.67*60=10000
如果单台机器的支持的qps 为1000,则需要10台机器满足该次秒杀。
影响因素
cpu数量,内存大小,外部请求io,系统性能,数据库性能,系统设计,数据库设计,缓存设计,代码质量,等等。。。
提升系统的吞吐不仅仅从系统本身找原因,它是一个综合的,从请求到最后响应结束流过的每个环节都会存在瓶颈和可优化的地方。