凤凰架构:构建可靠的大型分布式系统
上QQ阅读APP看书,第一时间看更新

4.4 内容分发网络

前面几节介绍了客户端缓存、域名解析、链路优化,这节我们来讨论它们的一个经典的综合运用案例:内容分发网络(Content Distribution Network,CDN,也有写作Content Delivery Network)。

内容分发网络是一种十分古老的应用,相信大部分读者都或多或少对其有一定了解,至少听过它的名字。如果把某个互联网系统比喻为一家企业,那内容分发网络就是它遍布世界各地的分支销售机构。假设现在有客户要买一块CPU,那么订机票飞到美国加州Intel总部肯定是不合适的,到本地电脑城找个装机铺才是通常的做法,在此场景中,内容分发网络就相当于电脑城里的本地经销商。

内容分发网络又是一种十分透明的应用,可能绝大多数读者对于它为互联网站点分流的工作原理并没有什么系统性的概念,至少没有自己亲自使用过。

如果抛却其他影响服务质量的因素,仅从网络传输的角度看,一个互联网系统的速度取决于以下四个因素。

·网站服务器接入网络运营商的链路所能提供的出口带宽。

·用户客户端接入网络运营商的链路所能提供的入口带宽。

·从网站到用户经过的不同运营商之间的互联节点的带宽,一般来说两个运营商之间只有固定的若干个点是互通的,所有跨运营商之间的交互都要经过这些点。

·从网站到用户的物理链路传输时延。爱打游戏的读者应该都清楚,延迟(Ping值)比带宽更重要。

以上四个因素,除了第二个只能通过换一个更好的宽带才能改善之外,其余三个都能通过内容分发网络来显著改善。一个运作良好的内容分发网络,能为互联网系统解决跨运营商、跨地域物理距离所导致的时延问题,能为网站流量带宽起到分流、减负的作用。举个例子,如果不是有遍布全国乃至全世界的阿里云CDN网络支持,哪怕把整个杭州所有市民上网的权力都剥夺了,把带宽全部让给淘宝的机房,恐怕也撑不住全国乃至全球用户在双十一期间的疯狂“围殴”。

内容分发网络的工作过程,主要涉及路由解析、内容分发、负载均衡和CDN应用四个方面,由于下一节会专门讨论负载均衡的内容,所以这部分在本节暂不涉及,下面我们来逐一了解其余三个方面。