点击上方“LiveVideoStack”关注我们
▲扫描图中二维码或点击阅读原文▲
了解音视频技术大会更多信息
编者按:HTTP/3正在不断获得新的应用部署,也有越来越多的案例证明了HTTP/3对流媒体应用的价值。随着生态逐步完善,HTTP/3份额会进一步提升。本文来自Pinterest技术博客,LiveVideoStack已获中文授权,感谢Liang Ma对本文的审校。
原文 https://medium.com/pinterest-engineering/pinterest-is-now-on-http-3-608fb5581094
文 / Liang Ma, Scott Beardsley, Haowei Yuan
译 / 核子可乐
技术审校 / Liang Ma
图一:Pinterest的HTTP/3架构
现在,HTTP/3已经在Pinterest落地。我们在多CDN边缘网络上为主要Pinterest产品环境启用了HTTP/3,同时完成了对客户端应用程序的网络技术栈升级,确保能够支持新协议。本次升级是为了紧跟行业趋势,确保以更快、更可靠的网络基础改善Pinterest的用户体验和业务指标。
相关背景
对Pinterest用户而言,网络性能(如延迟、吞吐量等)无疑是决定使用体验的关键要素。
2021年,Pinterest开始考虑采用HTTP/3(即QUIC),并逐步向流量/CDN乃至客户端应用普及。我们在整个2022年开展了相关研究,并成功实现了初步目标(这项工作在2023年及之后还将继续进行)。
术语
HTTP/3: 下一代HTTP协议,目前已经趋于稳定并由IETF工作小组负责收尾。
QUIC: 由Chromium/谷歌为HTTP over UDP而开发;项目随后被提交至IEFT进行标准化(即HTTP/3)。
落地HTTP/3意义何在?
HTTP/3是一种现代HTTP协议,相较于上代HTTP/2具备一系列优势,包括但不限于:
与HTTP/2相比,不存在TCP队头阻塞问题;
可跨IP地址实现连接迁移,有益于移动用例;
能够更改/调整丢失检测与拥塞控制;
缩短连接时间(0-RTT,而HTTP/2仍需要TCP三向握手);
对于图像下载、视频流传输等体量较大的有效载荷用例,可提供更高的执行效率。
这些优势与Pinterest用例显然高度契合——实现更快的连接建立速度(首请求首字节时间)、更好的拥塞控制(我们掌握着大体量媒体)、保证多路复用时不存在TCP队头阻塞(同时多次下载),并可在Pinterest用户的设备网络/IP变更时继续处理in-flight请求。这样,当用户在Pinterest上挥洒灵感之时,他们将获得更快、更可靠的使用体验。
在Pinterest落地HTTP/3
策略
安全和指标永远第一。尽管Pinterest强调速度的重要性,但更重要的是要以妥帖恰当的方式采用HTTP/3。首先,我们升级了客户端网络技术栈,并为每种流量类型(包括图像和视频)创建了端到端A/B测试。之后,我们又开展广泛实验,最终才真正在CDN和客户端启用HTTP/3。
挑战
将我们的CDN和客户端应用转向HTTP/3其实并不简单,下面来看几个主要原因:
对于Web应用程序,部分浏览器已经能够支持HTTP/3或QUIC。但这些浏览器在使用HTTP/3时仍可能存在兼容性问题,也许会影响到Pinterest的Web应用。
新的iOS版本(从iOS 15开始)已经提供对QUIC的早期支持,除非我们在服务器端禁用QUIC,否则无法通过代码对此进行控制。
我们的各家CDN供应商在对HTTP/3的支持方面存在进度差异。当我们通过CDN逐渐启用HTTP/3时,Pinterest的多CDN边缘网络在很长一段时间内只能部分支持HTTP/3,导致流量在不同CDN间切换时难以保障其可靠性和性能。
解决思路
首先,我们创建了A/B域级(CDN)测试,并在测试中克隆了一个域以启用HTTP/3,全面验证了已认证的客户端(包括Web)。例如:在图像HTTP/3验证计划中,我们使用i2.pinimg.com来验证http/3上的图像流量。
对于多CDN问题,我们选择了相对较短的ALT-SVC TTL(生存时间)以贴近DNS记录TTL,并尝试在各CDN上配置相同的协议设定。
开展广泛测试,通过各种最常用的浏览器对跨CDN HTTP/3行为进行验证。
在A/B测试通过之后,我们开始在生产中启用HTTP/3(各CDN逐一启用),之后客户端应用程序使用功能标记通过兼容的网络客户端来控制HTTP/3。这样不仅安全性更高,也能对指标进行收集和比较。
落地现状
我们已经在关键流量类型上启用了HTTP/3,并升级/利用移动客户端的网络堆栈以采用HTTP/3。
流量:Pinterest多CDN边缘网络上的各主要生产域均已启用HTTP/3。
客户端:
Web在可兼容的浏览器和流量上直接受益于HTTP/3;
iOS——图像/API流量目前由Cronet和HTTP/3共同提供。目前,70%的iOS图像流量经由HTTP/3传递。
iOS的原生网络技术栈,能够在我们的流量端启用后使用HTTP/3协议。苹果原生网络栈的HTTP/3采用率一直保持着稳定增长。我们也从收集的Video指标中发现该在采用HTTP/3(通过AVPlaer)后相关指标得到了显著改善。
Android Video性能通过Exoplayer+Cronet使用HTTP/3。
展示
我们的分析表明,HTTP/3(和Cronet)切实改进了各项核心网络指标(往返延迟与可靠性)。这种延迟/吞吐量层面的改进,对于大型媒体功能(例如视频、图像等)至关重要。更快、更可靠的网络也有助于拉升用户的参与度指标。
视频指标
视频GVV(视频良好观看率)细分(iOS:苹果网络+HTTP/3):
视频GVV细分(Android:Exoplayer + Cronet + HTTP/3):
图二:HTTP3对视频启动延迟的直接影响
参与度指标(iOS): HTTP/3的直接影响
图三:HTTP3对用户参与度的影响
网络指标
往返延迟 (ms):
图四:网络请求的往返延迟,蓝色为使用HTTP/3前,红色为使用后
备注:
(1)测量的是从客户端测量,即从请求发出到收到响应的时间;
(2)苹果原生网络(HTTP/2)指标的来源为2022年第三季度某一周内的网络日志;Cronet(已启用HTTP/3)指标的来源为2023年第一季度某一周内的网络日志。
网络可靠性指标也有相应提升。
未来计划
我们将继续向HTTP/3投入以扩大收益,包括:
增加HTTP/3的覆盖范围,探索Android上的其他网络技术栈;
进一步提高HTTP/3采用率,设定更大的max-age值;
尝试各种拥塞控制算法;
探索实现0-RTT连接。