想象一座城市的图书馆群:市中心有一座藏书几百万册的总馆(源站),各区有几座区级分馆(区域节点),你家楼下还有一个社区书架(边缘节点)。读者借书时,最先看楼下书架,找不到再去区馆,区馆也没有才去总馆。CDN(内容分发网络)干的就是这件事——把内容提前复制到离你最近的地方,让绝大多数请求在楼下就解决,不必每次都跑到总馆。而 Anycast 路由像是图书馆的“统一服务热线”:你拨同一个号码,系统自动把电话转接到离你最近的网点,不用记住每个分馆的专属号码。当访问的是动态内容(比如实时库存、购物车),CDN 还有一条“DCDN 专递通道”为你实时回源取鲜货;甚至在社区书架旁安排“整理员”(边缘计算)就地完成部分加工。这套体系最终的目标只有一个:让用户少跑路、少等待,让内容像楼下书架一样触手可及。

岗位关联

理解 CDN 三级架构与 Anycast 路由,是从事音视频、电商、全球化业务的 AI 从业者优化用户体验、降低延迟与带宽成本的基础能力,也是系统设计面试的高频考点。

目录
  1. 可视化演示
  2. 三级架构:总馆、分馆与书架的分工
  3. 分级缓存:逐层查找与回源取书
  4. Anycast路由:一呼百应的最近总机
  5. DCDN加速:为鲜货开辟的专递通道
  6. 边缘计算:把整理工作搬到书架旁
  7. 命中率优化:让好书常在书架
  8. 全球分发:让每个角落都能借到书
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

通过向正方形内随机投点,统计落入内切四分之一圆内的比例,利用大数定律逐步逼近π值。

本节配有交互动效(进入视口后自动加载,约 3KB)。

蒙特卡洛估算π 圆内点 圆外点 π≈4×N_in/N_total 投点越多估算越精确

三级架构:总馆、分馆与书架的分工

图书馆系统的秘密在于“分层不分工”:总馆、区馆、社区书架收藏的内容层层递进,越往外层越贴近读者,但越往内层藏得越全。CDN 的三级架构正是如此——边缘节点如同社区书架,部署在运营商机房或城市角落,离用户最近;区域节点如同区级分馆,覆盖一座城市或一个省,容量更大;源站则是总馆,保存全部原始内容。三级之间形成“边缘优先、逐级兜底”的协作关系。

从技术上看,用户请求到达边缘节点后,如果“楼下书架”没有这本书,请求就沿链路向区域节点和源站逐级上报,这叫“回源”。设计者需要权衡每一级缓存的规模和成本:边缘节点数量多但单点容量小,追求速度;源站容量大但带宽成本高,追求权威。读取路径可以用平均访问延迟来建模:

在图书馆里,大多数读者借热门书都能在楼下解决;在 CDN 中,绝大多数静态资源请求也应在边缘命中。架构设计的目标,就是让 $h_1$ 足够高,把宝贵的回源留给真正“冷门”的请求。

Tavg=h1⋅te+(1−h1)⋅h2⋅(te+tr)+(1−h1)(1−h2)⋅(te+tr+to)T_{\text{avg}} = h_1 \cdot t_e + (1-h_1) \cdot h_2 \cdot (t_e + t_r) + (1-h_1)(1-h_2) \cdot (t_e + t_r + t_o)
这个公式把“借书要花多久”拆成三种情况加权平均:楼下书架直接找到、区馆找到、总馆调取。
  1. 边缘命中项$h_1$ 表示边缘缓存命中率,$t_e$ 表示访问边缘节点的时间成本。读者在楼下书架直接找到书,只花下楼的时间。
    h1⋅teh_1 \cdot t_e
  2. 区域命中项$(1-h_1)$ 是楼下没找到的概率,$h_2$ 是区域缓存命中率,此时需要付出“边缘+区域”两段时间。
    (1−h1)⋅h2⋅(te+tr)(1-h_1) \cdot h_2 \cdot (t_e + t_r)
  3. 回源兜底项两级都未命中(概率为 $(1-h_1)(1-h_2)$),只能向源站回源,代价最大。
    (1−h1)(1−h2)⋅(te+tr+to)(1-h_1)(1-h_2) \cdot (t_e + t_r + t_o)

