跳转到内容

Akamai 2010 — 从内容分发网络长成全球应用平台

是什么

Akamai 2010 年这篇论文,是 akamai-2002 八年之后的”成长报告”。日常类比:2002 年 Akamai 说自己是”全球连锁仓库”,2010 年它告诉你这套仓库网络已经长成”全球邮政 + 物流 + 即时配送”——不光分发图片视频,还跑动态页面、做整站加速、传任意 TCP/UDP 应用。

论文系统讲了 Akamai 的五大子系统:

  • 边缘平台:散布在 70 多个国家、1000 多个网络里的约 61000 台服务器
  • 映射系统:DNS 驱动,靠实时网络测量把每个用户引到最优节点
  • 传输系统:在边缘和源站之间叠一层 overlay,专治 BGP 抖动
  • 通信与控制系统:处理集群内一致性、故障切换、leader election
  • 数据采集与分析:实时收集日志,用于计费、监控、再喂回映射决策

这套架构是 Cloudflare、Fastly、AWS CloudFront / Global Accelerator 至今仍在抄的模板。

为什么重要

不理解这篇,下面这些事都没法解释:

  • 为什么 2010 年之后 CDN 厂商都开始卖”动态加速 / 整站加速”——因为 Akamai 把这条路走通了
  • 为什么打开海外网站有时比浏览器自己路由还快——overlay 比 BGP 默认路径稳
  • 为什么”边缘计算”概念能从 ESI 一路演化到今天的 Cloudflare Workers——CDN 平台化是必然
  • 为什么这篇成了 CDN 教科书——它把”CDN 是什么”重新定义为”分布式应用平台”

核心要点

CDN 在 2002 年解决的是”把静态内容搬近用户”。2010 年这篇把命题扩成三层:

第一层:映射系统继续做”指路”

DNS 仍然是控制平面。两级查询(高层 region 选择 + 低层节点选择)、短 TTL、自建递归 DNS——这些 2002 年的设计延续下来,但加了实时网络测量作为输入:从全球节点之间互相 ping 出的延迟矩阵反推谁最近,而不是只看地理位置。

第二层:SureRoute 把 overlay 当新路由层

边缘节点拿不到本地缓存时要回源。但 BGP 默认路径常常不是最快的——可能绕远、可能拥塞、可能某条干道刚抖。Akamai 的回答是 SureRoute

用户 → 边缘节点 →(赛跑选路)→ 中间节点 → 源站

具体做法:在多条候选路径(途经不同 Akamai 中间节点)上同时发请求,谁先到用谁的结果。类比:你寄快递不押宝一条线,而是同时发顺丰、京东、邮政,谁先到就当作准。代价是浪费一点带宽,收益是绕开 BGP 的烂路。

第三层:从内容到应用

2010 年 Akamai 把交付能力分成四类:

  1. 静态内容——老本行,缓存 + 一致性哈希
  2. HTTP 整站加速——动态页面也能加速:SureRoute 走源站、协议优化(持久连接、窗口调整)、边缘 prefetch、ESI 边缘组装
  3. 音视频流——点播 + 直播,自有协议 + 多源切换抗故障
  4. IP 应用加速——任意 TCP/UDP,把企业 VPN / 远程桌面也搬上 overlay

这一步的意义:CDN 不再只是”缓存”,而是分布式应用交付平台

实践案例

案例 1:SureRoute 救场跨洋请求

某国内用户访问美国源站,BGP 默认走太平洋海缆某条干道,刚好那条线在丢包。SureRoute 同时探测三条路径:

  • 直连:300 ms,丢包 5%
  • 经香港中转:220 ms,丢包 0.5%
  • 经东京中转:240 ms,丢包 0.1%

赛跑结果选东京线。用户感觉网页”莫名变快”——其实是 overlay 替他选了一条 BGP 看不见的更优路径。

案例 2:动态页面也能边缘加速

电商商品详情页有”猜你喜欢”模块,每个用户不一样,看似没法缓存。Akamai 的做法:

  • 页面骨架 + 静态资源 在边缘缓存(命中率 90%+)
  • 个性化片段 走 SureRoute 回源(延迟比直连低 30-50%)
  • ESI 在边缘把骨架和片段拼起来返回

整页 TTFB 从 800 ms 降到 200 ms,源站 QPS 从 10k 降到 1k。

案例 3:reliability 假设一切都会坏

