什么是CDN,它如何运作?



数字和事实(代替介绍)


  • 2010年,平均网页大小为481 kB。 在2019-已经1936.7 kB( 详细统计 )。 在过去三年中,该指标的价值增长了314.7%。 研究表明, 增加网页大小趋势仍在继续
  • 流音频和视频服务目前正在流行。 截至2019年4月,流行的Spotify服务的订阅者数量为2.17亿。
  • 根据调查,如果网页加载时间超过4秒钟,则有 25%的用户会离开该网页。 从移动设备下载网站的用户中,有74%的人宁愿不要等待下载时间超过5秒。 46%的用户拒绝处理速度较慢的Web服务。


以上事实证明了什么?

互联网每年都变得越来越“繁重”的事实。
而且在现代世界中,网站和服务的速度也发挥着巨大作用。 如果速度太慢-这会使观众流连忘返,而且在许多情况下-也会获利。 解决此问题的一种可靠方法是使用内容分发网络(CDN)。

Selectel自2014年以来一直提供CDN服务 ,我们已经详细研究了该问题的技术方面。 在本文中,我们将讨论现代CDN的设备和功能。

关键条款


在开始对CDN的功能进行实质性讨论之前,让我们定义基本术语。

CDN(内容交付网络)是地理上分散的网络基础结构,可向Web服务和站点的用户提供快速的内容交付。 CDN中包含的服务器在地理位置上以使站点/服务用户的响应时间最小的方式定位。

来源(来源) -在其上存储通过CDN分发的源文件或数据的服务器。

PoP(存在点)-CDN中的缓存服务器,位于特定地理位置。 术语“边缘”也用于指代此类服务器。

动态内容 -接收请求时在服务器上生成的内容(由用户修改或从数据库下载)。

静态内容 -以不变形式存储在服务器上的内容(例如,二进制文件,音频和视频文件,JS和CSS)。

一点历史和理论


在1990年代中期,Internet的迅猛发展导致服务器开始承受负载的情况。 对于当时的服务器(有时其技术规格要比生产力最高的现代笔记本电脑要弱一些),我不得不采用不同的技巧:例如Google,“分层缓存”和信息高速公路-现在这些短语仅在有关Internet技术历史的文章中使用。 要了解内容分发技术是如何发展的,让我们进行一些理论上的探讨。

注意:静态和动态内容的分发与不同类型的服务器负载相关联。 对于动态内容,动态内容的生成与对数据库的调用相关联,处理器速度和RAM数量很重要。

对于静态内容的分发(大多数情况下非常“繁重”并且需要非常快速地下载),网络速度首先至关重要。 加快静态分布的技术解决方案的含义如下:提供水平缩放,而无需与主服务器进行复杂的双向同步。

为了减少负载,1990年代末期Web服务的所有者开始从不同的服务器分发静态和动态。 遍布世界各地的庞大受众的大型Web项目开始在不同地理位置托管静态服务器。

然后,在1990年代后期,公司开始出现,在这些公司中,静态分布的组织成为主要业务领域之一。 1998年,麻省理工学院的学生Daniel Levine和数学老师Thomson Leighton创立了Akamai。 现在,它已成为全球最大(如果不是最大)的CDN提供商之一。

到2004年,已有3,000多家公司使用CDN。 交付内容的总成本每月高达2000万美元。

CDN的数量在全球范围内不断增长:大型国际公司(例如Akamai,Amazon,Cloudflare)和众多区域提供商都提供了相关服务( 详细评论 )。

CDN不仅用于严格意义上的静态分布:在全球多个服务器之间分布内容有助于确保高峰时段的可用性。

在过去的10到12年中,另一种类型的内容已在Internet上广泛传播-流式传输(无数流式音频和视频服务,今天非常流行,并且拥有百万甚至十亿的观众)。 今天的分发是CDN的另一个常见用例。

更详细地考虑操作原理和使用CDN的功能。



CDN如何运作?