分级缓存:逐层查找与回源取书

社区书架的容量有限,区馆也不可能复制总馆全部藏书,因此“什么书放在哪一层”需要策略。CDN 的缓存策略核心是:边缘节点缓存最热门的内容,区域节点缓存次热门内容,冷门内容只在被请求时临时回源拉取。每层缓存都带有一个“保质期”(TTL),过期后内容失效,需要重新从上层获取,这与图书馆定期下架旧书、补充新书同理。

回源机制是三级协作的枢纽:边缘未命中的请求会携带缓存键(如 URL)向区域节点查询,区域节点也命中不了,再由区域节点代表用户向源站发起请求,这叫“L2 回源”。这样做的好处是:同一区域大量用户请求同一个冷门内容时,只有第一个请求真正打到源站,后续请求都能从区域缓存直接返回。总命中率是两级命中率的叠加:

TTL 是缓存新鲜度的“倒数计时器”:设得太长,内容可能过期(比如新闻稿已更新却还在书架);设得太短,缓存频繁失效,回源压力增大。实际运维中,图片、CSS 等版本化资源通常设置较长 TTL,HTML 页面设置较短 TTL,必要时主动刷新缓存。

Htotal=h1+(1−h1)×h2H_{\text{total}} = h_1 + (1 - h_1) \times h_2
这就像问“读者最终在书架或分馆找到书的概率”,把两个层级各自成功的机会叠加起来。
  1. 第一层直接命中边缘命中率 $h_1$ 本身就贡献了整体命中率,相当于楼下书架直接解决的读者。
    h1h_1
  2. 第二层补足只有边缘未命中($(1-h_1)$)时,区域节点才有机会命中(概率 $h_2$),两者相乘是“第二层补救”的贡献。
    (1−h1)×h2(1 - h_1) \times h_2

Anycast路由:一呼百应的最近总机

想象图书馆开通了一部统一热线 400 号码:全市二十个服务点共享同一个号码,你拨通后,电信网络自动把电话接到离你最近的服务点。CDN 的 Anycast 路由正是这个机制——分布于全球的多个边缘节点对外宣告同一个 IP 地址,用户访问该 IP 时,路由器通过 BGP(边界网关协议)自动选择一条“最近”的路径,把请求送达最优节点,用户无需关心节点在哪里。

BGP 是互联网路由器之间的“协商协议”,它根据 AS(自治系统,可以理解为一个个运营商的网络领地)之间的路径长短决定如何转发。Anycast 节点与 BGP 协同的结果是:每个用户都自动接入拓扑距离最近的边缘节点,享受最低延迟。选路的核心是最短路径选择:

Anycast 的副产物是天然的故障转移:某台边缘节点宕机后,它会停止向 BGP 宣告路由,几分钟内全网路由器自动把流量切换到其他存活节点,用户几乎无感知。这正是图书馆热线在某个网点装修时,总机自动把电话转到隔壁网点的道理。

dmin⁡=min⁡i=1n(AS_PATHi)=min⁡i(pi)d_{\min} = \min_{i=1}^{n} (\text{AS\_PATH}_i) = \min_i(p_i)
意思是从 n 条候选路径里挑出 AS 跳数最少的那条,如同电话系统挑出中转局最少的线路。
  1. 候选路径集合$n$ 个宣告同一 IP 的 Anycast 节点,对应 $n$ 条可能的路由路径。
    i=1,2,…,ni=1,2,\ldots,n
  2. 路径代价度量每条路径的代价用 AS 路径长度 $p_i$ 衡量,BGP 会优先选择 AS 跳数小的路径。
    AS_PATHi=pi\text{AS\_PATH}_i = p_i
  3. 取最小值对所有候选路径取最小,即为最优接入路径。
    dmin⁡=min⁡i(pi)d_{\min} = \min_i(p_i)

DCDN加速:为鲜货开辟的专递通道

