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

内容交付网络:运转机制与益处

2024-05-30 原创文章

内容交付网络(CDN)的主要目标是以高可用性和高性能向最终用户传递数据。CDN网络通过在尽可能接近最终用户的地方托管数据来实现这一目标。这是通过在世界各地的战略位置建立POP(Point of Presence - CDN网络存在/节点的位置)来实现的。

本文由软件工程师和大数据爱好者辛杜拉·加德(Sindhura Gade)撰写,并由Akamai的解决方案架构师Anup Gautam审查。本文是由Mario Gerard发起的协作博客平台计划的一部分。

什么是CDN以及我们为什么需要它?

简单来说,如果数据/内容在多个服务器的多个位置上都有副本,那么在互联网上检索数据/内容将更快。例如,如果一个位于意大利的用户访问一个托管在加利福尼亚的网站,由于数据是从如此遥远的服务器检索的,即从一个距离如此遥远的服务器检索的,他/她会因为体验到延迟(网站响应/页面加载延迟)。

为了解决这种物理劣势,可以设置更多的服务器/节点,并在物理位置上逻辑地放置它们,以存储网站的数据副本,例如图像、javascript、CSS等。因此,用户的请求将由位于最近物理位置的服务器处理,缩短周转时间,提高用户体验。这种全球分布的多个服务器网络,旨在根据用户的位置为用户提供一组共同的数据,称为内容交付网络 - CDN。

这就是为什么CDN又被称为边缘缓存,因为它们位于最接近客户的边缘,从而为最终用户提供了他/她所需数据的最低延迟。位置是根据用户的集中程度和其数据使用模式进行精心挑选的。

CDN最流行的用例是媒体文件 - 无论是音乐、图片还是视频;原因是因为从芝加哥的家庭数据中心到位于日本的最终用户发送媒体文件距离太远,会非常耗时。为了追求卓越并提供更好的客户体验,CDN使最终用户更快地消耗大量数据。虽然CDN最初只用于媒体文件,但现在已经增加了对HTML、CSS、javascript文件和样式表的存储。通过这种方式,您可以通过使用内容交付网络 - CDN使用户的整个静态内容在用户的位置更快地显示出来。

内容交付网络(CDN)可以提供多种优势:

增强的最终用户体验

改善的下载速度和加速的网站性能

减少网站崩溃 - 因为处理是分散的,负载是分布式的
请注意,CDN可能对基于多种因素的网站有益,如网站优化、流量、访客数量、地理相关性、成本等。

对于全球/非地区性最终用户存在大量流量的网站,CDN可能是一个明显的选择。然而,增加网站速度的第一步应该是优化网站,即缓存、优化数据库、性能调优Web服务器等。

对于具有最小流量的本地化网站,选择CDN可能会为处理用户请求创建额外且不必要的跳跃,从而增加延迟。同样,应用上述优化可能更有效。

内容交付网络(CDN)的工作原理是怎样的?

每个来自Web浏览器的请求首先经过DNS(域名服务)。 DNS将请求定向到负责相应域管理的CDN中心。 CDN中心通过负载平衡技术确定“最近”的服务器,例如:

地理位置 - 最近的服务器

提供商的偏好 - 从处理成本的角度来看,更便宜的服务器

服务器负载 - 如果最近的服务器已满负荷,则第二个最近的服务器可能提供更快的响应

虽然用于响应用户请求所需的动态内容来自主服务器,但所需的静态内容是由CDN中心确定的最近边缘服务器下载的。

边缘服务器的内部工作原理类似于浏览器缓存。 即在接收请求后,将在缓存中搜索所需的数据/内容。 如果搜索失败,并且服务器无法在缓存中找到数据,则会向主服务器请求数据。

原始服务器是网站/CDN提供的所有数据的真实点。 来自原始服务器的响应由边缘服务器保存/缓存,以服务于任何未来的请求。 因此,任何内容交付网络的性能指标都可以是它能够响应的请求的百分比,以及相应的静态内容是否来自边缘服务器的缓存。

这引出了一系列问题:

我们如何决定将哪些内容放置在CDN上,而不是由原始服务器处理?

我们是否在所有边缘服务器上存储所有数据的副本? (或者)数据是否根据服务器附近用户群的使用统计来存储?

核心思想是在CDN上存储那些不经常更改的内容的副本。 即静态内容。 任何必须根据请求信息(例如用户登录、表单数据等)动态提供的数据必须由原始服务器处理。

CDN中心确定特定中心访问的哪些内容,并在TTL(存活时间)处将其缓存在边缘位置。 如果中心确定特定内容在多个边缘位置上都变得流行,则它会主动将内容推送到边缘。 TTL在POP中进行管理。

