写点什么

优化 CDN,从全链路入手

  • 2019-09-12
  • 本文字数:2475 字

    阅读完需:约 8 分钟

优化CDN,从全链路入手

CDN 是一种新型网络构建方式,目的是提高用户访问响应速度和准确率。CDN 代表了一种基于质量与秩序的网络服务模式。本文将从技术角度探讨 CDN 的应用前景,同时结合实际场景中的问题和解决办法,希望能够帮助企业更好的用好网络,服务用户。


今天,我们来介绍下 CDN 优化的核心要点和关键环节。

质量与规模均是业内领先

百度智能云 CDN 自 2016 年开始对外商业化,搭上百度智能云发展的快车道,不断打磨与改进,目前储备带宽近 100T,全球可用节点近 1000 个,拥有国内与海外完整的加速解决方案,CDN 的规模与质量都得到了大幅提升。



百度智能云 CDN 架构与优势


当前,百度智能云 CDN 的主要特点如下:


  • 边缘 CDN 节点支持 QUIC、HTTP2.0、TLS1.3 等新特性。

  • 节点内部支持私有协议,主要用于节点间加速与内部回源防劫持。

  • 上传加速,节点间使用 QUIC、长连接复用等技术打造上传加速差异。

  • 中心节点与百度内网有高速专线连接,总体利用率不到 40%。

  • 与 BOS(对象存储)结合,有一套完整的上传与分发解决方案。


由于百度智能云的 CDN 表现出色,不少重量级的企业已经在使用。例如,我们服务的长视频类客户主要有爱奇艺、芒果点播等,短视频类客户主要有快手、手百 Feed、全民视频、好看视频等,手机 APP 下载类客户有魅族、小米、华为等。

从全链路入手进行优化

如何做到 CDN 的优化?我们从全链路分析着手,涉及到客户端、网络、节点和回源整个请求的生命周期。


就拿手机百度 APP 的 Feed 小视频来说,当用户点击一个视频后,一个 HTTPS 请求会从端上触发,经历端上 APP 及播放器再到底层网络协议栈发出,再通过公网途经就近 CDN 网络,首次未命中回源获取,同步响应第一个用户。在 CDN 上缓存后,便能加速后续的请求。从这个过程来看,一个请求的生命周期大概经过以下阶段。


1 客户端:需要不同调整策略

端上的数据往往是我们优化的突破点,因端上 APP 实现逻辑的差异,不同的实现形式可能需要服务端有不同的对应调整。HTTPS 现在基本是端上的标配,有效的 HTTPS Session 复用能大大提升加载资源的速度,手机百度 APP 通过多种 Session 复用技术,可以做到 0-1RTT 的时延。


我们团队与手机百度网络团队联合优化时发现,手机百度端上网络库存在以目标 IP 为粒度的 Session 复用,虽说这样能大幅度提升 Session 复用率,但在目前以 SNI 为基石的多域名复用 CDN 加速机制下,会出现握手失败的情况,最后通过端上网络库的打点,我们能及时发现并解决问题。


另外,我们还结合端上的卡顿分析,发现 4G 网络用户因受运营端套餐的限制,会出现每月从 1 号开始,卡顿比或 loading 率持续上升,再到次月初恢复的现象。

2 网络:注意域名解析

在发请求前,域名解析是一个必不可少的环节,大部分端会首先用 DNS 来解析,但国内的 DNS 劫持与污染一直是非常严重的问题。我们给用户建议使用 HTTP DNS 后有效解决了劫持问题。例如,在某些弱网络环境下,手机百度 APP 端上会自动升级到 QUIC 协议,主动改善用户体验。

3CDN 节点:分层优化

节点内的优化一直是我们的重点,优良架构的选型与核心模块的优化都有显著的效果。百度智能云 CDN 采用典型的分层结构,接入业务层与 Cache 存储层分离,各自分工明确,通过四层 BGW 加七层 Nginx 的两层负载,应对各种故障场景。


CDN 节点上内核协议栈的行为,对性能有很大的影响,如初始窗口、发包策略、重传策略等,我们线上内核大量尝试 BBR、Boost 等较为先进的发包算法,有效提升传输速度与可用性。


另外,协议栈层面,我们还自研了一套系统,能自定义监控一条 TCP 流上所有的形为,这样就能有效快速的定位到应用层数据发完后,是协议栈没有及时处理还是端上网络不好。

4 回源:用私有协议应对劫持

回源劫持一直是比较头疼的问题,如 302 劫持、DNS 劫持等。比较有技术含量的运营商能根据 Host 进行阻断,可能是为了减少跨网流量或主动封堵。此问题可以用 HTTPS 得到有效解决。但 HTTPS 就会要求用户必须提供有效的证书,且存在大量的 SSL 握手,在节点内部回源,就显得有点太重。


为此我们开发了一套私有回源协议,尽量使问题简单有效的得到解决。另外,如果使用百度智能云的 BOS 存储,还会有额外的优化,如高速专线回源、独享公网带宽、常态有 40%的允余,足以应对各种突发。

重点优化 Nginx 接入层

为了能有效的衡量七层接入层 Nginx 的优化效果,我们团队构建了一个能体现 Nginx 运行状况的卡顿指标,具体为 Nginx 每分钟处理事件 cycle 时间超过 50ms(50ms 的选择是可配置的,主要是考虑优化影响较大的场景)的个数。