普通 CDN 擅长缓存“放得住的干粮”——图片、视频、JS 文件;但库存查询、购物车、实时价格这类“鲜货”不能提前复制,必须实时询问源站。若每次动态请求都从用户所在地走公网绕到源站,延迟难以接受。DCDN(动态内容加速)为此开辟了一条“专递通道”:边缘节点与源站之间建立多条优化后的回源链路,动态请求到达边缘后,通过智能路由选择当前最快的链路回源,而不是傻傻走默认公网路径。

DCDN 的第二个杀手锏是连接复用和私有协议。普通 HTTP 请求需要经历 TCP 握手、TLS 握手等多次往返,而 DCDN 让边缘节点与源站之间保持常驻连接池,多个用户的请求复用同一条链路,省去重复握手。同时,私有传输协议可以减少报文交互次数,提升弱网环境下的回源效率。动态请求的总延迟模型为:

形象地说,DCDN 就像图书馆为“预约当天新书”提供的同城速递:不必等读者亲自跑到总馆,专递员从最近的站点出发,走最优路线把鲜货送到社区书架,再由读者就近取走。

Tdyn=tedge+ttunnel+toriginT_{\text{dyn}} = t_{\text{edge}} + t_{\text{tunnel}} + t_{\text{origin}}
动态内容的耗时 = 用户到边缘的时间 + 专用通道回源的时间 + 源站处理的时间,其中第二项被大幅压缩。
  1. 用户到边缘$t_{\text{edge}}$ 是用户访问最近边缘节点的网络时间,通过 Anycast 已做到最短。
    tedget_{\text{edge}}
  2. 专用通道回源$t_{\text{tunnel}}$ 是边缘到源站的回源耗时,DCDN 用智能选路与私有协议把它压到最低。
    ttunnelt_{\text{tunnel}}
  3. 源站处理$t_{\text{origin}}$ 是源站服务器生成动态内容的时间,CDN 无法替代,但可以通过边缘计算分担。
    torigint_{\text{origin}}

边缘计算:把整理工作搬到书架旁

社区书架旁边设了一个“图书整理台”,读者归还的书就地消毒、归类、贴标签,不必全部送回总馆。边缘计算与 CDN 的集成正是如此:在边缘节点上部署轻量计算能力(如函数计算 FaaS),让请求在离用户最近的地方完成数据处理、鉴权、图像压缩、A/B 实验等任务,只有真正需要全局数据的操作才回源。这就是“计算跟着内容走”的集成模式。

边缘计算的核心价值是“场景卸载”:原本需要在客户端与云端之间来回传输的数据,现在在边缘就地处理。以图片处理为例,用户上传一张原图,边缘节点直接完成缩放、格式转换后只把压缩结果回传源站,省去了大量跨网传输。卸载程度可以用卸载比来描述:

不过,边缘节点的计算资源远小于云中心,不可能承担重负载任务。实际方案是“分级协同”:轻量任务在边缘完成,重量级训练、全量数据分析仍上云。这要求开发者把业务拆分成适合边缘执行的函数,并通过 API 网关在边缘和云端之间按需调度——就像整理台只处理常见整理工作,装订修复这类重活仍然送回总馆。

λ=WedgeWedge+Wcloud\lambda = \frac{W_{\text{edge}}}{W_{\text{edge}} + W_{\text{cloud}}}
$\lambda$ 越高,说明越多计算发生在边缘,相当于越多图书整理工作在社区书架旁完成,而不是送回总馆。
  1. 边缘计算量$W_{\text{edge}}$ 表示在边缘节点完成的处理工作量(如处理图片的 CPU 时间)。
    WedgeW_{\text{edge}}
  2. 总工作量占比$W_{\text{edge}} + W_{\text{cloud}}$ 是边缘与云端处理量的总和,两者之比即卸载比。
    λ=WedgeWedge+Wcloud\lambda = \frac{W_{\text{edge}}}{W_{\text{edge}} + W_{\text{cloud}}}

命中率优化:让好书常在书架

衡量 CDN 是否称职,最核心的指标是缓存命中率——用户请求在边缘或区域直接命中的比例。命中率高,回源量就少,用户延迟和源站带宽成本双双下降。缓存命中率的计算很简单:一段时间内命中的请求数除以总请求数。但运维真正关心的是“有效命中率”:即使缓存命中,如果内容已经过期(TTL 失效但未被及时刷新),返回给用户的也是脏数据。

