欢迎访问深圳敏捷云计算科技有限公司!

CDN 技术:通俗易懂的解释

2024-06-05 原创文章

导言

几年前,我在浏览互联网时发现了一个新的电子商务网站。我注意到网站上的图片加载速度不快。我刷新了页面并尝试了几次。最终,经过十秒钟的等待,我才能够看到渲染后的网页和图片。

起初,我以为是我的互联网连接不好,但实际上我的下载速度足够快。我也能够在YouTube上观看高清视频。这引发了我对为什么电子商务网站无法快速加载图片的好奇心。

内心好奇的工程师决定研究这个网站性能缓慢的原因。我迅速打开了谷歌的开发者工具,并转到网络选项卡进行分析。经过查阅了几篇Stack Overflow的帖子,得出的结论是该网站没有使用内容交付网络(CDN)。

在本文中,我们将了解什么是CDN,为什么需要它以及它的工作原理。此外,我们还将看到网站如何通过利用CDN加速其内容交付。

背景

网站性能差给我留下了不好的第一印象。由于它的速度慢,我决定不再在这个网站上购物。

在今天的世界中,网站的性能至关重要。如果您的网站显示出停机或加载缓慢,很难留住用户。这适用于所有的企业。许多网站甚至不得不关闭他们的网站,因为他们的竞争对手的网页加载速度比他们快。


在深入了解内容交付网络(CDN)之前,我们将先了解一些基本概念。让我们了解一下网页是如何在我们的设备上显示的。

以上图表概述了客户端请求页面并最终向用户显示页面的过程。以下是详细信息:

1. 客户端(移动应用/浏览器)向Web服务器发送HTTP请求。

2. 服务器处理请求,执行检查和验证,从数据库、硬盘或Blob存储中获取数据。此外,它构造了一个响应。

3. 客户端读取响应。响应通常是一个HTML页面,返回给客户端。

4. 最后,HTML页面显示给用户。
HTML页面还可以包含图片、gif、视频等。因此,除了文档外,客户端还有一个额外的责任来显示这些数据。
客户端还需要Javascript文件来使页面具有动态性。此外,它需要CSS文件来为网页设置样式。在开发者工具的网络选项卡中,您会看到下面图片中所示的选项。
在开发者工具中的网络选项卡
如果您选择JS作为选项,您应该能够查看所有用于Javascript文件的请求和响应。其他类型,如CSS、Img、Doc等,也是如此。
我们可以将任何网页上的内容分为两种类型 - 静态和动态。

静态
如果内容不经常更改,则变为静态。一般来说,图片、Javascript和CSS文件不经常更改。
此外,即使这些文件发生更改,我们也不会向用户显示不正确的数据。只有在文件增强时,用户体验或网站的外观和感觉才会发生变化。
在某些情况下,这些文件会在服务器的文件系统上保留。换句话说,Web服务器会从硬盘获取这些文件并将其发送回客户端。很多时候,这些文件被持久化在blob存储中,例如S3、Azure Blob存储等。
静态数据的大小可以是KB、MB或GB。电影文件体积大,消耗大量带宽。

动态
经常更改的数据是动态的。例如:在YouTube上观看视频的观众人数。在社交媒体网站上的评论、点赞或分享。
通常,服务器将动态数据存储在数据库中。根据用例,它可以是SQL或NoSQL。对于每个请求,服务器查询此数据,然后在响应中传递它。在大多数情况下,JSON用于数据序列化。


与静态数据相比,动态数据的大小要小得多,例如电影、视频或图像。它的大小是以几KB为单位。服务器还可以将此数据存储在外部缓存中,例如Redis或MemCached,以提高效率。

影响网站性能的因素是什么?

延迟

延迟是网站完全呈现所有数据所需的时间。如果延迟增加,用户就必须等待更长的时间。用户等待的时间越长,转化率就会降低。

呈现页面时延迟较低的网站性能更好。这些网站将在几毫秒内向用户显示页面。

延迟取决于多个因素。它包括以下内容:

用户和服务器之间的距离

服务器的处理时间

从数据库检索数据所需的时间

可用性
如果网站的服务器崩溃,客户端将无法查看网页。服务器还应该能够处理不断增加的负载。
如果网站不具备可伸缩性,服务器处理时间将增加,延迟也将增加。在当今世界,停机时间是不被容忍的。
由于这些网站是全球性的,人们期望它们可以全天候、全年无休地运行。用户希望能够无缝观看视频、在线购物、与朋友交流等。

什么是内容分发网络(CDN)?

问题

让我们假设我们正在启动一个类似 TikTok 的新的短视频应用。我们构建了网站的第一个版本并将其部署在美国的洛杉矶。我们的网站可以在全球范围内访问,并慢慢开始受到欢迎。

我们注意到我们从欧洲、中东和印度接收到了流量。随着流量的增长,我们进行了水平扩展并添加了更多的服务器。然而,来自印度的用户抱怨他们的加载时间更长。而来自美国的用户没有遇到同样的问题。为什么会发生这种情况?

如上所述,我们的服务器部署在美国的洛杉矶。对于印度用户来说,网络数据包的传输距离比美国用户要大。由于距离更远,所需时间也将成比例增加。如果在美国获取数据的时间是5毫秒,那么对于印度用户来说将需要35毫秒(距离是美国的7倍)。

