外链论坛

 找回密码
 立即注册
搜索
查看: 49|回复: 1

移动端IM研发者必读(三):爱奇艺移动端跨境弱网通信的优化实践

[复制链接]

3016

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139149
发表于 2024-8-31 04:45:16 | 显示全部楼层 |阅读模式

本文由爱奇艺技术团队分享,作者isno,原题“爱奇艺海外App的网络优化实践”,下文进行了排版和内容优化等。

1、引言

做海外市场,尤其目的是面向全世界的用户,网络的重要性不问可知。试想一个移动端应用,例如即时通讯IM,聊天信息的本质便是人跟人在说话,一条信息从发送到接受需要10秒的时间,这恐怕会让用户崩溃,随之便是被无情地卸载,开拓海外市场那便是做梦了。

这次分享的文案内容,基于爱奇艺面向全世界用户推出的国际版,在海外跨境网络环境繁杂的前提下,针对性地做了一系列弱网优化实践,取得了不错的效果,这里总结分享咱们有些做法和优化思路,期盼对你有所帮忙

总结下来,跨境弱网优化实践的几个核心便是

1)能不请求网络就不请求;2)请求的链接目的 0-RTT;3)请求的内容越小越好。

正文内容咱们将逐个技术点展开了分享。

2、系列文案

本文是系列文案中的第 3 篇,本系列文案的大纲如下:

《移动端IM研发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”》《移动端IM研发者必读(二):史上最全移动弱网络优化办法总结》《移动端IM研发者必读(三):爱奇艺移动端跨境弱网通信的优化实践》(* 本文)

倘若您是IM研发初学者,剧烈意见首要阅读《新手入门一篇就够:从零研发移动端IM》。

3、 跨境弱网样本摸底

在 App 初期版本内增多请求链路的采样。样本数足够的状况下,能够清楚你要推广的市场是怎么样的环境。样本数据让咱们清楚发掘了各个国家、地区网络的问题,在大规模宣传和投入前,做好 App 的基本工作非常重要。

海外用户至海外数据中心的网络延迟(这是监测节点数据,用户端延迟更高):

海外重点国家、地区移动网络状况

这些问题重点是:

1)运营商劫持严重,DNS 劫持、HTTP 劫持;2)移动端网络繁杂 ,东南亚的网络基本建设还待改善;3)低端 Android 机有必定的占比,数量级别影响决策;4)国际网络用户端到服务器的延迟高。

在初期周期,技术工作的核心是处理以上问题,为后续的运营做好基本建设。由于业务接口大部分为 HTTP 形式,就起始围绕 HTTPS 进行针对性改进。

一个HTTPS请求周期分析:

1RTT(DNS)+ 1RTT(TCP 握手)+ 2RTT(TLS1.2)+ 1RTT(HTTP 链接)

倘若以端到服务 50ms 延迟为例:

一个 HTTPS 的接口延迟 = 350ms = 50*5+ 100ms(服务端)

倘若目的是一个非国内用户,打开首页需要 1.1s, 这个时间显然有点长。

下面起始进行技术改进的正文,以下是概括技术性优化的关键点:

4、基本链路的改进优化

4.1DNS 优化调节

DNS 的解析改为 HTTPDNS,DNS 的改进上线后观察初始连接请求提高 17% 的效率。

目的重点是:

1)处理域名劫持问题 (东南亚地区回传的数据表示有不少劫持);2)处理 LocalDNS 非就近分配问题;3)结合业务能够做解析预热。

4.2传输层的优化调节

MTU 的问题 :

1)Client 端和 Server 端区别的 MTU 值会引起丢包率过高。AWS 某些场景实例默认巨型帧:MTU 是 9001,但接收端默认 1500,此时候就会显现有些丢包的现象;2)倘若你用了多个云商服务,用 VPN 组网,IP隧道封装的数据临界 1500,又会导致丢包、包重传问题;3)最严重的状况:部分网络封杀 ICMP 协议,引起 MTU 没法自动协商。

TCP 拥塞掌控优化:

拥塞窗口 CongWin 是未接收到接收端确认状况下连续发送的字节数; 。CongWin 是动态调节,取决于带宽和延迟的积,例如 100MB 的带宽 100ms 的延迟环境。

时延带宽积 = 100Mbps*100ms = (100/8)*(100/1000) = 1.25MB

理论上 CongWin 窗口能够最大化到 1.25MB。CentOS 默认CongWin = 20*MSS,在 29KB 上下,离上限 1.26MB 差太多了,默认值上调TCP的起步会更快。

TCP 快速打开 (TCP Fast Open:TFO):

TCP 的 keepalive 下依然会有链接断掉重建的状况,TFO 是针对这种状况的优化。

TFO 的原理机制:

5、应用层的改进优化

5.1HTTP 的优化

HTTP1.1 有个 keep-alive 功效是复用 TCP 链接,减少新建的消耗,针对浏览器的业务比较适用,但针对移动端这种时间分散的请求,大部分请求还是新建连接。

HTTP1.1 的串行机制有头部阻塞的问题。

5.2SSL 层优化

尽可能升级到 TLS1.3(微X的TLS1.3实践:《微X新一代通信安全处理方法:基于TLS1.3的MMTLS详解》),利用 Pre-shared Key 机制,开启 ssl_early_data 能够进一步优化 “0-RTT ”,倘若没法升级 TLS 版本,优化密钥算法为 ECDHE,运算速度快,握手的信息往返由 2-RTT 减少到 1-RTT,能达到与 TLS1.3 类似的效果。

