在当今移动互联网时代,越来越多的人通过手机观看视频,以丰富他们的娱乐生活。
然而,在追剧时,你是否曾想过一个问题——为什么有时明明网速很快,视频却依然卡顿呢?

在解答这个问题之前,让我们来做一个简单的算术题。
以曾经非常热门的《延禧攻略》为例,当时有超过1000万的用户同时在某视频平台观看。
如果这些用户观看的是1080p的视频(理论上需要4Mbps的带宽),那么总共所需的带宽流量为10,000,000 * 4Mbps = 40,000,000Mbps ≈ 40Tbps。
对于像优酷、爱奇艺这样的互联网视频内容提供商来说,这无疑是一个巨大的流量压力。
普通计算机的网卡带宽为1Gbps,而现代服务器的网卡通常为10Gbps。如果优酷拥有一台超级服务器,那么这台服务器需要4000块万兆网卡,并且必须满负荷运行,才能支持这1000万用户的流畅观看。
对于一些实力较弱的服务商,或者在突发流量激增的情况下,可能会导致网络拥塞,从而出现卡顿和延迟。
有这样一句话:当用户打开一个页面,等待时间超过4秒,他们就会关闭这个页面,这意味着该用户将流失。

用户的流失意味着金钱的损失。没有任何一家互联网服务提供商希望这种情况发生。因此,他们必须想尽办法迅速呈现内容,减少用户的等待时间,提升用户体验。
而CDN技术,正是有效缩短延迟的解决方案。
CDN的起源
在上世纪80年代,互联网技术刚刚进入民用领域。人们主要通过拨号上网,当时带宽较低,用户数量也相对较少,因此不会给骨干网和服务器带来过大的压力。
1995年,麻省理工学院教授、互联网发明者之一的Tim Berners-Lee博士意识到,网络拥塞日益严重,可能成为互联网发展的最大障碍。
因此,他提出了一个学术挑战,希望有人能创造出一种全新的方法,从根本上解决网络拥塞问题,实现互联网内容的无拥塞分发。
Tim Berners-Lee的办公室隔壁是Tom Leighton教授,他对这个挑战产生了兴趣,并邀请研究生Danny C. Lewin和其他顶尖研究人员共同攻克这个技术难题。
最终,他们开发出一种基于数学运算法则的动态路由算法,有效地解决了这个问题,这项技术就是CDN。
他们还因此成立了公司,以发挥其商业价值,这家公司后来成为著名的CDN服务提供商——Akamai。

CDN的工作原理
CDN技术其实并不复杂。其核心理念是将内容缓存在离终端用户较近的地方。
既然内容源在远处,我们就在用户附近建立缓存服务器,将远端的内容复制到这些服务器上,这样就可以减轻负担。

由于这项技术是将内容进行分发,因此被称为CDN——内容分发网络(Content Delivery Network)。
具体来说,CDN通过在用户访问相对集中的地区或网络中布置多个缓存服务器(CDN边缘节点),当用户访问网站时,利用全局负载均衡技术,将用户的请求指向最近的缓存服务器,由其响应用户的请求。
有人可能觉得这就是“镜像服务器”,但实际上二者并不相同。镜像服务器是源内容服务器的完整复制,而CDN则是部分内容的缓存,智能程度更高。
确切地说,CDN是更智能的镜像+缓存+流量导流。
此外,CDN不仅可以缓存视频内容,还能对网站的静态资源(如各种类型的图片、HTML、CSS、JS等)进行分发,以及对移动应用的静态内容(如安装包、应用内的图片和视频等)进行分发。
我们来举个例子,看看CDN的具体工作流程。
假设某个用户想要访问优酷的视频点播内容,具体步骤如下:

