知识卡片

CDN多层级架构:用分层收敛回源请求,避免海量节点同时打爆源站

普通读书笔记卡

内容

大型CDN厂商的边缘节点数量往往能达到成千上万个,如果每个边缘节点在缓存未命中时都直接向客户的源站发起回源请求,成千上万个节点同时请求同一个源站,效果上等同于对客户源站发起了一次DDoS攻击——源站根本扛不住这样的并发冲击。CDN系统给出的解法是把节点划分为多个层级(如常见的三层架构):只有少数经过挑选、且互为备份的顶层节点才真正有权向客户源站发起回源请求,大量的边缘节点缺数据时先向上一级节点请求,一层层向上收敛,真正触达源站的请求数量被压缩到远小于边缘节点总数的规模;”回源次数”因此也成为衡量一套CDN系统好坏的重要指标——回源次数越低,说明这套分层缓存体系收敛并发请求的能力越强。这个案例给出一条通用的架构设计原则:当海量的下游节点都可能需要访问同一个稀缺的上游资源时,不能让每个下游节点都直接触达上游,而要引入若干层中间聚合节点,把原本会同时打向上游的海量并发请求,逐层收敛成一小部分请求,这类分层收敛的思路在任何”多对一”的高扇入访问场景中都有参考价值。

参考来源

- 位置:《高可用架构(第1卷)》第7章《安全与网络》"7.3 CDN对流媒体和应用分发的支持及优化"节,"7.3.1 CDN系统工作原理","5.资源的部署方式"(源文件:_epub-src/OEBPS/Text/Chapter7_3_2.xhtml) - 结论依据:原文说明"对于一些大的CDN厂商来说,节点数量非常多(成千上万),如果同时请求客户源站,就相当于对客户发起了DDoS攻击。因此,基本上CDN系统都会被划分为多个层级……为了保证系统的可靠性,每个节点存在多个互相备份的顶层节点。只有这些顶层节点才能真正地向客户源站发起'回源'请求。'回源'次数本身也作为CDN系统中一个重要指标来衡量CDN系统的好与差",直接支撑本卡片结论。 - 原始内容:对于一些大的CDN厂商来说,节点数量非常多(成千上万),如果同时请求客户源站,就相当于对客户发起了DDoS攻击。因此,基本上CDN系统都会被划分为多个层级……为了保证系统的可靠性,每个节点存在多个互相备份的顶层节点。只有这些顶层节点才能真正地向客户源站发起"回源"请求。