网络优化

2019-09-30  本文已影响0人  修塔寻千里

网路I/O

1、I/O模型

“一切皆文件”,Linux内核会把所有外部设备看做一个文件来操作,在网络I/O中系统对一个Socket的读写也会有相应的描述符,称为Socket fd(Socket描述符)。整个I/O流程分为两个阶段:

2、数据处理


跟文件I/O一样,网络I/O也使用了中断,它同时使用了软中断和硬中断。

网络性能评估

1、延迟与带宽

2、性能测试

移动端优化

1、网络优化点

2、网络库

网路库的核心作用:

大网络平台

网络优化不仅仅是客户端的事情,需要前后端一整套解决方案。下图是蚂蚁的mPaaS的网络架构,所有的网络请求都会先经过统一的接入层,再转发到业务服务器。这样我们可以在业务服务器无感知的情况下,在接入层做各种各样的网路优化。


1、HTTPDNS

DNS解析是网路请求的第一项工作,默认我们会使用运营商的LocalDNS服务。它存在一些问题:

2、连接复用

DNS解析之后,进入创建连接环节,创建连接需要经过TCP三次握手、TLS密钥协商,建立连接的代价是非常大的,连接复用,不用每次请求都重新建立连接。
网路库对连接的管理是将连接放到连接池中,而不是直接释放掉,当遇到相同的地址和端口请求时,就直接从连接池中取出连接直接发送和接收数据,减少建立连接的耗时。
实现方案则是利用HTTP协议中keep-alive,而HTTP/2.0的多路复用则可以进一步提升连接复用。它复用的这条连接支持同时处理多条请求,所有请求都可以并发在这条连接上进行。



使用HTTP/2需要解决两个问题,一是同一条连接只支持同一个域名,一个是后端支持HTTP/2需要额外的改造。这个时候我们只要在接入层做改造,接入层数据转换到HTTP/1.1再转发到对应域名的服务器。


3、压缩与加密

压缩

对于HTTP请求来说,数据主要包括三个部分:

安全

HTTPS优化:

4、其他优化

移动端监控

1、如何监控网络

方法一:插装
方法二:Native Hook
一般会hook网络相关的几个方法

2、如何监控流量

一般通过TrafficStat类,TrafficStat是Android API8加入的接口,用与获取整个手机或者某个UID从开机算计的网络流量。TrafficStat的实现原理是读取proc,并将目标UID下面所有网络接口流量相加。除了流量信息,通过/proc/net我们还可以拿到大量网络相关的信息,如网络信号强度,电平强度等。

大网络平台监控

1、客户端监控

2、接入层监控


监控原因:

3、监控报警

上一篇 下一篇

猜你喜欢

热点阅读