免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

QQ 空间已在生产环境中使用 QUIC 协议

  • 2017-10-09
  • 本文字数:2222 字

    阅读完需:约 7 分钟

QUIC(Quick UDP Internet Connections,发音’quick’)是 Google 于 2013 年发布的基于 UDP 的多路传输协议,它的主要目标是为了整合 TCP 协议的可靠性和 UDP 协议的速度和效率,以降低延迟,提高用户体验。

Google 通过大规模的性能分析发现,“相对于 TCP 而言,QUIC 的性能有了真正的进步”,这得益于 QUIC 的以下特性:

  • 低延迟链接的建立,这对已建立的链接很有好处。在这种情况下,Google 搜索页面的平均加载时间缩减了 3%。
  • 改进拥塞控制和丢包恢复机制,这在糟糕的网络环境中尤为重要。在这种情况下,Google 搜索页面在“最慢的 1% 的连接”中节省了整整 1 秒的时间,并且观看基于 QUIC 的 YouTube 视频时会减少高达 30% 的数据重缓存。

据了解,QQ 空间前端团队通过对 HTTP2 和 QUIC 协议的应用和实践,使得 Web 页面访问速度得到了很大的提升,并且他们针对性地采用了不同的资源加载策略,最大化利用了协议的优势。为了了解 QQ 空间团队的相关实践,InfoQ 记者采访了 QQ 空间高级前端开发工程师黄佳琳。同时,黄佳琳也将会在 10 月 17 日举行的 QCon 全球软件开发大会上分享相关话题,欢迎关注。

InfoQ:如何理解 QUIC 协议?与 HTTP/2 相比有什么优势和短板?

黄佳琳:QUIC,是一种基于 UDP 的协议,为了更好地理解,可以用一个公式大致地概括为 TCP+TLS+HTTP2=UDP+QUIC+HTTP2’s API。 从这个公式可以看出来,QUIC 最重要的作用就是替代了 TCP+TLS,我们可以把 QUIC 分成两部分来理解。

  1. 底层,由于改用了 UDP,QUIC 需要模仿实现 TCP 的一些功能,诸如连接性、可靠性、拥塞控制、流量控制等,但并非照搬 TCP 的协议,而是做了一些改进,避免队首阻塞;
  2. 高层,负责加密,实现 TLS 的保密功能,同时使用更少的 RTT(0~1 个)便可建立安全的会话。更上一层则是复用了 HTTP2 的一些 API,实现了 HTTP2 所具有的多路复用、头部压缩等特性。

QUIC 的背景其实就是 HTTP2 在传输层仍然遇到了一些问题,没办法有效地利用网络传输,我们需要一个协议用更少的延迟和更少的重传时间消耗去传递请求,减少因包丢失造成的队首阻塞,然而又要保证安全性,QUIC 在这种背景下诞生了。

与 HTTP/2 相比,其实从技术原理可以看出来,最大的区别就是弃用了 TCP 改用了 UDP。优势就是解决了 HTTP/2 在传输层所遇到的一些性能瓶颈,而同时又具有 HTTP/2 的特性。劣势就目前来说,是浏览器支持度较差,从 QQ 空间的数据来看,QUIC 目前手机侧鲜有支持,PC 侧支持率占比在 5% 以内,相比之下,HTTP/2 的支持率已经达到 80%,不过浏览器的支持度我是持乐观态度的,随着时间推移,相信支持率会逐步上升。

InfoQ:可否介绍下你们应用 QUIC 协议的一些基本情况?

黄佳琳:目前主要在 PC 上使用,QQ 空间黄钻页面和游戏应用页面都已全量使用,QQ 空间首页也在灰度开启中。数据上相比 HTTP/2 有一定提升,页面 onload 提升了 10%。

InfoQ:什么样的场景下使用 QUIC,什么样的场景下使用 HTTP/2,什么样的场景下使用 HTTP/1?

黄佳琳:目前 QQ 空间的 Web 业务主要分 PC 端和移动端两种场景,PC 端主要用 HTTP/2+QUIC,这两个加起来占比已经接近 90%,移动端主要用 HTTP/2,主要是移动端支持 QUIC 的目前还比较少,支持 HTTP2 的占比在 80% 左右。其他不支持 QUIC 或 HTTP2 的就降级使用 HTTP/1,总之,支持新协议的都优先使用新协议。

InfoQ:为什么当初你们要考虑使用 QUIC 协议?当时的背景是什么?

黄佳琳:知道 QUIC 协议其实也是从我们开始使用 HTTP/2 的时候开始的,在研究 HTTP/2 的时候,我看了一本书,叫《Web 性能权威指南》,里面有一章是专门介绍 HTTP/2 协议的,分析得很详细,其中有一句话是这么写的(我特地去翻了一下摘抄出来),“对 HTTP 2.0 而言,TCP 很可能就是下一个性能瓶颈”。看到这句话的时候我在想,TCP 是下一个性能瓶颈,那还能怎么办呢?难不成还能用 UDP 协议?在好奇心驱使之下我搜索了一下,还真有用 UDP 的,那就是 QUIC 协议。真正在生产环境中投入使用其实是另一个契机,就是腾讯的安全云网关团队在 server 端支持了 QUIC 协议,这才使得 QUIC 协议真正落地使用。

InfoQ:在已有的系统和体系里,你们是如何落地 QUIC 协议的?

