CDN技术概述:提升网络性能与安全性的战略性分布式系统
CDN技术概述:提升网络性能与安全性的战略性分布式系统
互联网的迅猛增长带来了用户对高质量多媒体内容的需求,包括高清视频、实时服务和直播等。用户期待高带宽和低延迟的网络体验,而内容提供者则需要高效分发机制来满足这些需求,同时降低运营成本。在这一背景下,CDN(内容分发网络)出现了,它通过优化内容的存储和传输,实现了快速、可靠的内容交付。
1. CDN概述
CDN通过在靠近用户的ISP边缘部署镜像服务器(PoP点),缓存内容以提升交付速度和降低成本。这些边缘服务器不仅缩短了用户与内容的距离,还提高了网站、流媒体和下载的性能。此外,CDN通过分散流量,有助于防御DDoS等网络攻击。简化的流程如下:源站向边缘服务器提供内容,再由边缘服务器快速交付给终端用户,避免了直接从原服务器获取每个请求。CDN利用云计算资源确保服务的可扩展性、弹性、可用性和性能,为现代网络体验的关键支持
CDN有很多实际的应用场景,例如:
加速的 Web 性能。CDN 有助于改善网站内容(静态和动态)的交付,以便网站性能更好、加载速度更快,并为内容提供商带来更多收入。
软件更新和下载。CDN 增强了软件或文件下载(包括软件补丁)的自动或按需交付。 例如,消费者可以在线快速下载最新版本的操作系统或文字处理软件版本。
网络电视。CDN 用于互联网付费电视 (IPTV),例如视频网站的更新追剧,以及在线直播视频频道。此类服务具有大多数媒体类型的交付、数字版权管理 (DRM)、多比特率流以及将视频内容分发到多个区域的功能。CDN 上的 IPTV 服务同时应用线性内容交付和点播内容交付。
直播。充分利用 CDN的终端性能,应对直播的高带宽需求,以创建端到端交付链,通过高质量的用户体验提供真正的差异化。
管理和交付用户生成的内容。CDN 通常用于促进用户生成内容的托管和分发。YouTube是使用CDN来交付最终用户上传的内容。
3.1 静态内容交付(传统CDN)
CDN 的基本用例是交付静态内容,例如静态 HTML 页面、嵌入式图像、PDF 文档、文件和软件补丁。下图显示了网站嵌入式静态内容交付的交互流程。
用户通过在 Web 浏览器中指定其唯一的URL来请求内容。用户的请求通过和中间网络链路和路由基础设施,最终到达源站。当源站收到请求时,它只提供基本的内容(例如网站的索引页面)。而对于经常询问的内容(例如嵌入式对象图片、徽标、导航栏和横幅广告),用户的请求被重定向到 CDN 基础设施。CDN 从源站获取内容并在边缘位置的复制服务器之间分发内容。使用选择算法(通常是专有的),选择最接近最终用户的边缘服务器来为请求的嵌入式对象提供服务。选定的边缘服务器服务于用户的请求并将其缓存以供后续请求服务。
3.2 动态内容交付(应用CDN)
动态的内容是使用 Web 应用程序按需生成的。动态内容会根据上下文情况发生变化,例如用户配置文件和交互特征。例如,一个显示当前时间的网站实际上是在显示动态内容:信息(显示的数字)根据情况(当前时间)而变化。动态内容的类型包括动画、更改文本、使用服务器端脚本(ASP、ColdFusion、Perl、PHP、Ruby、WebDNA)或客户端脚本(JavaScript、ActionScript)和 DHTML 生成的内容。
动态内容交付由 Web 系统的多层逻辑完成(下图),该架构将 HTTP 接口前段层、应用程序层(或业务逻辑)、后端以及用户配置文件层分层设计,用于生成个性化的内容。
当使用 CDN 传送动态内容时,Web 系统的每一层都会被复制。在下文中,我们描述了每一层的工作原理。
(1)前端层。前端接收来自终端用户的 HTTP 连接请求,提供来自文件系统的静态内容,并提供代表应用程序逻辑的接口。它可以采用诸如基于片段的技术(即存储内容片段),或顺序缓存(即存储部分流段)以减少缓冲区大小[1]。基于片段的缓存通常使用 Edge Side Includes (ESI) [1、2],这是一种基于 XML 的标记语言,可以区分可缓存(静态)内容和不可缓存(动态)内容。在将动态网页内容交付给最终用户之前,边缘服务器执行页面片段的识别和标记来组装动态网页内容。除此之外,CDN还可以使用 FEO 技术来减少下载给定页面所需的页面资源数量,使浏览器更快地处理页面。
(2)应用层。应用层用于处理业务逻辑并计算以响应动态内容。内容生成通常需要与后端和用户配置文件层进行交互。该层通过使用客户端或服务器端脚本或两者的组合改进动态生成的内容的交付。
客户端脚本是指由最终用户的 Web 浏览器在客户端执行的 Web 应用程序。客户端脚本通常嵌入在 HTML 或 XML 文档中,但它们也可能包含在单独的文件中,由使用它的文档引用。根据请求,必要的脚本文件由 CDN 发送到用户的计算机。用户的浏览器执行脚本,然后显示文档,包括脚本的任何可见输出。
服务器端脚本是指运行在CDN的边缘服务器上,改变各种网页内容的应用。此类网页通常是在服务器端语言(如 ASP、Perl、PHL、Ruby 和 WebDNA)的帮助下创建的。服务器端脚本嵌入到 HTML 源代码中,这导致客户端对网站的请求在响应客户端请求之前由运行在边缘服务器上的脚本处理。服务器端脚本通常用于提供接口并限制对专有数据库或其他数据源的访问。这些脚本可以组合客户端特征,并根据这些特征、用户需求和访问权限自定义响应。
客户端和服务器端脚本的组合也很常见。Ajax 是一种 Web 开发技术,用于动态交换向边缘服务器发送数据请求的内容。边缘服务器返回请求的数据,然后由客户端脚本格式化。这种技术减少了加载时间,因为客户端不请求整个网页,只传输将要更改的内容。Google Maps 是一个使用 Ajax 技术的例子。
(3)后端层。它主要管理基于 Web 的服务的信息存储库。它通常由数据库服务器和用于生成动态内容的关键信息存储组成。该层为应用程序数据的管理提供了额外的可扩展性。后端数据的复制可以是完整的或部分的。数据的部分复制可以利用对不同的数据存储缓存机制来实现,例如最经常查询的缓存机制(内容盲缓存)或通过根据使用模式、网络选择的后端数据的主动复制部分来获得(内容感知缓存)。
(4)用户配置文件层。它存储有关用户偏好和上下文的信息。这些信息主要用于生成动态内容,提供个性化服务。用户配置可以通过 Web 表单手动更新,也可以根据用户行为自动更新。
3.3 HTTPS内容分发
HTTPS是一种通过身份验证和加密通信来安全访问 Web 服务器的协议。从技术上讲,它本身并不是一个协议;它是将 HTTP 简单地放置于安全套接字层/传输层安全 (SSL/TLS) 协议之上的结果,从而将 SSL/TLS 的安全功能添加到标准 HTTP 通信 [3、4]。Web 浏览器会根据证书颁发机构 (CA) 预安装的证书来信任 HTTPS 网站,例如 VeriSign、GeoTrust 和 Symantec。
CDN 可以传送 HTTPS 内容,帮助源站进行SSL 加密/解密处理。HTTPS 内容交付对于电子商务零售商、银行业和金融机构来说非常重要,他们需要此功能来实现动态内容交付、交易流量和 SSL 加速。由于其计算性能要求,SSL 解密会影响 IT Web 基础设施,并可能导致性能和高可用性风险。CDN 可以在一定程度上分担 SSL资源需求(通过扩展计算基础设施)。
CDN要提供 HTTPS 内容交付能力,需要以下部分:
证书。证书是数字身份证明文件,允许 CDN 边缘服务器和最终用户相互验证。证书文件通常具有 .crt 扩展名。服务器证书包含有关网站所有者和颁发证书的组织(例如 VeriSign、GeoTrust 或 Thawte)的信息,而客户端证书包含有关用户和签署证书的组织的信息。每次创建证书时都会生成证书签名请求 (CSR)。它有一个 .csr 扩展名。一旦 CSR 文件被 CA 签名,一个新的证书就生成了,可以用于 HTTPS 网站。
会话密钥。最终用户和边缘服务器使用会话密钥来加密数据。它由最终用户通过服务器的公钥创建。
公钥。最终用户使用服务器的公钥加密会话密钥。它不作为文件存在,而是在创建证书和私钥时生成。
私钥。服务器的私钥解密客户端的会话。私钥的扩展名为 .key,是公私密钥对的一部分。
HTTPS 内容交付的基本形式是能够安全地交付静态对象、音乐流和渐进式下载。通过启用此功能,CDN 能够支持需要对非动态和可缓存事务进行 SSL 安全保护的组织的内容交付。对于SSL加密的HTTPS 请求,CDN 可以执行从设置SSL会话到加密所有出站数据的完整 SSL处理。CDN边缘服务器处理所有 SSL请求,而源站不承担此处理的负担。CDN不缓存的请求,如股票报价和银行账户余额,将被发送到源站进行检索。CDN会检索此信息,并且在不缓存的情况下加密数据并将其发送到请求浏览器。
3.4 直播(Video CDN)
CDN的一个主要应用场景是提供体育、文化和企业活动的实时直播报道,可在 IP 连接设备上观看。实时直播事件在预设的开始和结束时间定义的时间间隔内发生,例如,足球比赛或赛车事件。实时流式传输可以以不同的内容交付格式执行。最近,基于HTTP的自适应比特率 (ABR) 流媒体技术,例如 Microsoft Smooth、Apple HLS 和 Adobe HDS,已在CDN 行业中大量用于实时流媒体。
下图显示了使用 MS Smooth 通过 CDN 进行实时流式传输的示例方案。
编码器获取实时馈送并将其转换为视频/音频,在视频/音频中将其分段为不同的质量,以允许媒体播放器客户端选择最合适的分段来无缝检索内容。Smooth 清单文件 (XML) 在编码器级别创建,并由编码器连同媒体片段一起发送到源服务器。其他交付影响因素,如输出缓存规则、DRM、高级日志记录和 HTTP 响应标头,也在编码和源基础设施层进行控制。许多端到端的交付行为和性能结果都可以在源头进行配置。重要的是源配置遵循最佳实践,以避免在直播期间对 CDN 和最终用户体验产生负面影响。
CDN获取直播从源头获取内容并将其分发到边缘服务器以进行交付。清单文件的目的是使源服务器和最终 CDN 能够解释传入的实时流。它还为流中的轨道分配适当的语义,创建必要的参数来解码视频/音频数据,并做出适当的启发式决策。路由基础设施在选择最佳边缘服务器以将直播流传输给最终用户方面起着关键作用。
3.5 全局服务负载平衡CDN
全局服务器负载平衡(GSLB)是一种CDN,它优化了跨多个位置的服务器的流量分布。对于全球性存在的组织来说,这可能特别有用,因为它可以确保终端用户被重定向到最近的,最可用的服务器。GSLB解决方案可以使用各种方法确定用户的最佳服务器,例如地理路由或实时服务器监控。它们也可以与传统CDN或视频CDN等其他类型的CDN集成。
4. CDN的发展趋势
当前 CDN 行业的一些发展趋势包括云集成、智能路由、服务器负载数据分析、边缘计算和增加的安全措施。
- 云集成:CDN服务商将会与云存储和云计算服务的提供商合作建立云集成服务 ,来提高可靠性和效率。
- 智能路由:CDN服务商将会提供更智能的路由算法和管理服务,来管理网络请求数据流,保证更快的加载时间和更高的性能 。
- 大数据分析:CDN服务商将利用大数据分析提供更高效的网络服务,根据访问的pattern,帮助CDN更好地调度和管理。
- 边缘计算:CDN服务商将开始在边缘节点提供计算和存储资源,边缘节点更靠近终端用户,可以减少内容传输时间,提高性能和可靠性。
- 安全性:CDN服务商将提供更先进的安全性服务,来保护客户的私密信息和内容。