优化的手段主要有三:第一是预热机制,在流量高峰来临前(如电商大促、新剧上线),把预测的热门内容主动推送到边缘节点,相当于提前把畅销书铺满各社区书架;第二是失效策略,源站内容更新时通过 API 主动通知 CDN 清除旧缓存,或采用版本化 URL 让新旧内容天然隔离;第三是数据统计,分析各节点的命中率、回源量、热门内容分布,动态调整缓存策略。有效命中率的公式为:

优化命中率是一场持续的“图书采购”:数据统计告诉你哪些书借阅量大,预热机制保证新书及时上架,失效策略确保下架的旧书不再误导读者。三者配合,才能让书架始终放着读者最需要的新鲜内容。

Reff=Rhit×(1−Rstale)R_{\text{eff}} = R_{\text{hit}} \times (1 - R_{\text{stale}})
命中率再高,如果内容大面积过期,有效命中率也会被打折——就像书架上的书虽然多,但很多已经过期的旧杂志。
  1. 原始命中率$R_{\text{hit}}$ 是 CDN 日志统计的缓存命中率,即命中的请求占比。
    RhitR_{\text{hit}}
  2. 过期折扣$R_{\text{stale}}$ 是命中内容中已过期或被污染的比例,$(1 - R_{\text{stale}})$ 表示命中且新鲜的占比。
    1−Rstale1 - R_{\text{stale}}
  3. 两者的乘积有效命中率同时要求“命中”且“新鲜”,因此是两者的乘积。
    Reff=Rhit×(1−Rstale)R_{\text{eff}} = R_{\text{hit}} \times (1 - R_{\text{stale}})

全球分发:让每个角落都能借到书

图书馆群的最终愿景是“全球任何一个角落的读者,都能快速借到想看的书”。CDN 的全球分发网络在全球部署数千个边缘节点,覆盖各大洲的主要城市,配合 Anycast 就近接入和三级缓存体系,让身处南非或北欧的用户访问同一个网站时,都能获得本地化的速度体验。节点覆盖密度的直接回报是延迟的显著下降。

实测数据显示,未经 CDN 的跨国直连访问,跨大洋的 RTT(往返时延)往往在 200ms 以上,而经过就近边缘节点后,用户到边缘的延迟通常能压缩到 20-50ms。这就是 CDN 的性能优势,加速比可以量化这种提升:

全球分发不仅是速度问题,更是可用性问题。某个区域出现网络故障时,Anycast 与智能调度会把流量切换到附近其他可用节点;源站整体宕机时,CDN 还能基于缓存继续服务一段时间,成为业务的“最后一道保险”。这就像图书馆群即使总馆临时闭馆,各个社区书架上的书也能让读者撑过这几天——分布式架构的韧性,正是 CDN 带给全球业务的隐形铠甲。

S=TdirectTcdnS = \frac{T_{\text{direct}}}{T_{\text{cdn}}}
加速比 = 直连源站的平均耗时 ÷ 经过 CDN 后的平均耗时,比值越大说明 CDN 带来的体验提升越明显。
  1. 直连基准$T_{\text{direct}}$ 是用户直接访问源站(不经过 CDN)的平均响应时间。
    TdirectT_{\text{direct}}
  2. CDN 后耗时$T_{\text{cdn}}$ 是用户访问 CDN 后的平均响应时间,包含边缘命中或回源的完整链路。
    TcdnT_{\text{cdn}}
  3. 两者的比值$S > 1$ 表示 CDN 更快,$S$ 越大加速效果越好。
    S=TdirectTcdnS = \frac{T_{\text{direct}}}{T_{\text{cdn}}}

AI 应用场景

视频点播平台的热门内容分发

阶段:内容分发与体验优化

解决的问题:视频平台每天有海量点播请求,如果所有用户都直连源站拉流,源站带宽会被瞬间打满,跨地域用户还会遭遇卡顿。CDN 三级架构把热门影片提前缓存到各城市边缘节点,用户就近拉流,源站只需承担冷门内容的回源流量。

具体案例:某在线教育平台在晚高峰 8 点有百万学生同时观看课程回放。通过三级节点分发,边缘命中率达到 90% 以上,源站带宽压力下降 80%,首屏加载时间从 3 秒降到 0.8 秒。平台再利用热度预测模型,在晚间 6 点提前将高热度课程预热到边缘节点。