因此,最常见的Web响应通常是从边缘服务器的缓存中检索的静态内容和通过对原始服务器的请求检索的动态内容的组合。

边缘服务器的缓存是如何维护的?

由于边缘服务器是CDN网络的最关键部分,因此有效地维护它们的缓存非常重要,以确保最常访问和最近访问的数据始终可用于快速检索。 另一个重要因素是在边缘服务器上维护内容的最新副本,以便用户始终获取最新的内容。

每个缓存的对象都有一个到期时间(TTL - 存活时间),并且如果需要,甚至可以强制将其从缓存中删除。 强制消除的原因可能是为新内容创建空间,内容不再有效,即已在源处修改,或者不再需要,在特定CDN节点/边缘服务器上使用较少等。

缓存的对象可以在边缘服务器上删除(完全删除)或无效(将到期日期设置为过去的日期)。 如果对象无效,则边缘服务器将请求原始服务器获取更新/最新数据(如果适用)。 但是,如果对象被删除,则不会进行任何尝试。

因此,无效是最常用的方法,因为它使边缘服务器能够在获取最新内容时仍能提供过期/陈旧版本的数据。

一些常见的缓存失效策略包括:

清除 - 立即从缓存中删除内容。 当请求对应内容时,将获取并存储相同的内容在缓存中。

刷新 - 即使相应的内容可用,也从源服务器获取新版本的内容

禁止 - 如果引用了“禁止”列表中的相应内容,则从原始服务器获取新版本内容。 该方法事先不涉及删除内容,而是在收到用户请求时更新内容。

CDN技术的最新发展

以下是CDN技术的一些最新进展。

DDoS防护

分布式拒绝服务(DDoS)攻击是CDN网络面临的主要威胁之一。它涉及使用恶意软件将数千台计算机定向发送虚假请求到特定目标,意图是减缓网络并使其对真实用户请求不可用。这对网站的声誉是有害的。尤其受到这种威胁影响的是处理实时视频流和点播视频服务的CDN提供商,因为这会导致在线视频质量非常低劣。

在这个时代,黑客会找到无数种智能方式来突破安全系统和防火墙。在这么多不同的起源点中,很难区分合法请求和垃圾邮件。在这些条件下,CDN提供商要提供对这些DDoS攻击的保护是一项具有挑战性的任务。

DDoS攻击可能针对应用程序层(OSI模型的第7层)以禁用网站的特定功能。例如搜索功能、添加好友、上传照片等。这些攻击通常被用作一种分散注意力的手段,背后的意图是促成一个未经监控的安全攻击。DDoS攻击还会针对网络级别的损害,通常伴随着应用层攻击。大量请求可以被发送以饱和带宽,导致服务器宕机。

幸运的是,内容交付网络(CDN)提供商已经能够制定策略来识别和阻止这些攻击。识别网络或网站是否正在遭受攻击涉及持续寻找迹象,包括但不限于:

来自单个IP的请求数量超过了常见的阈值。通常是每秒请求量(RPS)。

请求的数量与发送请求的时间。例如,如果在1分钟内从同一个IP接收到68个请求,肯定有什么问题。

网站的平均响应时间

日志分析 - 检查意外的流量激增

接收到过多的SYN数据包

不同IP的相同数据包

可以设置监控脚本来查找这些迹象,并通过电子邮件向支持组发出警报。

一旦攻击被识别,下一个障碍是减轻对应用程序的影响。这是困难的,因为将合法请求与攻击分离并不是一件容易的事情。一些方法包括:

自动阻止IP地址 - 黑名单。可以通过日志分析获得。

阻止暴力攻击 - 基于RPS识别IP地址,并在RPS表明攻击行为时阻止它们

根据数据包大小、长度等阻止请求
Akamai(一家领先的CDN提供商)提供了一项名为“Kona DDoS Defender”的服务,可提供针对DDoS攻击的保护。它解决了应用程序/网站希望为任何DDoS攻击做好准备或已经受到攻击的情况。 Kona DDoS Defender能够在攻击到达应用程序之前停止攻击,从而确保网站性能不受负面影响。网络层攻击,如SYN洪水攻击,将自动被抵御。它对正在进行的攻击进行实时分析,并调整规则/创建自定义规则以适应攻击特征。这种保护被称为“广泛保护”,因为它可以应对攻击规模和复杂性的变化。您可以在这里找到更详细的信息。

内容交付网络与DevOps