论文反复强调:“硬件会坏、网络会断、电力会停。“Akamai 不靠”高可用硬件”,靠软件层冗余

  • 任何节点挂掉,映射系统秒级(≤ 几十秒)把它从地图抹掉
  • 集群内 leader election 处理需要强一致的小决策
  • 用自建分布式 KV 存少量元数据,多副本容忍 region 级故障

读这段你能感受到 Google 同时代论文(bigtable-2006 / chubby-2006)的同款味道——大规模系统的容错都是”假设组件不可靠,靠副本和共识修”。

踩过的坑

  1. overlay 不是免费的:SureRoute 多路径赛跑要消耗几倍带宽,只对小请求(HTML、API)划算;大文件(视频)继续走单路径。论文没明说但工业界都这么做。

  2. DNS 映射粒度有限:DNS 客户端是递归 DNS,不是终端用户,IP 推位置仍不准。2010 年还没普及 EDNS Client Subnet(akamai-2002 也踩过)。

  3. 动态加速命中率天花板:HTTP 整站加速对个性化重的页面收益有限——回源比例越高,CDN 沦为反向代理。论文没回避这点。

  4. leader election 在 WAN 上慢:跨大洲做 Paxos 类共识动辄几百 ms,所以 Akamai 把强一致需求局限在小决策(配置下发、计费汇总),多数路径走最终一致。

适用 vs 不适用场景

适用

  • 全球化网站/应用——用户分布越广收益越大
  • 整站加速——静态 + 动态混合,SureRoute 显著改善 TTFB
  • 流媒体——多源 + overlay 抗故障
  • 企业 IP 应用加速——把内网应用安全暴露给全球员工

不适用

  • 强一致写场景(支付、库存)——必须回源,CDN 不参与
  • 内网 / 局域网应用——没”距离”可优化
  • 极度个性化 + 极低延迟——每用户每请求都不同,缓存命中率为零

历史小故事(可跳过)

  • 2002 年akamai-2002 公开第一份架构。规模:12000 台机器、1000 个 ISP。
  • 2003-2008 年:Akamai 持续加东西——动态加速、流媒体、IP 应用。每加一项都是一篇内部论文 + 客户白皮书。
  • 2010 年:Erik Nygren、Ramesh Sitaraman(UMass Amherst 教授,长期 Akamai 顾问)、Jennifer Sun 把这八年系统化总结成本文。规模长到 61000 台、1000 个网络、70 国。
  • 2010 年之后:Cloudflare 2010 上线 Argo Smart Routing 直接对标 SureRoute;AWS 2018 推 Global Accelerator 抄 IP 应用加速;Fastly 卖 Edge Compute——CDN 平台化路线全部沿用本文思路。

学到什么

  1. 平台化是 CDN 的必然终点——一旦你在全球放了几万台机器,下一步必然是”除了缓存还能干什么”。Akamai 走完了完整路径。
  2. overlay 比改协议快——BGP / TCP 改不动,但你可以在它上面叠一层。这条思路后来被 Tailscale DERP、WireGuard relay、QUIC 反复使用。
  3. DNS 是被低估的控制平面(沿用 2002 篇结论)——2010 年依旧是 CDN 调度的核心入口。
  4. 可靠性靠假设而不是硬件——这是分布式系统的通用心法。Akamai 8 年的实践把这条原则刻在每个子系统里。
  5. 工业系统论文也值得精读——本文没数学定理,但每个设计都标了”为什么不是另一种”,是工程范式的活样本。

延伸阅读

关联

  • akamai-2002 —— 同公司奠基篇,本文是它的扩张续作
  • consistent-hashing-1997 —— region 内分摊内容的数学引擎
  • dns —— 控制平面的物理载体,Akamai 把 TTL 和两级查询玩到极致
  • bigtable-2006 —— 同时代分布式系统对照:中心化大表 vs 边缘 overlay
  • tcp —— overlay 优化 TCP 的物理基础
  • saltzer-1984-e2e —— 端到端原则;Akamai overlay 是”在中间多做点事换性能”的反向案例

反向链接

  • akamai-2002 —— Akamai 2002 — 把网站搬到离用户 10 毫秒的地方
  • bigtable-2006 —— Bigtable 2006 — Google 把行级随机读写做到 PB 级的存储系统
  • consistent-hashing-1997 —— Consistent Hashing — 加机器只搬一小部分数据的哈希环
  • dns —— DNS — 把全球域名解析切成一棵可分布维护的树
  • saltzer-1984-e2e —— End-to-End Arguments — 把功能尽量推到端上做
  • tcp —— TCP — 在不可靠的 IP 上凿出一条 reliable 字节流