性能 Performance:影响高可用的关键因素
一、网络性能
1.Throughput 吞吐量:高并发下的QPS/TPS。吞吐量一定小于等于服务器带宽。
并发数:系统同时处理的 请求数/事务数
QPS: Query per second 每秒请求数
TPS: Transfer per second 每秒处理事物数
TPS包括了从请求服务器->服务器处理->返回给用户这个过程,每秒能完成多少个这个过程就是多少TPS。
QPS是每秒内,对服务器发出多少请求,就是多少QPS。
2.Overhead 开销:包括 首次开销,每次开销。
HTTP/1.1协议中的长连接(keep-alive),首次建连接有3次握手开销,tcp的UCI(?)控制的开销等。
而后面浏览器发送的很多请求都会复用上一次的连接,相当于后面的 每次开销 就会比较小。
如HTTP/2.0 中,每次开销中还可以少传很多http的head头部,因为可以复用首次开销中传过的http头部.
二、用户感知到的性能
1.Latency 延迟:发起请求 到 接受到响应的时间。
可细分为:用户发起动作,对动作产生感知->建立连接 ->发送请求->接受响应,把响应展现给用户
2.Completion 完成时间:完成一个应用动作所花费的时间。
比如展示一幅很大的图片,是等所有的响应全部接收完,再渲染给用户;还是每次接收到一部分就渲染一部分。这两种方法的网络性能是一致的,但用户感知到的性能是完全不一样的。
三、网络效率
1.重用缓存:缓存不走网络,网络效率是最高的。
2.减少交互次数。
通过很多方式减少交互次数。
比如1次的请求响应中,把一些小的图片,直接做base64编码放到html文件中,作为一个http响应返回,就可以减少交互次数。
3.数据的传输距离更近。
比如建立更近的CDN(内容分发网络),就近访问数据中心中的一些服务,这时候网络效率是更高的。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
4.COD 按需代码:优秀的可拓展性和可配置性,提升用户可察觉性能和网络效率。
服务器在响应中发回处理代码,在客户端执行。
比如 与服务器交互的一些流程直接写成JavaScript,由用户的浏览器本地执行。
参考内容:
极客时间《Web协议详解与抓包实战》07,08