电商大促的 DCDN 动态加速

阶段:动态请求链路优化

解决的问题:大促期间,购物车、库存查询、优惠券计算等动态请求无法用静态缓存解决,每次都要实时回源。传统公网回源路径长、握手多,高峰期延迟飙升。DCDN 的智能回源通道和连接复用技术,让动态请求通过优化的链路快速到达源站。

具体案例:某电商平台双 11 期间启用 DCDN,动态请求平均响应时间从 350ms 降至 120ms,下单转化率提升 12%。DCDN 会根据实时网络质量选择多条专线中延迟最低的一条回源,并在源站与边缘节点之间维持长连接池,免去每次请求的握手开销。

物联网场景的边缘计算协同

阶段:数据预处理与就近计算

解决的问题:智能工厂的传感器每秒产生大量数据,如果全部上传云端处理,网络延迟和带宽成本都不可接受。将 CDN 的边缘节点升级为计算节点,让数据在离设备最近的地方完成清洗、异常检测等轻量处理,只把结果上传云端。

具体案例:某智慧工厂在产线旁部署边缘计算节点,实时分析振动传感器数据,设备异常检测延迟从云端方案的 800ms 降至边缘方案的 50ms,成功在故障发生前 2 秒触发停机保护,避免了数十万元的生产损失。

Python 演示

python58 行
import random  class CacheNode:    """模拟 CDN 中的一级缓存节点"""     def __init__(self, name: str, hit_rate: float):        self.name = name        self.hit_rate = hit_rate        self.hits = 0        self.misses = 0     def lookup(self) -> bool:        """模拟一次缓存查找,返回是否命中"""        if random.random() < self.hit_rate:            self.hits += 1            return True        self.misses += 1        return False  class CDNSimulator:    """三级 CDN 架构模拟器:边缘 -> 区域 -> 源站"""     def __init__(self, edge_rate: float, region_rate: float):        self.edge = CacheNode("边缘节点", edge_rate)        self.region = CacheNode("区域节点", region_rate)        self.origin_hits = 0     def request(self) -> int:        """模拟一次用户请求,返回命中层级:0=边缘 1=区域 2=源站"""        if self.edge.lookup():            return 0        if self.region.lookup():            return 1        self.origin_hits += 1        return 2     def run(self, n: int) -> dict:        """执行 n 次请求并统计各级命中情况"""        stats = {0: 0, 1: 0, 2: 0}        for _ in range(n):            stats[self.request()] += 1        total_hit = stats[0] + stats[1]        return {            "总请求数": n,            "边缘命中": stats[0],            "区域命中": stats[1],            "源站回源": stats[2],            "整体命中率": f"{total_hit / n * 100:.1f}%",        }  if __name__ == "__main__":    demo = CDNSimulator(edge_rate=0.6, region_rate=0.7)    result = demo.run(10000)    for key, value in result.items():        print(f"{key}: {value}")
目的:模拟 CDN 三级架构中请求逐级查找的过程,统计边缘、区域、源站各自承担的请求比例,直观验证“边缘命中率越高、回源越少”的原理。
  1. class CacheNode定义一级缓存节点,内部记录命中率与命中/未命中次数,相当于图书馆里的一层书架。
  2. random.random() < self.hit_rate用随机数模拟一次命中判断,命中概率由 hit_rate 决定。
  3. if self.edge.lookup(): return 0用户请求先查边缘节点,命中则立刻返回,不再往下走。
  4. if self.region.lookup(): return 1边缘未命中才查区域节点,命中则返回“区域命中”。
  5. self.origin_hits += 1两级都未命中时回源,记录回源次数。
  6. total_hit / n * 100计算整体命中率,即边缘命中与区域命中的总和占比。

常见误区

误区CDN 只能缓存图片、视频这类静态文件,网页里的动态内容比如购物车、实时价格,用了 CDN 也没用。

