报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

优化 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:162544

评论

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

安全可信| 通过双项测试!TeleDB实力亮剑!

天翼云开发者社区

数据库 云计算 天翼云

性能测试:性能测试计划

测吧(北京)科技有限公司

测试

咦?KaiwuDB 有大事要说?

KaiwuDB

可信数据库 KaiwuDB 分布式多模数据库

京东工业平台商品详情数据接口(vipmro.item_get)

tbapi

京东工业平台数据采集 京东工业平台API 京东工业平台商品数据

灰度吸金大法:高费率与资金流出下的比特币现货ETF巨头地位

区块链软件开发推广运营

dapp开发 区块链开发 NFT开发 公链开发

RaftKeeper v2.1.0版本发布,性能大幅提升!

京东科技开发者

精准搜索:本地文件检索工具的高效策略

京东科技开发者

一等奖!KaiwuDB & 西电联合成果又创佳绩

KaiwuDB

云原生数据库 KaiwuDB KaiwuDB 产学研

借助 API 接口深挖唯品会商品详情:实战指南

Noah

2024年快应用开发者大会即将强势开启,聚焦AI洞见未来

科技热闻

万界星空科技商业开源MES系统全面解析

万界星空科技

开源 开源软件 mes 开源mes 万界星空科技

实战案例:用百度千帆大模型API开发智能五子棋

幂简集成

百度 AI API API 开发

博睿数据受邀出席深圳地区数智金融交流会 分享《云原生时代的高级可观测性》

博睿数据

MomoAl (MetaOasis)是什么?,以bitget 钱包为例

加密眼界

企业跨省组网:SD-WAN解决方案

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

预告 | 博睿数据将亮相第四届中国新能源汽车产业数智峰会

博睿数据

《好战略,坏战略2》摘录

充实的orzi

企业管理 战略

etcd框架实践【Java版】

FunTester

深度解读昇腾CANN模型下沉技术,提升模型调度性能

华为云开发者联盟

人工智能 华为云 大模型 华为云开发者联盟 企业号2024年7月PK榜

软件测试学习笔记丨Allure2报告定制

测试人

软件测试

CentOS 停服后,服务器 OS 路在何方?

腾源会

CentOS 停服

Claude3.5 Opus 注册开通使用全教学,手把手教程

蓉蓉

Claude

聚美优品商品详情数据接口(jumei.item_get)

tbapi

聚美优品API接口 聚美优品商品数据接口 聚美优品商品详情接口

电机工厂MES系统-提升生产效率与质量的关键

万界星空科技

生产管理系统 mes 万界星空科技 电机行业 电机MES

张掖市有等保测评机构吗?在哪里?

行云管家

等保 等级保护 等保测评 张掖

int(1) 和 int(10) 有什么区别?

源字节1号

小程序 开源 `后端 前端‘’

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