1. 用户在应用中点击内容,应用根据URL地址请求本地DNS(域名解析系统)进行IP地址解析。
2. 本地DNS系统将域名解析权交给CDN专用DNS服务器。
3. CDN专用DNS服务器返回CDN的全局负载均衡设备的IP地址给用户。
4. 用户向CDN负载均衡设备发起内容URL的访问请求。
5. CDN负载均衡设备根据用户的IP地址和请求的内容URL,选择一台靠近用户的缓存服务器。
6. 负载均衡设备告知用户这台缓存服务器的IP地址,让用户向该缓存服务器发起请求。
7. 用户向缓存服务器发起请求,缓存服务器响应并将所需内容传送至用户终端。
8. 如果该缓存服务器上没有所需内容,则会向源服务器请求内容。
9. 源服务器返回内容给缓存服务器,然后缓存服务器将内容发送给用户,并根据自定义的缓存策略判断是否将内容缓存到缓存服务器上。
CDN的优势
使用CDN技术的最大好处是加速内容访问——用户与内容之间的物理距离缩短,从而减少用户的等待时间。
此外,分布在不同网络线路的缓存服务器也加速了跨运营商的访问。
例如,中国移动用户访问中国电信网络的内容源时,可以通过在中国移动架设CDN服务器来实现加速,效果非常显著。
CDN还带来了安全方面的好处。内容分发后,源服务器的IP地址被隐藏,受到攻击的概率大幅降低。而且,当某个服务器出现故障时,系统会调用邻近的健康服务器来提供服务,从而避免对用户造成影响。
正因为CDN的诸多优点,现今所有主流的互联网服务提供商都在使用CDN技术,所有云服务提供商也都提供CDN服务(价格通常按流量计费)。

CDN的局限性
尽管CDN有很多优点,但它并非万能。在某些场景下,CDN的应用效果有限。
首先,CDN更适合静态内容,而不适用于动态内容。用户生成的实时交互数据是难以缓存的,例如频繁修改的数据库表单内容。
其次,很多应用提供商和内容服务商为了保护自身数据的隐私,不允许第三方CDN缓存他们的数据,只允许自家的CDN进行缓存,这会对用户体验造成一定影响。
第三,建设CDN需要不小的资金投入。无论是自建服务器搭建CDN,还是租用云服务提供商的CDN服务,都会产生费用。而且,覆盖的区域越多,成本越高。由于很难准确预测这些CDN的使用率,可能会导致资源的浪费。
CDN与通信行业
CDN是从传统IT行业发展而来的一项服务,但对于通信行业而言,CDN也具有极大的商业价值。
互联网服务提供商使用CDN,实际上是以存储来换取时延——通过购买CDN服务器或云计算服务来改善用户体验。
通信运营商也在追捧CDN,但他们的目标是通过存储来换取带宽——通过“下沉”服务,减轻上层骨干网络的流量压力,避免硬件扩容,从而降低网络建设成本。
这是很容易理解的,如果大量业务流量在骨干网中传输,必然会导致上层网络的压力增加,因此需要不断扩容。如果在底层就能解决这些流量问题,骨干网的带宽压力自然会减轻。

许多运营商已经将CDN下沉到地市级,以此减轻压力,同时提升用户体验。
说到这里,广大的通信行业从业者是否想到了什么?
没错,这与当前非常热门的移动边缘计算存在异曲同工之妙。

随着网络能力的不断提升,内容资源和计算能力都在向上发展,集中在云计算中心,由核心云计算中心为所有终端节点提供服务。

然而,随着时间的推移,人们发现,对于覆盖大范围区域的众多用户,尤其是国家或全球级的服务,无论中心设在哪里,或者无论其能力多么强大,都无法克服物理距离所带来的延迟和网络拥塞。
因此,人们开始将云计算中心进行部分“下沉”,这便产生了雾计算、霾计算,甚至有人开始质疑,集中式计算是否会最终被分布式计算取代。

在我看来,并不存在完全取代的问题。不同场景带来不同需求,而不同需求则需要不同的网络架构。场景的多样性是现实存在的,因此,网络架构的灵活性也是必然的选择。
CDN与边缘计算之间的关系是什么呢?
我个人认为,CDN可以被视为边缘计算的一种特殊形式。CDN主要实现存储能力和部分计算能力的下沉,其功能相对有限。而真正的MEC边缘计算则功能更全面,具备更强的计算能力,更偏向于算力下沉,而非单纯的内容下沉。
以上就是关于CDN的全面介绍,希望对大家有所帮助!感谢大家的耐心阅读,我们下期再见!