黄佳琳:在已有的架构里落地 QUIC,我们考虑的是如何对业务更透明,接入更方便。我们现有的架构,在用户端和真实服务器中间有一层统一接入层。我们的 QUIC 是在接入层统一实现的,接入层与用户端之间任意使用 QUIC、HTTP/2、HTTP/1,而接入层与真实服务器之间还是使用 HTTP 1.1 进行转发,这样对于我们的后端机器只需要保持处理 HTTP 1.1 的请求即可。

InfoQ:在生产环境中使用了这么长时间 QUIC 协议,有做过复盘吗?可以给大家分享一些你们觉得落地 QUIC 协议过程中需要注意的关键点吗?

黄佳琳:确实有一些需要注意的关键点,我觉得用 QUIC 协议有一个潜在的问题就是运营商的一些不可控因素。在分析 QUIC 数据的过程中注意到,QUIC 有时候比 HTTP/2 还要慢得多,用 iperf 等测速工具测试发现,UDP 的带宽要比 TCP 小得多,换一下网络环境之后,QUIC 又比 HTTP/2 快了。除了限速之外,有时候用 UDP 会出现丢包严重的问题,这也影响了 QUIC 的性能。但是这一类问题,作为 web 端来说很难发现和避免。我们现在也只是做了一些简单的检测手段,例如对于同一个用户来说,记录他分别使用 HTTP/2 和 QUIC 两种不同协议来加载页面的速度,如果 QUIC 明显慢于 HTTP/2 的话,这个用户下次访问不会再使用 QUIC。不过这种检测方法也会存在一些误判,还需要不断地调整。

2017-10-09 23:387803
用户头像

发布了 219 篇内容, 共 130.0 次阅读, 收获喜欢 186 次。

关注

评论

发布
暂无评论
发现更多内容

又上新台阶!腾讯云TcaplusDB &与华为鲲鹏完成兼容性认证

TcaplusDB

数据库 nosql TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB数据库表定义

TcaplusDB

数据库 nosql TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB数据恢复详解

TcaplusDB

数据库 nosql TcaplusDB

Linux内核内存管理:地址转换和MMU

Linux服务器开发

操作系统 内存管理 Linux内核 内核开发 地址转换

为什么Kafka的数据不写了?

BUG侦探

DNS gopack Linux操作系统

现在动手玩转腾讯游戏核心数据库!TcaplusDB华东客户Hands-on活动

TcaplusDB

数据库 nosql TcaplusDB

[TcaplusDB知识库]为游戏而生的腾讯云TcaplusDB技术介绍

TcaplusDB

数据库 nosql TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB守护您的数据安全

TcaplusDB

数据库 nosql TcaplusDB

关于数据库应用的一些思考

石云升

数据库 8月日更

TcaplusDB X 黎明觉醒,探索不止,黎明将至

TcaplusDB

数据库 nosql TcaplusDB

腾讯云TcaplusDB X 大主宰·大千世界|万道争锋,独领其风

TcaplusDB

数据库 nosql TcaplusDB

如何利用FL Studio编曲--入门级

懒得勤快

【TcaplusDB君】腾讯云数据库TcaplusDB存储引擎的优势

TcaplusDB

数据库 nosql TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB合理分配存储空间的秘籍

TcaplusDB

数据库 nosql TcaplusDB

PyFlink 开发环境利器:Zeppelin Notebook

阿里云大数据AI技术

如何搭建SpringcloudAlibaba基础环境(一)

不焦躁的程序员

Java 微服务

[TcaplusDB知识库]腾讯云TcaplusDB架构的简单说明

TcaplusDB

数据库 nosql TcaplusDB

PyFlink 开发环境利器:Zeppelin Notebook

Apache Flink

Zeppelin notebook pyflink 开发环境利器

[TcaplusDB知识库]限制腾讯云TcaplusDB无敌的情况介绍

TcaplusDB

数据库 nosql TcaplusDB

腾讯云TcaplusDB荣获全球云计算大会优秀解决方案奖!

TcaplusDB

数据库 nosql TcaplusDB

腾讯云数据库TcaplusDB十年耕耘,小苗终成大树

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB X 光与夜之恋|你的恋爱我来守护

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB X 光与夜之恋,来谈一场高沉浸式的恋爱吧

TcaplusDB

数据库 nosql TcaplusDB

【TcaplusDB知识君】腾讯云TcaplusDB数据库的技术原理

TcaplusDB

数据库 nosql TcaplusDB

[TcaplusDB知识库]意外的保障—腾讯云TcaplusDB高可用部署

TcaplusDB

数据库 nosql TcaplusDB

[TcaplusDB知识库]一个优秀的数据库TcaplusDB如何进行备份和回档

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月8日)

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月7日)

TcaplusDB

数据库 nosql TcaplusDB

腾讯云TcaplusDB携手《穿越火线》亮相IGS大会腾讯云游戏&新文娱分论坛

TcaplusDB

数据库 nosql TcaplusDB

服务全球用户,EMQ X Cloud 新增欧洲部署支持

EMQ映云科技

服务器 mqtt 部署与维护 Cloud emq

TcaplusDB x 和平精英 ,两周年生日快乐!

TcaplusDB

数据库 nosql TcaplusDB

QQ空间已在生产环境中使用QUIC协议_语言 & 开发_郭蕾_InfoQ精选文章