过去,生产部署是费时费力的,我们拥有整个季度甚至一年的预先确定的部署计划。如今,部署之间的平均时间间隔只有几秒钟!这种高度敏捷的环境要求具备更新内容、召回内容和在短时间内部署新版本等能力。即,需要有效的缓存管理来构建CDN。例如,一个网站发布了一篇“你应该讨厌哈利波特的10个理由”的文章,但一个小时后,如果报告/数据分析显示超过80%的用户在10秒内离开了网站,这篇文章就必须被召回。同样地,消费者希望获得最新的比赛比分、选举民调结果、直播节目、电影评论、新闻快讯等等。基本上,世界希望看到事情发生的样子。

DevOps团队必须能够推送新功能、新内容,分析任何性能问题,如图像加载缓慢、视频缓冲困扰等等,以便能够及时修复并重新部署。

如今,CDN为DevOps团队提供了出色的支持,以帮助他们保持所需的步伐。以下是一些功能:

实时分析

支持最详细的故障排除,基于API的分析支持

优化缓存策略

更快的失效请求传播,更快的变更推出,更快的清除时间,自动优化以支持临时内容部署

缓解安全威胁

主要是DDoS防护

所有这些功能都可以通过高度交互式的用户界面和/或API调用进行访问和控制。

边缘计算和物联网

到目前为止,我们已经看到CDN如何在边缘维护静态内容以实现快速数据检索和降低延迟。在这个旅程中的下一步是为边缘提供计算能力 - 边缘计算!低延迟现在变得比以往任何时候都更加重要。数据越老,其价值就越小。

在典型的物联网用例中,例如传感器等边缘设备收集所有请求数据并将其推送到云/数据中心进行计算/处理。通过边缘计算,部分数据在本地进行处理,从而减少了流量和延迟,并提高了服务质量(QoS)。这对今天的许多行业非常理想,例如医疗、金融、制造等等。

LimeLight(一家领先的CDN提供商)提供了管理物联网数据增长的服务,使数据可以在本地进行计算。它拥有一个高速的私有网络,与公共网络隔离,提供了增强的性能和安全性。通过在全球各地战略性地设置PoP,它消除了由于数据传输到遥远数据中心而引起的延迟。 "边缘分析"和分布式服务将计算能力带到数据源附近,并确保成本、复杂性和延迟降低。通过“分布式对象存储”,数据可以快速存储在本地PoP中,而不必传输到集中的云存储中。

理解授予边缘服务器计算能力的安全方面也很重要。一个观点是,与将数据传输到易受攻击的网络相比,将数据在边缘处理更安全,因为它更接近其源头。另一个观点是,在没有参与源服务器的情况下,边缘网络中的同行在处理敏感数据时必须采取高度的预防措施。因此,必须采用先进的安全机制/加密技术来保护边缘计算。

“最后一英里”是在电信和互联网领域中广泛使用的短语。它指的是物理连接到最终用户处的网络部分。这也决定了CDN的性能指标。也就是说,它衡量了内容传递到用户的速度,包括最后一部分连接——从ISP到客户设备。内容交付通常在最后一英里放慢,特别是对于通过移动设备浏览的用户。

“最后一英里加速”涉及通过压缩技术加速最后一英里的数据。如果源服务器提供的数据/内容未经压缩,则在边缘服务器应用压缩以实现低延迟。如果从源服务器接收到压缩数据,则按原样传输。

Akamai提供“最后一英里加速”作为CDN客户可以启用的功能。

自适应内容交付

这涉及根据以下几个因素适应地交付内容:

客户可用带宽

预测未来的内容需求/访问

特定于内容的CDN服务——移动、视频等!

这个想法涵盖了诸如自适应比特率流和自适应加速等服务,旨在满足不断变化的用户/设备/网络需求,以确保稳定且增加的用户参与度。

自适应比特率流(ABR)涉及为不同的网络类型、不同的连接速度、不同的分辨率等提供高质量的体验。用户的带宽实时监控,视频流的质量根据其进行调整。这使得由于对影响无缝内容传递的因素的持续适应而使顾客享受到了无中断的服务。

自适应加速涉及实时监控用户,并启用智能内容缓存,即缓存那些未来可能被用户访问概率较高的内容。这种方法极大地减少了周转时间、延迟和网络负载。

Akamai也提供这项服务作为CDN客户根据偏好可启用的功能。此功能以两种方式工作:自动服务器推送和自动预连接。 “自动服务器推送”使服务器能够对单个请求发送多个响应。即在响应中发送浏览器需要的多个项目的引用,如CSS、Javascript等。“自动预连接”使浏览器能够预先确定其将需要的连接并在之前建立它们。

智能清除

内容新鲜度是CDN的关键成功因素之一。重要的不仅是内容新鲜,还有一种维护内容新鲜度的简单方式。对于任何CDN来说,在全球PoP网络上管理内容是一项艰巨的任务。因此,如果缓存管理任务,如清除,花费了大量时间,就无法保证内容的新鲜度。这可能导致问题,如播放旧内容、下载不正确的文件等,这对于医疗和金融等行业可能非常严重。