TLS 版本的区别:

5.3升级 HTTP2.0

几个重要的改进点:

1)分帧传输;2)多路复用;3)头部压缩。

多路复用:

在 HTTP/2 中,两个非常重要的概念:帧(frame)和流(stream)。帧表率着最小的数据单位,每一个帧会标识出该帧属于哪个流,流便是多个帧构成的数据流。多路复用,便是在一个 TCP 连接中能够存在多条流。这些改进能够避免 HTTP 队头阻塞问题,加强传输性能。

头部压缩:

研发人员倘若重视对 header 内容的掌控,会导致 header 内容失去控制的现象,客户端极容易存储一个非常大的 Cookie。

HTTP2 的分帧传输机制:

这个是非常有效的方式。

尽可能离用户近期,利用边缘节点对路由、链路进行优化,加强动态服务的效率。相较于直连模式,运用动态加速后,P90 的接口延迟效率提高了 60%。

爱奇艺海外动态加速的效果提高(请求时间为秒):

针对失败的请求,启用兜底的协议 QUIC kcp。

客户端的失败率在 3% 上下,对这部分请求运用 UDP 协议兜底尝试,在咱们的观察成功率提高了 45%。

6、传输内容的优化

6.1应用 Brotli

由于预置了字典,在同等级别的压缩率下,对比 gzip 最少提高了 17% 的压缩比,接口平均的 Content-Size 由 30KB,降至 18KB。

6.2接口由 JSON 改为 Google Protobuf

应用 Protobuf 的重要原由是解析效率比 JSON 最少高四五倍,在节点深度和数据量大的状况下更显著

重视 Protobuf 内部的 varint 压缩,只对少于 128 的数字进行可变长压缩。实质效果不大,生产环境倘若数据量大,外层的压缩如 gzip 不可少。

PS:关于Protobuf的资料,能够进一步阅读《IM通讯协议专题学习》。

6.3照片格式升级为 WebP

在应用 WebP 的同期,降低海报照片的质量,实践看海报的 quality 设置为 85% 肉眼难以分辨,相对同质量的 JPEG PNG ,能够最大减小 45% 的体积。

应用效果显著。App 打开首页照片的加载提高肉眼可见。

7、业务层面的优化改进

7.1减少不必要请求:

有些通用内容,如导航、频道,一般由运营人员主动更新。

如下图:增多一个起步周期请求的接口,里面放入内容更新的时间戳,与本地 cache 的时间戳有差异,则异步请求更新。

7.2区别用户网络,适应区别的策略

详细作法是:

1)针对视频,非 WiFi 默认启播码率为 360P;2)针对海报,后端接口供给两种质量的 Url,WiFi 高质,4G 低质。

7.3更加多的业务优化

增多请求重试、调节 HTTP 的超时时间,请求缓存等等 这些能够按照业务的需要进行调节

8、本文小结

爱奇艺海外版APP经过一系列细节优化,用户体验连续提升。用户接口延迟、客户端失败率、视频播放成功率一系列的关键指标得到很大的改善。这助力爱奇艺在东南亚多个国家的应用市场排名升至 TOP 1。

另一 App 优化、Server 延迟优化、制品体验的改进,这一系列仅有相辅相成才能够最大化提高用户体验。

9、参考资料

[1] TCP/IP详解 - 第17章·TCP:传输掌控协议

[2] 网络编程懒人入门(三):快速理解TCP协议一篇就够

[3] 新手入门一篇就够:从零研发移动端IM

[4] 现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保证

[5] 全面认识移动端DNS域名劫持等杂症:技术原理、问题根源、处理方法

[6] 美图App的移动端DNS优化实践:HTTPS请求耗时减小近半

[7] 百度APP移动端网络深度优化实践分享(一):DNS优化篇

[8] 百度APP移动端网络深度优化实践分享(二):网络连接优化篇

[9] 百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇

[10] 爱奇艺移动端网络优化实践分享:网络请求成功率优化篇

[11] 美团点评的移动端网络优化实践:大幅提高连接成功率、速度等

[12] 淘宝移动端统一网络库的架构演进和弱网优化技术实践

[13] 谈谈移动端 IM 研发中登录请求的优化

[14] 移动端IM研发需要面对的技术问题(含通信协议选取

[15] 简述移动端IM研发哪些坑:架构设计、通信协议和客户端

[16] 微X对网络影响的技术实验及分析(论文全文)

[17] 腾讯原创分享(二):怎样大幅压缩移动网络下APP的流量消耗(上篇)

[18] IM开发者的零基本通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

[19] 微X新一代通信安全处理方法:基于TLS1.3的MMTLS详解

[20] IM通讯协议专题学习(一):Protobuf从入门到精通,一篇就够!

技术交流:

- 移动端IM研发入门文案:《新手入门一篇就够:从零研发移动端IM》

- 开源IM框架源码:

https://github.com/JackJiang2011/MobileIMSDK(备用位置点此)

(本文已同步发布于:

http://www.52im.net/thread-4669-1-1.html)
回复

使用道具 举报

3011

主题

2万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99159151
发表于 7 天前 | 显示全部楼层
外贸网站建设方法 http://www.fok120.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-9 05:43 , Processed in 0.065653 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.