想象一下整个俄罗斯人们使用的Web服务。 主要服务器位于圣彼得堡,用户位于不同的地理位置:例如,在克拉斯诺达尔(距圣彼得堡2 604.2公里),新西伯利亚(3 826.1公里),伊尔库茨克(5 661,7公里)或符拉迪沃斯托克(海参div) (9602,4 km)。 用户离原始服务器越远,“原始”响应越长。 在2000年代初期的Runet黎明时,南萨哈林斯克或Petropavlovsk-Kamchatsky的居民可以等待完整的网页完全加载5分钟,甚至10分钟。

使用CDN时,一切发生的方式都不同:符拉迪沃斯托克(Vladivostok)的用户作为CDN的一部分被重定向到地理位置最接近的缓存服务器,这使得静态内容的传递更快。



为了在使用CDN时加快动态分布,使用了其他机制:CDN提供程序由于其网络而减少了网络路由。

使用CDN的另一个有趣的场景是所谓的实时流式传输:来自世界各地的Internet用户可以在浏览器中(有时在特殊应用程序中)从事件发生地观看或收听广播。 这样安排:一个或几个原始服务器从摄像机接收广播流,该广播流立即中继到存在点。 原始服务器不会将内容分发给客户端。 流CDN还包括负载平衡器,该负载平衡器目前将请求重定向到负载最小的边缘服务器。

内容分发如何组织?


通常,要配置通过CDN分发静态内容,必须执行以下步骤:

步骤1:将网站静态内容移至单独的域,例如static.example.com-这将是源。

步骤2:要通过CDN进行工作,请创建形式为cdn.example.com的域。

步骤3:从提供商处连接CDN。 要进行连接,Web服务的所有者必须告知提供商以下内容:
将从中获取静态信息的域-static.example.com;
分发将来自的域是cdn.example.com。

步骤4:在您的DNS注册商处,在CDN提供程序的域上从cdn.example.com配置CNAME记录,CDN提供程序在连接时将其分配。
例如,在CDN Selectel中,这种域的格式为85e77c09-bc03-43bf-b8f3-9492ae33390f.selcdn.net,其中85e72c09-bc03-43bf-b8f3-9492ae33390f是自动生成的。

步骤5:在您的站点上,将计划通过CDN分发的静态信息的域更改为cdn.example.com。

用户在浏览器栏中输入地址www.example.com ,从中他接收HTML页面。 此外,所有静态内容(例如图形图像)都从CDN(从地址cdn.example.com)加载。

用于分发的静态内容通常放置在对象存储中( 我们在六年前就写过 )。 有许多流行的CMS插件和扩展(Wordpress,Joomla,Drupal,1C Bitrix等),您可以使用它们配置与云存储服务的集成以及通过CDN分发静态信息。

连接CDN后,Web服务将在同一原始服务器上运行。 该站点的缓存部分将被上传到CDN网络的服务器。 系统会为用户找到最近的服务器,并尽快从他那里加载网站的静态信息。

让我们注意一个要点:CDN中包含的服务器与托管内容以供以后下载的文件服务器不同。 CDN不用于存储内容,而是用于基于特定算法的缓存。

CDN如何了解最近的缓存服务器在哪里?


通常,使用两种流行的技术从CDN加载内容:GeoDNS和AnyCast。

使用GeoDNS,您可以将多个IP地址绑定到一个域名。 根据地理位置(由发出请求的IP地址确定),用户将被重定向到最近的服务器。 您可以在本文中 (英文)阅读有关GeoDNS功能的信息。

使用Anycast技术时,地址是通用的,但路由会路由到该区域内“其”服务器。 访问地址www.example.com时,用户将被重定向到最近的存在点。 用户的提供商从具有存在点的不同网络接收多个公告,提供商的路由器从中选择最接近的公告。 答案同样会沿着最短的路线返回。

内容如何缓存?


最常见的是优先访问方案:最大的下载时间是由首先访问原始服务器的用户花费的。 所有后续用户都将收到在其最近的存在点缓存的数据。

