导言
近期,发出技能专题的邀约,我也是紧跟潮流,写了一篇关于网络协议的功能优化与功能评价的文章,本篇文章首要讲了三个大方向包含:网络协议的功能方针、功能优化战略、功能评价方法;并针对这三个方面进行深入的分析,希望与大家一起沟通共享。
一、网络协议的功能方针
1、推迟
推迟是衡量数据从源点到意图地所需时刻的方针。关于实时运用,如VoIP(语音通话)和在线游戏,削减推迟至关重要,由于它直接影响用户体会。
源主机和意图主机之间途径会由多段链路和多个路由器组成,所以网络时延首要由以下组成:
发送时延
传达时延
处理试验
下图为计算公式:
处理时延一般忽略不计,网络总时延中哪一时延占主导需求具体问题具体分析。
如下图举例:
当传输的数据量远远大于途径时,发送时延占主导要素 当途径远远大于传输的数据量时,传达时延占主导要素(如从地球向太空发送数据)
2、吞吐量
吞吐量是网络在单位时刻内处理的数据量。关于视频流媒体和大型数据传输,高吞吐量能够保证更流畅的体会和更快的数据处理速率。
吞吐量表明在单位时刻内经过某个网络(或信道、接口)的数据量。 吞吐量被常常用于对现实国际中的网络的一种丈量,以便知道实际上到底有多少数据量能够经过网络。 吞吐量受网络的带宽或额定速率的限制。
带宽为不受影响情况下,然而一般吞吐量受限制,还要在带宽的基础上进行削减。
吞吐量的巨细首要由防火墙内网卡,及程序算法的功率决定,尤其是程序算法,会使防火墙体系进行很多运算,通信量大打折扣。因此,大多数防火墙虽声称100M防火墙,由于其算法依托软件完成,通信量远远没有到达100M,实际只有10M-20M。纯硬件防火墙,由于采用硬件进行运算,因此吞吐量能够到达线性90-95M,是真正的100M防火墙。
3、带宽
带宽利用率反映了网络资源的有用运用。经过优化带宽利用率,能够削减网络拥塞,进步数据传输功率。
用来表明网络的通信线路所能传送数据的才能,因此网络带宽表明在单位时刻内从网络中的某一点到另一点所能经过的“最高数据率” 单位同速率也是bps
举一个生活中的小比方,假如平时家里带宽为800M,其实是指的是800Mbps或800Mb/s,真实速度其实要在带宽的基础上除以8即,800Mbps/8=100M/s(当然这是完全抱负状况,真实情况要以吞吐量计算)
4、利用率
利用率分为:
信道利用率
:表明某信道有百分之几的时刻稀有据经过网络利用率
:全网络的信道率用率加权平均
依据排队理论,某信道利用率增大,其时延也添加,所以信道率用率并非越高越好,一般让其保持在50%以下
利用率分为信道利用率和网络利用率
信道利用率
-
信道利用率
- 指出某信道有百分之几的时刻是被利用的(稀有据经过)
- 完全闲暇的信道的利用率是零
网络利用率
-
网络利用率:是全网络的信道利用率的加权平均值
-
信道利用率并非越高越好
- 过低会形成资源糟蹋
- 可是过高(当某信道的利用率增大时),该信道引起的时延也就迅速添加
二、功能优化战略
1、削减推迟
- 优化路由算法:选择更短或更快的途径以削减数据包的传输时刻。在面试中也是常常遇到这类问题,比较重要,需紧记!!
- 启用TCP Fast Open:TCP Fast Open是一种加速TCP衔接建立的机制,它能够在三次握手的第一次握手时就开端传输数据,然后削减衔接建立的时刻和推迟。
- 启用TCP窗口缩放:TCP窗口缩放能够添加TCP衔接的吞吐量,然后削减推迟。
- 启用TCP SACK:TCP SACK能够在网络拥塞时更好地处理数据包丢失和重传,然后削减推迟。
- 启用TCP BBR:TCP BBR是一种新的拥塞操控算法,能够在网络拥塞时更好地处理数据包丢失和重传,然后削减推迟。
-
运用更快的传输前言:比方光纤替代铜线,以削减传达推迟。
- 运用CDN(内容分发网络) :CDN是一组散布在全球各地的服务器,能够缓存网站内容并将其提供给用户。
- 运用紧缩:紧缩能够减小文件的巨细,然后削减下载时刻。常见的紧缩格局包含Gzip和Brotli。
- 运用HTTP/2:HTTP/2是HTTP协议的最新版别,它能够削减推迟并进步功能。HTTP/2运用多路复用技能,能够一起传输多个恳求和呼应,然后削减了网络推迟。
- 运用WebP格局:WebP是一种新的图画格局,能够比JPEG和PNG格局更快地加载。WebP图画一般比JPEG和PNG图画更小,能够更快地下载。
- 运用视频和音频流:关于大型媒体文件,能够运用视频和音频流来削减加载时刻。用户能够鄙人载文件的一起开端观看视频或听取音频。
- 运用预加载:预加载能够在用户恳求之前加载资源,然后加速网站的加载速度。预加载能够经过在HTML中运用标签来完成。
-
削减处理时刻:优化网络设备,削减数据包处理时刻。
- 削减网络恳求次数:经过兼并多个恳求,削减网络恳求次数,然后削减网络推迟。例如,能够将多个小文件兼并成一个大文件进行传输,或许运用CSS Sprites技能将多个小图片兼并成一张大图片进行加载。
- 削减DNS查询次数:DNS查询也会消耗时刻,能够经过削减DNS查询次数来下降网络推迟。例如,能够将静态资源的域名与主站点的域名分隔,然后削减DNS查询次数。
2、提升吞吐量
- 负载均衡:经过涣散流量,防止单一途径的过载。
-
硬件负载均衡:运用专门的硬件设备(如负载均衡器)来完成负载均衡。这些设备能够装置在网络入口处,依据特定的算法将流量分发到不同的服务器或网络节点。特色:硬件负载均衡一般具有高功能和可扩展性。
-
软件负载均衡:经过在软件层面完成负载均衡,将流量分发到多个服务器或网络节点。这种方法能够经过在操作体系或运用程序中进行配置来完成。软件负载均衡能够依据不同的算法(如轮询、随机、加权轮询等)来分配流量。
-
反向署理:运用反向署理服务器来接纳客户端的恳求,并将其转发到后端服务器。反向署理服务器能够缓存静态内容,削减对后端服务器的恳求,并进步体系的吞吐量。
-
网络晋级:运用更高效的网络设备和技能,如晋级到更高速的路由器和交换机。
- 晋级网络设备:最简略暴力的方式就是替换更高功能的网络设备,以提升进步网络吞吐量和呼应速度。
- 添加带宽:咱们也能够经过添加网络带宽,能够容纳更多的网络流量,进步体系的吞吐量。
- 网络负载均衡:咱们经过在网络层完成负载均衡,能够将网络流量分发到多个网络设备或服务器,经过平衡负载并进步体系的吞吐量。
-
零复制技能(重要) :在网络传输过程中,采用零复制技能能够防止不必要的数据复制,削减体系资源的消耗,然后进步网络吞吐量。面试中也常常遇到零复制,能够简略了解一下,零复制指在进行数据 IO 时,数据在用户态下经历了零次 CPU 复制,并非不复制数据。经过削减数据传输过程中 内核缓冲区和用户进程缓冲区 间不必要的CPU数据复制 与 用户态和内核态的上下文切换次数,下降 CPU 在这两方面的开支,释放 CPU 履行其他任务,更有用的利用体系资源,进步传输功率,一起还削减了内存的占用,也提升运用程序的功能。
-
流量办理:对网络流量进行辨认、分类、优化和操控的相关技能,以进步网络功能和用户体会。
-
流量辨认和分类:经过辨认和分类网络流量,能够了解流量的来历和类型,如数据、语音、视频等,以便进行分类处理和优化。
-
流量操控:经过流量操控技能,如QoS(Quality of Service)和队列办理,能够优先处理重要的流量,防止网络拥堵和推迟,进步体系的吞吐量。
-
流量优化:经过优化网络流量的传输和处理方式,能够进步网络功能和吞吐量。例如,运用紧缩技能削减数据传输量,或运用缓存技能削减重复的数据传输。
-
流量操控运用:针对特定的运用程序进行流量操控,以保证关键事务流量(如VoIP、视频会议等)的优先传输,并防止对其他流量形成干扰或影响。
3、进步带宽利用率
-
数据紧缩:经过紧缩数据削减传输量。常见的数据紧缩算法有Gzip、Deflate等。在网络传输过程中,服务器能够对数据进行紧缩,客户端则需求解紧缩,以完成数据的传输和解析。一起,也需求留意紧缩和解紧缩过程中的功能和资源消耗,防止对体系功能产生负面影响。
-
Gzip:gzip是⼀种⽆损紧缩算法,其基础为Deflate,Deflate是LZ77与哈弗曼编码的⼀个组合体。它的基本原理是:关于要紧缩的⽂件,⾸先使⽤LZ77算法的⼀个变种进⾏紧缩,对得到的成果再使⽤哈夫曼编码(依据情况,使⽤静态哈弗曼编码或动态哈夫曼编码)的⽅法进⾏紧缩。
-
-
缓存技能:在网络边缘存储常用数据,削减重复传输。缓存技能能够将常常访问的数据或资源存储在离用户更近的地方,以削减每次恳求的处理时刻和网络流量,进步带宽利用率。
-
浏览器缓存:浏览器能够将常常访问的网页内容或资源缓存到本地,以削减每次恳求的处理时刻和网络流量。经过设置HTTP头中的缓存相关字段,如Cache-Control和ETag,能够操控浏览器缓存的行为。
-
反向署理缓存:反向署理服务器位于用户与方针服务器之间,可是关于用户而言,反向署理服务器就相当于方针服务器,即用户直接访问反向署理服务器就能够获得方针服务器的资源。
-
- 数据库查询缓存:数据库查询缓存能够将频繁履行的数据库查询成果缓存在内存中,削减对数据库的访问次数。常用的有:redis、memcache和ehcache;这儿就不具体介绍了,感兴趣的能够看我主页的redis专栏了解:redis详解专栏