Cronet网络库系列(四):移动网络弱网优化综述

蒂卡波湖牧羊犬

弱网指标:

以下6个指标基本覆盖了网络状态。不同的业务会侧重不同指标,例如视频传输可能将吞吐量放首位,IM可能将rtt指标放首位。
指标的具体数据可以借助一些网络测试工具进行模拟,比如腾讯的WeTest, 苹果的 Network Link Conditioner,Facebook 的 ATC(Augmented Traffic Control),来获取不同场景的指标数据。当然最终还是在发布产品中建立上报体系监控实际运行数据。

  1. httprtt(http Round-Trip Time)又名 TTFB(Time to first byte),指从客户端请求的第一个字节开始发送到接收到 http header 的第一个字节的时间差
  2. tcprtt(tcp Round-Trip Time)指客户端 tcp 信道第一个字节发送到接收第一个字节的时间差
  3. throughput,中文名字吞吐量,它是用来衡量单位时间内成功传送数据的数量,是可以比较客观的衡量网络质量的指标。吞吐量 =(获 bits 结束大小 - 获 bits 开始大小)/(获 bits 结束时间 - 获 bits 开始时间)。
  4. signal strength,这里指的是无线信号强度
  5. bandwidth-delay product,中文名带宽时延乘积指的是一个数据链路的能力(throughput)与来回通信延迟(rtt)的乘积
  6. ICMP rtt,也就是ping耗时
注:前5个指标Cronet在NetworkQualityEstimator中有实现,ping的实现可以参考busybox源码,https://git.busybox.net/busyb...

参考自:https://www.infoq.cn/article/...*DsymqbGvy

弱网优化:

一次网络请求大致过程是:(解析代理)->DNS解析Host->建立连接->通过协议传输->后台或CDN逻辑->数据返回->结束连接

终端优化

  1. DNS优化。包括接入大厂的HTTP(S)DNS,访问最近的DNS服务器;内置DNS服务IP列表;缓存DNS;依次并发多DNS请求,取最快的一个(腾讯mars复合连接策略)。
ref: https://juejin.im/post/5cbfda...
  1. 预连接/连接复用。包括Http/TCP的keep-alive,减少Http/TCP建立连接的耗时。
  2. 多级缓存。Http Cache、应用层Cache。
  3. 请求优先级。合理调度并发数量。
  4. HTTPS SSL session持久化以及复用。减少SSL握手时间。

终端后台协议

  1. QUIC(Quick UDP Internet Connections)基于UDP实现传输应用层协议。优点有减少握手次数、解决TCP丢包时队头拥塞问题、连接迁移等,是Http 3.0标准协议的核心。

因暂无时间配置个人服务器,而且业务短期内也不会切QUIC,所以这里引用百度的优化数据,也有其他开发者资料显示弱网下UDP丢包更严重。

弱网优化的收益我们主要从上面讲到的进入弱网状态后的手段来看,包括开启 QUIC,QUIC 预连接,开启复合连接。
1)弱网下开启 QUIC 后,网络连接成功率提升 0.01%,平均耗时降低 23.5%。
2)弱网下开启 QUIC 预连接后,QUIC 协议的 pv 从 37 万涨到 90 万。
3)弱网下开启复合连接后,bad 状态下耗时降低 2.5%,offline 状态下耗时降低 7.7%。
ref:https://www.infoq.cn/article/...*DsymqbGvy
  1. 请求合并。包括请求域名的合并,减少DNS查询时间;包括请求次数的合并,例如GraphQL。
  2. 心跳长连接,用于消息push等及时下发。微信Mars就是通过定时发送心跳包跟后台建立消息通道。
ref:https://juejin.im/post/5c6234...

后台优化

  1. 数据量优化。包括压缩数据、增量下发、压缩请求头、304检查。
  2. 服务器部署区域。

Cronet功能

1.支持比较全面的网络状态监控,包括http/tcp rtt、吞吐量、信号强度、系统网络状态变化。通过ExperimentalCronetEngine.enableNetworkQualityEstimator开启。
2.基本支持上述的终端优化。
3.支持HTTPS/SPDY/QUIC等协议。

其他参考文档:
弱网优化综述
http://yunxin.163.com/blog/52im-2/
通讯基础
http://www.52im.net/thread-1413-1-1.html

阅读 1.7k
23 声望
0 粉丝
0 条评论
你知道吗?

23 声望
0 粉丝
文章目录
宣传栏