正解这是对传统 CDN 的理解。现在的 CDN 体系包含 DCDN(动态内容加速),通过智能回源路由、连接复用和私有传输协议,动态请求也能获得显著加速。就像图书馆不仅有现成的藏书(静态缓存),还有同城速递服务(DCDN)能把总馆的新鲜资料快速送到你手上。

为何常见:大多数人接触 CDN 是从图片加速开始的,而 DCDN 是较新的能力,行业内宣传不足导致认知停留在“静态缓存”阶段。

误区缓存命中率当然是越高越好,最好做到 100%,这样源站就完全没有压力了。

正解命中率不是越高越好,要追求的是“有效命中率”。如果把 TTL 设得很长,命中率确实会飙升,但用户拿到的可能是过期内容。以新闻网站为例,旧新闻缓存命中率 100% 没有意义,读者要看的是最新报道。正确做法是结合内容的时效性平衡 TTL 与命中率,必要时通过主动失效保证新鲜度。

为何常见:运维指标看板最显眼的就是命中率,数据好看容易给人“性能好”的错觉,忽略了内容新鲜度这个隐藏代价。

误区Anycast 路由和 DNS 负载均衡是一回事,都是把用户请求解析到最近的服务器。

正解两者工作在完全不同的层级。DNS 在应用层解析域名返回 IP,用户浏览器得到 IP 后再发起连接;而 Anycast 是 IP 层的路由技术,多个节点共享同一个 IP,真正决定用户去哪里的,是 BGP 路由器根据 AS 路径最短原则做的选择。DNS 解析一次后可能被缓存很久,而 Anycast 每次连接都能由路由器动态决定最优路径,还能在节点故障时自动切换。

为何常见:用户感知上两者都表现为“访问就近节点”,但实现机制完全不同,非网络方向的开发者容易混为一谈。

误区全球多部署一些边缘节点,CDN 性能就会线性提升,毕竟离用户越近延迟越低。

正解节点数量增加确实能缩短“用户到边缘”的距离,但会带来新的问题:缓存被分散到更多节点后,每个节点的缓存容量变小,命中率可能下降;节点间的数据一致性维护成本上升;Anycast 路由的 BGP 宣告变多,路由收敛变慢。CDN 架构设计是在节点密度、缓存规模、运营成本之间取平衡,而不是盲目堆节点。

为何常见:用“距离越近越快”的直觉去理解分布式系统,忽略了缓存一致性、路由收敛等工程现实。

面试题

Q1. CDN 三级架构中,离最终用户最近的节点是哪一个?

单选题 · easy

  • A.源站机房
  • B.区域节点
  • C.边缘节点← 正确答案
  • D.DNS服务器

答案:C。边缘节点部署在最贴近用户的网络位置,如同社区书架就在楼下。源站(A)存放全量内容但离用户最远;区域节点(B)覆盖较大片区,是第二层;DNS 服务器(D)只负责域名解析,不属于内容分发节点。

Q2. 用户请求到达 CDN 后,缓存查找的顺序是什么?

单选题 · easy

  • A.源站 → 区域节点 → 边缘节点
  • B.边缘节点 → 区域节点 → 源站← 正确答案
  • C.区域节点 → 边缘节点 → 源站
  • D.随机访问任意节点

答案:B。请求总是先查最近的边缘节点,未命中再逐级向区域节点和源站回源(B)。这如同读者先翻楼下书架,没有再去区馆,最后才去总馆。A 的查找顺序完全反了;C 跳过了最近的边缘层;D 的随机访问会导致命中率大幅下降。

Q3. 缓存中“回源”操作的含义是什么?

单选题 · easy

  • A.用户重新发起一次请求
  • B.边缘节点从源站获取内容← 正确答案
  • C.浏览器清除本地缓存
  • D.源站主动推送数据给用户

答案:B。回源是指 CDN 节点的缓存未命中时,向上一级(最终是源站)发起请求获取内容的过程(B)。它不是用户重新请求(A),也区别于浏览器清理缓存(C)和源站主动推送(D)。回源次数越多,源站压力越大,所以要通过缓存策略控制回源率。

Q4. Anycast 路由的核心机制是什么?

单选题 · mid

  • A.多个节点共享同一个 IP,由 BGP 选择最近路径← 正确答案
  • B.DNS 返回离用户最近的节点 IP
  • C.用户手动选择访问的服务器
  • D.所有请求都转发到一个中心节点