同样的情况也适用于欧洲用户。在欧盟的网站加载时间会比美国的网站加载时间长。它会接近美国的3.5倍。

此外,我们服务器上的视频文件不经常变化。如果一个视频变得病毒感染,同一个视频文件将被全球用户访问。如果视频文件的大小较大,问题将加剧,因为网络带宽将成为瓶颈。

解决方案

以上问题将通过减少客户端和服务器之间的距离来解决。由于视频文件不经常更改,我们可以使用缓存机制。

通过缓存,我们将从服务器请求文件一次,然后缓存会为后续请求提供服务。这将减少服务器的整体负载。

内容分发网络(CDN)应用了这种解决方案,并加速了网站的内容传递。我们的主要网络服务器也被称为源服务器。CDN由一组地理分布的服务器组成。这些服务器也称为点对点(POP)服务器。POP服务器所在的位置被称为边缘位置。

POP服务器为位于同一地理位置的用户提供内容服务。例如:欧洲的POP服务器将为欧洲用户提供数据服务。位于印度的POP服务器将为印度用户提供服务。

类比

让我们来举一个从银行提取现金的例子。想象一下如果没有 ATM 机会发生什么?如果没有 ATM 机,那么银行外面将排起长长的队伍。我们需要很长时间才能拿到钱。此外,在银行假期,人们将无法灵活提取现金。

不同地方的 ATM 机,如地铁站、餐厅、机场等,确保了银行门口不会排长队。人们可以在自己方便的时候取钱。此外,人们可以去最近的 ATM 机,而不是去银行(距离可能更远)。

你可以把银行想象成源服务器,把 ATM 机想象成 CDN。CDN 靠近用户的位置。它们地理分布,减轻了源服务器的负载。此外,它们通过处理静态内容的流量提高了网站的可用性。

CDN的工作原理

下面的图表显示了当您在浏览器中加载网站时发生的高级工作过程:

1. 浏览器向 DNS 发送 IP 地址查找请求。

2. DNS 服务器将以最接近的 CDN 服务器的地址作为响应。

3. 浏览器将请求发送到 CDN 服务器(POP)以获取数据。

4. CDN 服务器将检查数据(图像、js、css、视频等)是否存在于其缓存中。

5. 如果数据不存在,POP 服务器将向源服务器发送请求以获取内容。

6. 稍后,POP 服务器将存储内容并将数据发送回用户。

7. CDN 用户还可以在内容上设置 TTL(生存时间)。例如:在图像文件上设置15分钟的 TTL。CDN 服务器将在过期之前向用户发送相同的数据。

8. 一旦CDN服务器检测到内容已过期,它将从源服务器重新获取数据。

使用CDN的好处

网站性能

客户端从CDN而不是源服务器获取静态数据(图像、视频等)。CDN服务器地理位置接近用户。随着距离的减小,获取数据的时间也减少。这导致网站加载时间显著提高。

加载时间更快的网站改善了用户体验。用户更倾向于高效和性能优越的产品。例如:将Google Chrome与Internet Explorer进行比较。

可用性

CDN服务器承担了大部分网站负载。由于CDN服务器充当缓存,源服务器受到了流量峰值的保护。由于源服务器的负载较少,这台服务器崩溃的可能性较小。

网站的整体可用性得到了改善。如果出现地区性的流量激增,相应地区的CDN服务器将扩展并处理不断增加的负载。

带宽

网站的主要开销是带宽消耗成本。由于CDN处理了流量,源服务器提供的数据量大大减少。这有助于减少网站所有者的带宽成本。

总结

内容分发网络由一组服务器组成,这些服务器地理位置接近用户,加速网站内容的传递。

浏览器或移动应用程序从CDN而不是源服务器请求静态数据。

CDN从源服务器获取数据并将其缓存。随后的请求由CDN服务器提供服务。

CDN的主要好处包括改善网站性能、减少带宽消耗成本和提高网站的可用性。

AgileCDN引领新一代CDN技术

随着CDN技术的不断进步和行业需求的日益增长,创新服务如AgileCDN应运而生。AgileCDN不仅提供了传统CDN服务的所有核心功能,例如内容缓存和分发、负载均衡以及数据安全保护,还引入了更多前沿功能。这些功能包括更智能的内容优化、实时流量分析、以及自动化的网络资源管理,使得AgileCDN能够为不同规模和类型的企业提供更灵活、更高效的解决方案,从小型团队到大型跨国企业均能从中受益。

全球范围内,CDN技术的应用正在持续扩展。它不仅使内容传输更加迅速,提升了用户体验,也大幅提高了网络的效率和稳定性。在这样的背景下,AgileCDN这样的服务提供商正在通过持续的技术革新,引领行业向着更高效和智能的未来发展。

作为Ali Cloud, Oracle云服务等众多云服务企业合作,为用户提供更全面和高效的云服务解决方案。利用AgileCDN的先进技术和公有云平台的强大功能,我们希望为客户提供一个无缝、快速且安全的云体验。这种战略合作不仅扩大了我们的服务范围,也确保我们能在客户面临的数字化转型过程中,提供强有力的支持。