一次处理 cycle 超过 50ms 意味着这个 Nginx worker 上的所有请求,都会在这个时间段(50ms 内)得不到及时的处理。就小文件场景来说,就会体现在首包时间长,而我们的优化往往就是毫秒级进行。对于 Nginx 这样一个高效的异步事件驱动的模型来说,这有背于高并发设计原则,我们应该全力降低并消除回调 callback 过于占用 CPU 的情况。通过我们线上的实践,大体发现两类问题。

1 智能压缩减少 CPU 消耗

这个问题大家都比较容易理解,压缩本来是一个 CPU 密集性任务。为了有效降低 CDN 的出口带宽,部分文件类型的压缩是不可少的。但我们也发现,有部分用户的文件类型,压缩比很低,这类基本没有压缩的必要,所以我们 CDN 支持了智能压缩,自动计算与识别压缩比,来决定压缩与否。

2 解决系统调用卡顿

系统 writev 调用卡顿,是我们逐步缩小定位到的,发现线上机器因内存使用不当,产生大量的内存碎片,而每次 writev 调用时,在申请内存不够时,会时不时的触发 reclaim 或 compaction。经过与内核同学一起定位,通过修改内核行为得到有效解决。


经过以上调整之后,收益明显:可以做到小文件首包降低 30ms+,与多家竞品对齐或超越;同时,每分钟事件处理超过 50ms 的卡顿数降低 90%(从每分钟 40 次到每分钟 4 次)。

总结

本文主要介绍了百度智能云 CDN 优化的核心要点和关键环节,后续将持续撰写相关文章,敬请关注。您可以通过后台或者直接在文末留言,共同讨论如何让 CDN 更快、更稳、更安全。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/NGeO6aGOedq_mQ6rwaNtCg


2019-09-12 00:162563

评论

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

ScaleFlux企业级SSD通过VMware IOVP认证

ScaleFlux

vmware 固态硬盘 企业SSD 存储解决方案

论数字化大趋势下,建设财务共享中心的重要性

用友BIP

财务共享

基于 Log 的通用增量 Checkpoint

Apache Flink

大数据 flink 实时计算

探索 PlanetIX:解读区块链游戏运营的奥秘

Footprint Analytics

区块链游戏 web3 Planet IX

怎样将图片直接转换为3d模型?

真大的脸盆

Mac Mac 软件 图片转换工具 图片转换模型软件

艾媒咨询 | 2023年中国信创产业发展白皮书

亚信AntDB数据库

数据库 AntDB AntDB数据库

用友BIP新一代全球司库,重塑企业资金管理新价值

用友BIP

全球司库

财务标准化建设进程中,财务共享能起到什么作用?

用友BIP

财务共享

商业地产研策如何搜集数据​

MobTech袤博科技

空降攻略!一文带你玩转2023开放原子全球开源峰会

开放原子开源基金会

开源 开放原子开源基金会 攻略 开放原子全球开源峰会

活动回顾丨首期阿里云 Serverless 技术创新实战营上海开讲(含 PPT 下载)

Serverless Devs

如何进行存储容量规划?

ScaleFlux

存储成本 数据压缩 企业级SSD NVMeSSD

inBuilder今日分享丨表单设计器画布渲染引擎揭秘

inBuilder低代码平台

艾媒金榜|2023年中国信创企业百强榜

亚信AntDB数据库

数据库 AntDB AntDB数据库

阿里一面凉凉,幸获内推华为技术四面,offer到手!

程序知音

Java java面试 Java进阶 八股文 Java面试八股文

MegEngine 使用小技巧:如何解读 MegCC 编译模型几个阶段 Pass 的作用

MegEngineBot

深度学习 编译器 MegEngine Pass

利用透明压缩技术解决企业级SSD读写延迟挑战

ScaleFlux

压缩算法 固态硬盘 企业存储

软件测试/测试开发丨Web自动化测试高级定位xpath

测试人

程序员 软件测试 自动化测试 测试开发

旅游景区如何寻找共享电单车厂家

共享电单车厂家

共享电动车厂家 景区共享电单车 共享电动车投放 景区共享电动车

详解RocketMQ 顺序消费机制

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

「ACL 2023」:火山语音团队多篇论文中选,涉多方向技术创新突破

科技热闻

进阶神册!Redis+Nginx+设计模式+Spring全家桶+Dubbo核心技术笔记

程序知音

Java 数据库 spring java架构 Java进阶

通过SQL获取每个月第n周任意天的数据

搞大屏的小北

sql查询 sql 第一周 每个月 周一

财务共享五大价值助力央企构建世界一流财务管理体系

用友BIP

财务共享

怎样才能让业财融合真正为企业数智化转型起到推动作用?

用友BIP

财务共享

Wallys/DR5018+QCN6122/support for the latest Wi-Fi standards in networking devices.

Cindy-wallys

ipq5018 QCN6102 QCN6122

水泥行业全球第一企业怎么进行财务共享建设?

用友BIP

财务共享

西南财经大学李玉周:数智化技术广泛使用推动管理会计加快落地

用友BIP

智能会计 价值财务

AI浪潮再掀低代码开发热,快来了解最新趋势!

加入高科技仿生人

人工智能 低代码 AI技术

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

优化CDN,从全链路入手_文化 & 方法_吴永强_InfoQ精选文章