当前位置: 首页 > 科技观察

爱奇艺海外App网络优化实践

时间:2023-03-21 00:33:14 科技观察

对于海外市场,尤其是针对全球用户,网络的重要性不言而喻。想象一下一个手机应用,打开应用首页需要10秒,这可能会导致一半的用户流失。爱奇艺推出的国际版面向全球用户。面对海外网络复杂的环境,有针对性地进行了一系列优化实践,并取得了良好的效果。这里总结分享一下我们的一些实践和优化思路。希望对您有所帮助。优化实践的几个核心:不能请求网络,不请求,请求链接目标为0-RTT,请求内容越小越好。01调查本地网络情况在App初始版本中增加对请求链接的采样。当样本数量足够时,您可以清楚地了解您要推广的市场环境。样本数据让我们清楚地发现了各个国家和地区的网络问题。在大规模宣传招商之前,做好App的基础工作非常重要。图:海外用户到海外数据中心的网络时延(此为监控节点数据,用户端时延更高)图:海外主要国家和地区的移动网络情况在调研阶段,我们发现如下问题比较明显,确实影响我们的操作和App体验。1.运营商劫持严重,DNS劫持,HTTP劫持。2、移动网络复杂东南亚地区网络基础设施有待完善。3、低端安卓手机有一定比例,数量高低影响决策。4、国际网络中客户端到服务器的延迟高。在起步阶段,技术工作的核心是解决上述问题,为后续运营做好基础设施准备。由于大部分业务接口都是HTTP形式,所以围绕HTTPS做了针对性的改进。图:一个HTTPS请求阶段分析一个HTTPS在第一个请求中会有5个RTT1RTT(DNS)+1RTT(TCP握手)+2RTT(TLS1.2)+1RTT(HTTP链接)如果端到服务50ms延迟是举个例子,一个HTTPS接口延迟=350ms=50*5+100ms(服务器)如果目标是非国内用户,打开首页需要1.1s,显然有点长。以下为技术改进正文:图:总结技术优化重点02改进优化方案01基础链接的改进优化1.DNS优化调整DNS解析为HTTPDNS,观察初始连接请求增加改进后的DNS启动效率提高了17%。解决域名劫持问题(从东南亚发回的数据显示劫持较多)解决LocalDNS非就近分布问题,结合业务与解析预热。2、传输层MTU问题的优化调整客户端和服务端的MTU值不同会导致丢包率偏高。在AWS的一些场景下,默认的jumboframe:MTU是9001,但是receiver默认是1500,这时候会出现一些丢包。如果使用多个云提供商服务,使用VPN组网,IP隧道封装的数据关键到1500,会造成丢包和重传问题。最严重的情况:某些网络屏蔽了ICMP协议,导致MTU无法自动协商。TCP级别的优化。优化TCP拥塞控制。拥塞窗口CongWin是在没有收到接收端确认的情况下连续发送的字节数;CongWin是动态调整的,它取决于带宽和延迟的乘积,比如100MB带宽和100ms延迟的环境。延迟带宽积=100Mbps*100ms=(100/8)*(100/1000)=1.25MB理论上,CongWin窗口可以最大化到1.25MB。CentOS默认的CongWin=20*MSS,也就是29KB左右,距离1.26MB的上限还差得很远。如果提高默认值,TCP将启动得更快。TCPFastOpen(TCPFastOpen:TFO)在TCPkeepalive下,仍然会出现断链重建的情况。TFO针对这种情况进行了优化。图:TFO原理机制我们观察到,开启TFO机制后,海外业务一个RTT通常在100ms以上,HTTP请求效率提升了12%左右。02应用层的改进和优化1.HTTP优化HTTP1.1有保活功能,可以重用TCP链接,减少新建消耗。比较适合浏览器业务,但是对于移动端时间分散的请求,大部分请求还是新建连接。HTTP1.1的串行机制存在头部阻塞的问题。2、SSL层优化尽量升级到TLS1.3。使用Pre-sharedKey机制,使能ssl_early_data进一步优化“0-RTT”。如果无法升级TLS版本,优化关键算法为ECDHE,运行速度快。握手消息的往返从2-RTT减少到1-RTT,可以达到类似TLS1.3的效果。图:TLS版本差异TLS1.3优化后,一个HTTP请求从之前的4个RTT减少到3个RTT。3、升级HTTP2.0几项重要的改进:帧传输、多路复用、头部压缩。多路复用在HTTP/2中,有两个非常重要的概念:帧(frame)和流(stream)。帧代表最小的数据单元,每个帧标识该帧属于哪个流,流是由多个帧组成的数据流。多路复用意味着多个流可以存在于一个TCP连接中。这些改进可以避免HTTP队头阻塞问题并提高传输性能。如果header压缩开发者不注意header内容的控制,header内容就会失控,客户端很容易存储一个非常大的cookiemap:HTTP2帧传输机制4.边缘节点动态加速这个非常有效的方式是尽可能贴近用户,利用边缘节点优化路线和链路,提高动态服务的效率。与直连模式相比,使用动态加速后,P90的接口延迟效率提升了60%。图:爱奇艺海外动态加速效果提升5.启用自底向上机制对于失败的请求,启用自底向上协议QUIC或kcp。客户端的失败率在3%左右,这部分请求使用UDP协议。据我们观察,成功率提高了45%。03传输内容优化1.应用Brotli因为预设了字典,在同等压缩率下,压缩率至少比gzip高17%,界面平均Content-Size从30KB到18KB。2.接口由JSON改为GoogleProtobuf应用Protobuf的重要原因是解析效率至少比JSON高四五倍,尤其是在节点深度和数据量较大的情况下。但是要注意Protobuf内部的varint压缩,它只对小于128的数字进行变长压缩,实际效果并不大。如果生产环境数据量很大,gzip等外部压缩是必不可少的。3.图片格式升级为WebP在使用WebP的同时,降低海报图片的质量。在实践中,海报质量设置为85%,肉眼很难分辨。与同等质量的JPEG或PNG相比,体积最多可减少45%。应用效果明显。App打开首页图片的加载提升肉眼可见。04业务层面的优化和改进1.减少不必要的请求:一些常用的内容,比如导航、频道等,通常都是运营商主动更新的。如下图,添加一个启动阶段请求的接口,将内容更新的时间戳放在里面。如果与本地缓存的时间戳不同,则异步请求更新。2、区分用户网络,适应不同的策略。对于视频,非WiFi的默认广播码率是360P。对于海报,后台接口提供了两个质量URL,WiFi高质量,4G低质量。3.更多业务优化添加请求重试、调整HTTP超时、请求缓存等,这些都可以根据业务需要进行调整。03年底,爱奇艺海外版通过一系列细节优化,用户体验不断提升。用户界面延迟、客户端故障率、视频播放成功率等一系列关键指标均有大幅提升。这也帮助爱奇艺在东南亚多个国家的应用市场排名中升至TOP1。此外,APP优化、服务器延迟优化、产品体验提升,这些系列只有相辅相成,才能最大限度地提升用户体验。