LimeLight推出了“智能清除”,这是一种下一代清除技术,可以在全球网络上快速执行清除。它提供诸如根据模式匹配进行清除、收集数据统计以进行模拟运行、缓存失效等功能。

支持HTTP2和IPV6的内容交付网络 - CDN

HTTP/2是HTTP的修订版本,不会改变基础协议,支持相同的方法、状态码等。修订的重点在于增强性能并减少最终用户感知的延迟。毫无疑问,由于其重点,内容交付网络 - CDN是修订协议的一个主要用例。主要的CDN公司如Akamai(第一个支持)、Cloudflare、AWS CloudFront等今天都支持HTTP/2。它具有广泛的好处,如多路复用、并发性、头部压缩、流依赖性、服务器推送、改进的加密等等!所有这些功能使得高级功能成为可能,比如:

请求可以快速连续地发送,并且响应可以按任何顺序接收。因此,客户端和服务器之间不需要多个连接。

资源优先级可以传递到服务器。

HTTP请求头大小显著减少。

服务器可以推送尚未被客户端请求的资源。
设计用于利用这些新功能的应用程序也必须谨慎保持性能和实用性的平衡。

IPv6是最新版本的互联网协议(IP),旨在解决IPv4地址枯竭的问题。CDN公司正在确保客户在部署IPv6技术时顺利过渡。这将使客户能够通过IPv4 / IPv6混合网络接触最终用户,同时确保性能和安全性。

客户如何根据CDN使用情况收费/计费

客户根据计费区域(如美国、欧洲、日本等)对内容交付网络 - CDN使用情况进行计费。计费区域不是根据请求发起的物理位置确定的。而是基于POP的位置确定的。请求根据http响应类型(成功/失败)进行分类。仅包含标题的请求(例如304未修改)、错误响应(例如404未找到)等需要付费,但由于它们包含的负载微不足道,因此产生的费用很少。HTTP和HTTPS请求可能有不同的定价选项。

计费还取决于用于存储内容的GB以及传输到主CDN缓存的数据量。设置较长的TTL以对缓存数据进行缓存是减少计费的一种方式,通过减少缓存维护所需的数据传输频率。CDN计费的一种定价模型是每GB,即对于有良好带宽消耗估计和频繁流量突增的网站,这可能是一个合适的选项。这样,计费是基于消耗的GB数量,而不会增加高峰时段的额外成本。

任何CDN服务的利用,如数据加密和自定义SSL证书,都会产生额外费用。

主要CDN参与者及比较 - Akamai VS LimeLight

一些主要的CDN参与者包括Akamai、LimeLight、Incapsula、MaxCDN、Cloudflare和AWS。我们一直在关注Akamai和LimeLight通过CDN领域的最新发展所提供的一些功能。以下是Akamai和LimeLight CDN的比较。

两者都拥有高度发达的全球网络,并提供确保高效快速数据传输的CDN平台。Akamai是最古老的内容交付网络之一,被认为是全球领导者。自2001年以来,LimeLight一直是一个强大的竞争对手。

在比较不同的内容交付网络时,以下功能是一些关键的决定因素:

内容交付功能 - 例如视频点播、图像优化、DDoS防护、数据压缩等。

POPs

支持的缓存维护/失效策略

设置复杂性

安全性

分析

定制支持

负载平衡技术

定价

高级CDN功能提供 - 如上文提到的DevOps支持、最后一英里加速等
Akamai和LimeLight都支持CDN领域的所有主要功能和最新的进展。以下是比较的概览:

他们都支持视频点播、DDoS防护、数据压缩等。LimeLight不支持图像优化。

从POP网络的角度来看,Akamai在全球80多个国家拥有10万台服务器,而LimeLight在包括美国、德国、印度、阿联酋、韩国、新加坡和日本在内的国家有80个POP。
您可以参考CDN Planet提供的详细比较。


结论

内容交付网络管理着全球一半以上的互联网流量,并确保用户获得流畅且丰富的网络体验。通过边缘网络设置、有效的缓存、可靠的安全技术和自适应流媒体,内容可以在眨眼间获得。

理解CDN的概念非常容易,但要精通它并理解其中的复杂层次,以充分利用它,则非常困难。

总之,没有CDN,我们都将在类似星球大战的环境中盯着电脑屏幕,等待“来自遥远服务器”的响应!

本文由Sindhura Gade撰写,他是一名软件工程师和大数据爱好者,并由Akamai的解决方案架构师Anup Gautam进行了审阅。本文是Mario Gerard的合作博客平台倡议的一部分。


AgileCDN引领新一代CDN技术

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

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

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