2.8.2 QUIC 实践

距离 HTTP/3 正式发布已经过去了一年半之久,那么 QUIC 的表现如何,是否可以应用到正式环境?爱奇艺基础架构团队对 HTTP/1.1、HTTP/2、HTTP/3 等各版本进行基准测试,笔者征得他们的同意,将测试数据在此分享,以供读者参考。

如图 2-36 所示,根据用户网络状态分级对各协议的耗时表现。

测试数据表明,在同等网络环境条件下 HTTP/3 或 H3-29 延迟降低了 1 倍左右(耗时单位 ms)。

图 2-36 各网络质量下的协议耗时表现

不过这次测试也发现了另外一个问题,如图 2-36 所示,综合来看网络请求成功率的对比 HTTP/3 或 H3-29 的失败率更高。笔者 2024 年初,在海外各地区也进行一番测试,从采样的数据来看,HTTP/3 的失败率确实比 HTTP/2 的失败率要高一倍左右,错误类型绝大多数为 Lost connection。

图 2-37 各网络质量下的协议成功率表现

综合来看无论是在服务端还是客户端,QUIC 协议的集成并非一件易事:

  • 服务端要考虑网络模型需要适配 QUIC 协议栈做调整,同时还要考虑和 TCP 的兼容,且 TCP 在内核已经经过足够的优化去适配各种环境问题,由此也产生疑问「 QUIC 流量的能耗比,是否做到和 TCP 一样的能耗性能?」。
  • 客户端要考虑应用适配成本和收益之间的权衡,普通的应用是否有必要升级成 QUIC,这需要业务需求和技术投入的综合考量。如果要升级 QUIC,可能还需要新旧网络库都存在,以便进行降级容错,这也使得逻辑代码更为复杂。
总字数:511
Last Updated:
Contributors: isno