这里的地理位置非常重要:例如,来自里约热内卢的用户致电后,数据将被缓存在位于巴西的服务器上,这将无法解决巴黎或伦敦用户的访问速度问题。

为了克服此方案带来的限制,使用了区域提取技术:CDN中包含的相邻服务器会相互获取内容,并且不会访问原始服务器。

在大多数CDN上,发送对静态内容的请求的用户将重定向到最近的存在点,并从中接收该内容的缓存版本。 如果最近的存在点找不到文件,则将从邻近的存在点开始搜索,并从该处重定向用户的响应。 在Akamai CDN中,此过程称为分层分发(您可以将其翻译为俄语的“多级分发”)。

CDN有什么用途?


CDN最常用于减少缓存内容的响应时间,如上所述,由于资源加载缓慢,减少了访问者的流出,从而减少了可能的财务损失。 CDN还有助于降低由于主服务器故障而导致无法访问内容的风险。 还原主服务器时,内容将始终可用。

使用CDN可以大大减少主服务器上的负载,这有助于解决峰值负载问题。 现代CDN能够承受很大的负载。 在2018年底,Akamai 宣布了创纪录的CDN传输量 :72 Tb / s。

如今,CDN也被积极地用于分发流内容。

使用CDN时要记住什么是重要的?


像任何技术一样,CDN具有许多功能。

基于CDN的Web服务可能遇到的第一个问题是缓存延迟。 很有可能出现以下情况:在主服务器上,文件已更改,但是在缓存服务器上,文件仍将保持不变。 当通过CDN分发频繁更新的内容(场景中的照片,新软件版本等)时,这一点尤其重要。

为了确保现代CDN中“新鲜”内容的传递,有一个缓存清除功能,即从缓存池中删除内容。 此外,站点和服务的所有者可以使用验证程序标头自己管理设置(请参阅先前发布的文章中关于此主题的建议)。

与阻止有关的另一个困难是:如果由于某种原因或IP CDN提供者与您相邻的其他服务被阻止,则您的站点可能会被阻止。 但是这个问题可以解决:根据要求,CDN提供商可以更改您的IP地址。

谁需要CDN?


CDN主要用于不同地区或国家/地区具有大量受众的项目。 这里的一切都很清楚:减少延迟,快速分发内容并提高便利性,从而使用户更加满意。

CDN对移动应用程序开发人员也很有用:根据统计数据,由于速度问题,用户经常拒绝继续使用该应用程序。 最近,出现了专门针对将内容分发到移动设备的特殊技术解决方案。 它们被称为移动CDN。 许多大型CDN提供商(例如Akamai或Amazon)都提供相应的服务。

需要专注于游戏,多媒体内容和流媒体分发的CDN和项目(如上所述)。

选择CDN提供商时要寻找的内容(而不是结论)


Web服务的用户数量正在增长,受众正在扩展,并且您正在考虑连接CDN以优化和加速静态分布并减少主服务器上的负载。

选择CDN提供商时我应该寻找什么?

首先, 存在点数量 。 对于具有广泛国际受众的项目而言尤其如此。 找出有关您最感兴趣的区域中存在点的信息,并将其与网站的潜在受众进行比较将非常有用。

其次,这是与电信运营商的联合 。 这也是CDN的速度和效率所依赖的重要因素。 例如,具有100个城市的接入点但连接数量较少的CDN提供商可能比具有5个城市的存在点的提供商延迟时间更长,但与运营商的连接更多。

不幸的是,在大多数情况下,CDN提供程序不会发布此类信息,因此您只能通过测试来验证所有内容。

第三, 附加服务和功能可用性 。 许多CDN提供程序提供的服务包括分析消费统计信息,管理缓存策略,管理HTTP标头,预加载非常“繁重”的内容(从200 MB或更多),以及完全有选择地清除缓存。

此外,在选择CDN提供程序时,您需要检查其是否支持所需的技术和协议(HTTP / 2,IPv6,SSL证书等)。

Source: https://habr.com/ru/post/zh-CN463915/


All Articles