答案:A。Anycast 让分布在不同位置的节点宣告相同 IP 地址,路由器通过 BGP 协议根据 AS 路径最短原则自动选择最优节点(A)。B 是 DNS 解析策略,属于应用层机制;C 不现实;D 恰恰与 Anycast 的分布式思想相反。

Q5. DCDN 动态内容加速主要解决什么问题?

单选题 · mid

  • A.提高静态图片的缓存命中率
  • B.加速无法缓存的实时动态请求← 正确答案
  • C.替代源站数据库
  • D.加密所有用户请求

答案:B。购物车、库存这类动态内容不能提前缓存,必须实时回源,DCDN 通过智能路由、连接复用优化回源链路(B)。A 是普通 CDN 的职责;C 不属于 CDN 能力;D 是 HTTPS 的职责,与内容加速无关。

Q6. 缓存 TTL(保质期)设置过短会带来什么影响?

单选题 · mid

  • A.缓存命中率上升
  • B.回源请求增多← 正确答案
  • C.用户延迟必然下降
  • D.源站压力减小

答案:B。TTL 过短意味着缓存内容很快过期,节点需要频繁向源站回源,回源量增大(B),源站压力随之上升(D 错误)。TTL 过短会导致命中率下降(A 错误),延迟也很难下降(C 错误)。TTL 是新鲜度与命中率的博弈。

Q7. 边缘计算与 CDN 集成后,下列哪项操作最适合在边缘节点完成?

单选题 · mid

  • A.全网用户行为的大数据训练
  • B.图片缩放、格式转换等轻量处理← 正确答案
  • C.源站数据库的全量备份
  • D.核心交易系统的分布式事务

答案:B。边缘节点资源有限,适合执行图片压缩、内容过滤、鉴权等轻量计算(B)。大数据训练(A)和全量备份(C)需要海量资源,应留在云端;交易类强一致性事务(D)也应在可控的源站环境处理,避免边缘网络波动影响数据一致性。

Q8. 以下哪些手段可以有效提升 CDN 的缓存命中率?

多选题 · hard

  • A.对大促热门商品图片提前预热到边缘节点← 正确答案
  • B.将所有资源的 TTL 设置为 365 天
  • C.通过版本化 URL 让静态资源长期缓存← 正确答案
  • D.关闭源站的所有缓存刷新接口

答案:AC。预热(A)能在流量高峰前把内容铺到边缘;版本化 URL(C)让不变的内容稳定命中缓存。B 把所有 TTL 设成一年会导致内容更新无法及时生效,虽然命中率上升但有效性下降;D 关闭刷新接口意味着内容更新后缓存无法失效,会大量返回过期数据。

Q9. CDN 在全球化分发场景中带来哪些价值?

多选题 · hard

  • A.用户就近接入,跨国访问延迟大幅降低← 正确答案
  • B.源站只需承担回源流量,带宽压力减小← 正确答案
  • C.源站故障时缓存内容仍可继续服务← 正确答案
  • D.完全消除所有网络故障

答案:ABC。就近接入降低延迟(A)、回源流量瘦身减轻源站压力(B)、缓存形成容灾缓冲(C),都是 CDN 的核心价值。但 CDN 不可能消除所有网络故障(D),跨海光缆中断、DNS 故障等极端情况依然存在,需要多层冗余配合。

Q10. 关于 Anycast 路由与 BGP 协同的工作机制,下列说法正确的是?

多选题 · extreme

  • A.节点宕机后通过撤销 BGP 路由,流量自动切换到其他节点← 正确答案
  • B.路由器根据 AS 路径长度选择最优出口← 正确答案
  • C.同一 IP 在不同地理位置由不同节点响应← 正确答案
  • D.用户需要手动更新 DNS 记录才能切换节点

答案:ABC。Anycast 节点故障时停止宣告路由,BGP 自动收敛到其他节点(A);路由器按 AS 路径最短原则选路(B);同一 IP 由最近的节点响应(C)。D 错误:Anycast 的故障转移发生在 IP 路由层,用户无需修改或等待 DNS 更新,这正是它与 DNS 负载均衡的本质区别。