背景
随着互联网应用的迅速发展与网络流量的大幅度激增,用户对网站的加速需求日益增长。由于 CDN 技术能够及时解决网站的响应速度问题,并对网站的稳定性起了较大的提升作用,因此受到了业界的很大关注。
不同于网站镜像的单纯内容复制,CDN 技术更加智能,可以用这样一个式子来解释 CDN 与镜像的关系: CDN=更智能的镜像+缓存+流量调度。 从上面的关系式可以看出,CDN 能够明显提高网络中数据流动的效率,从而解决网络带宽不足、 用户访问量过大以及内容分布不均等问题,提升用户的网站访问体验。 许多我国国内的网站出于业务需要,将源站服务器放在欧美地区。 这样一来,物理距离距中国太远,普遍 Ping 所需的时间都在 100ms 以上,使网站的用户会感觉到访问速率比较慢,访问体验度方面有所下降。所以 CDN 技术首先要解决的就是物理距离远所导致的访问速率降低问题。
通过 CDN 技术,在中国香港、中国台湾等地区和日本、韩国等国家部署 CDN 节点进行数据分发,即使源站放置在遥远的欧美地区,中国用户的访问速率也会得到明显的改善。 最初 CDN 的提出,就是为了通过就近提供服务来解决物理距离过远导致性能不好的问题。使用 CDN 后,网络的基本组织架构和内容传输情况发生了很大变化。从普通网站用户的角度上看, CDN 节点的作用就相当于把一个网站就近部署在用户周围。 CDN 服务器会像源站服务器一样,为用户提供需要的内容服务。但是,由于 CDN 节点更靠近用户,因而能够更快地响应用户的请求。
以视频网站为例, 使用CDN 服务后,对服务请求进行了优化调度,更加有效地利用了带宽资源,使得视频加载时间减少,性能提高。
总的来说, CDN 对互联网应用的优化作用主要体现在以下几个方面:
- 缓解源站服务器访问压力,解决服务器端的“第一千米”问题
- 优化热点内容的分布,合理缓存,减轻骨干网传输的流量压力
- 提升用户的访问质量和体验,全面提高网站访问速度
- 增强网站服务的可靠性,解决网站突发峰值流量问题
- 解决不同电信运营商之间互联互通问题造成的影响
- 提高安全性,有效防止异常流量对源站的攻击
CDN 基本概念
1. CON 的定义
内容分发网络(Content Delivery Network, CDN),是在现有网络中增加一层新的网络架 构。 CDN 将源站的内容发布和传送到最靠近用户的边缘地区,使用户可以就近访问想要的内 容,从而提高用户访问的响应速度。 CDN 的基本原理是依靠放置在各地的缓存服务器,通过全局调度以及内容分发等功能模 块,将用户需要的那部分内容部署到最贴近用户的地方,将原本低效、不可靠的四网络转变成高效、可靠的智能网络,满足用户对内容访问质量的更高要求, 改善互联网网络拥塞问题, 提高用户访问网站的响应速度。
从字面意义上可以看出, CDN 的构成元素为内容 (Content)、分发(Delivery) 以及网 络(Network)。
(1) 内容
CDN 的内容通常是以下两种: 静态内容以及动态内容。
- 静态内容:内容不经常更改,并且一旦它在 CDN 缓存中,可以由许多用户进行访问,缓存性强。
- 动态内容:内容用于特定的用户或组,并且更新频率较高,通常来自源服务器并实时发送到CDN 中,缓存性较弱。对于用户的每一次请求, CDN 都必须从源站服务器拉取动态内容,所以动态内容加速的常用方法就是降低源站服务器和用户终端之间的传输时延。
(2)分发
CDN 的分发是指利用一定传送策略,将用户请求的内容发布到距离该用户最近的节点。
(3)网络
CDN 由成千上万个分布式服务器组成,通过服务器的通信,把内容分发和传送给终端用 户。
CDN 各节点之间是通过电信运营商的宽带网络进行通信的,可以说 CDN 是在电信运营 商的网络之上的一层网络。
2. CON 可承载的内容
用户在向网站发起访问请求时,如果等待一定时间网站还没有响 应,用户就会放弃访问,而镜像通常不适用于大规模商业网站加速,因此,CDN 加速需求应运而生。
静态内容是最早出现的 CDN 承载的内容类型,以文字、图片、动画等更新频率低的内容为主。
因此,CDN 技术最初就是用来对这些静态内容网页进行加速的。
后来,随着互联网的大幅度升温、宽带的普及,用户利用互联网下载所需文件已经成为一种习惯,因此, CDN 对下载业务的加速服务也是必不可少的。
近年来,大量视频网站涌现,流媒体流量随之迅速攀升,从而驱动了 CDN 技术的应用重点也逐步转为流媒体加速服务。 随着互联网技术的发展,社交网络、在线支付以及网络游戏等实时性强、内容经常更新 的互联网应用逐渐产生,因此,CDN技术也从静态内容的加速发展到动态内容的加速。
从互联网应用的角度看, 需要CDN承载的内容主要为静态内容和动态内容。
3. CDN 的工作过程
CDN 服务与传统网络服务最大的差别在于访问方式。传统情况下,用户发起访问请求后, 对于同一个内容的所有用户请求,都集中在同一个目标服务器上。
而利用 CDN 加速后,用户的内容请求解析权交给了 CDN 的调度系统,然后将用户请求引导到性能最佳的最靠近用户的 CDN 节点上, 最终该节点为用户请求提供服务。
传统的访问方式,造成了在网络中传输的极大压力,并且还无法保证用户的良好访问体验。 而使用 CDN 服务后,用户的访问请求不会集中在相同的目标服务器上,而是会分散到不同节点,在这种情况下,用户请求就不会跨地区,并且骨干网也不需要承担过重的流量负担,进而使得用户访问质量得到保证。
下面介绍 CDN 的基本工作过程,包括内容注入、用户请求调度、内容分发以 及内容服务这 4 个步骤。
(1)内容注入
内容注入是 CDN 能为用户提供服务的第一步,是内容从源站注入 CDN 的过程,使得用 户能从 CDN 系统中获取源站的内容。
(2)用户请求调度
用户请求调度是用户向网站发起访问请求, 最终用户被引导到最佳的有内容的 CDN 节点的过程,具体如下:
(a)当用户向网站发起访问请求时,经由本地 DNS 系统解析,本地 DNS 会通过递归方式将域名的解析权最终交给 CDN 授权 DNS 服务器 CGSLB);
(b) CDNGSLB 可将 CDN 节点设备的回地址返回用户,也可以将另一个负责解析用户 终端 IP 地址的 GSLB 设备的 IP 地址返回用户
(c)用户向 CDN 的 GSLB 设备发起内容访问请求(IP 调度方式)
(d) CDN 的 GSLB 设备根据用户 E 地址以及用户请求的内容 URL,选择一台用户所属地区的本地负载均衡 (SLB) 设备,并让用户向该 SLB 发起访问请求;
(e)该 SLB 设备通过决策选择一台最佳的服务器为用户提供服务,用户向该服务器发起访问请求;
(f) 若该服务器内容未命中,而 SLB 仍将该服务器分配给用户, 则该服务器需要向上级 节点请求内容,然后,由该服务器向用户提供“边拉边放”的服务或者由上级节点直接为用户提供服务。
(3)内容分发
当用户发起请求时,对于用户想要的内容,一部分已经预先直接推送到靠近用户的节点;
但是,当下级节点上并没有用户想要的内容时,就要通过向上级节点拉取内容的方式,把用户想要的内容分发到下级节点。
(4)内容服务
把找到的最靠近用户的 CDN 节点中的内容交付给终端用户。
4. CON 内容接入
CDN 内容接入是指内容从内容源接入 CDN 的行为
当互联网应用希望 由集中式部署向分布式的 CDN 部署转变时,首先要考虑、通过对接 CDN 将现有集中式部署的 内容转移到 CDN 中。 CDN 内容接入有 3 种接入方式:内容存储接入方式、内容预注入方式、实时回源方式,
这 3 种内容接入方式的适用场景及业务流程均有较大不同。
(1) 内容存储接入
内容存储接入指源站(互联网应用的内容源)在发布内容前,提前把内容注入 CDN。内 容存储接入方式下,业务系统需主动向 CDN 内容库发送操作指令, CDN 根据指令获得内容并存储在 CDN 内容库中,从而在终端访问 CDN 时直接由 CDN 向终端提供内容,无需再从源站获取,提升了终端用户体验。 采用内容存储接入方式接入的内容将永久存储在 CDN 中,直到通过内容接入操作指令对该内容显式删除。 CDN 的内容存储接入包括对注入内容的增加、删除和更新,能够通过业 务系统或手工方式主动发起内容删除操作并立即实现全网删除。
(2)内容预注入
内容预注入是指源站在内容发布之前将内容注入 CDN 中 。 内容预注入与内容存储接入方式类似,都是由业务系统主动向 CDN 发送操作指令, CDN 根据指令预先从内容源回源获取内容,是就近提供服务的接入方式。 但采用内容预注入方式接入的内容并不永久存储在 CDN 中,而仅仅是进行内容缓存, CDN 会根据内容访问的热度情况对缓存内容进行智能删除,预注入内容可以设定一段时间不被删除的内容保护期。采用内容预注入方式接入的内容当被缓存删除后, CDN 仍可以通过回源方式获取内容提供服务。
(3)实时回源
实时回源 (未注入〉是指源站在内容发布之前不向 CDN 注入内容,但当用户内容访问请求时, CDN 实时地从源站拉取内容。
内容回源是指对于非托管模式的内容接入,当 CDN 收到业务系统内容预注入指令或用户内容服务请求而本地没有内容时,向内容源请求并获取内容接入 CDN 的行为。
实时回源方式无需由业务系统主动向 CDN 预先注入内容,而是在终端访问 CDN 时,通过回源方式向内容源实时获取内容到 CDN 中,向终端提供后续就近缓存服务。
内容存储接入方式对用户的服务质量保障最佳,但对 CDN 的资源消耗较大,成本较高,适用于 IPTV 等对质量要求极高的业务应用。
实时回源获取方式对 CDN 资源消耗较小,成本较低, 但对用户的服务质量保障比不上内容存储接入方式, 一般在网站等业务应用上使用, 是目前 CDN 的最主要接入方式。
内容预注入方式介于内容存储接入与实时获取方式,互联网服务提供商可根据自有业务的需求选择合适的内容接入方式。
5. CON 用户请求调度
通常情况下, CDN 用户的内容访问请求调度如图 2-4 所示,分为两个层次:全局调度和本地调度
(1) 全局调度
全局调度的主要目的是根据用户所在地理位置不同,在各个节点之间进行分析决策,将 用户请求转移到整个网络中最靠近用户的节点。
全局调度方式目前主要有基于 DNS 调度方式和基于应用层重定向调度两种方式。
(2)本地调度
和全局调度系统相比,本地调度通常被限制在一定地区范围内,并且更加关注 CDN 服务器设备具体的健康状况与负载情况,根据实时响应时间,将任务分配给最适合的服务器设备进行处理,进行更精细粒度的调度决策,实现真正的智能通信和发挥服务器集群最佳性能。 本地调度的意义在于充分利用现有设备,有效地解决了用户访问请求过多引起的系统负载过重的问题。
6. CON 内容分发
互联网应用的响应时间通常是由网络带宽、路由时延、网站处理能力以及物理距离等因素决定的。其中,物理距离过长对互联网应用的响应时间有最直接的影响,会使响应速度变得十分缓慢。
因此,利用 CDN 技术把最热的内容分发部署到各地的节点上。
内容为不同地区的用户提供就近服务,就能够有效地提高互联网应用的响应速度
内容的分发有 Push 和 Pull 以及混合分发共 3 种实现方式。
(1) Push 方式
Push 是一种主动分发的方式。通常, Push 由 CDN 内容管理系统发起,将内容从源站或 者中心内容库主动分发到各边缘的 CDN 节点,分发的协议可以采用 HTTP、 FTP 等。通过 Push 分发的内容一般是比较热点的内容,这些内容通过 Push 方式预先主动分发到边缘CDN 节点,可以实现有针对性的内容提供。对于 Push 分发需要考虑的主要问题是分发策略,即在什么时候分发什么内容。 一般来说, Push 分发是一种智能的主动分发策略。 可以通过用户访问的统计信息(例如, 热度级别排序信息)和己经预先设定的内容分发的规则,智能地决定是否进行内容主动分发。 并且可以根据用户历史访问数据等,建立回归模型,对于智能预测用户可能会大量访问的内容,将其提前推送到边缘节点。
(2) Pull 方式
Pull 是一种被动的分发方式, Pull 分发通常由用户请求驱动。 当用户请求的内容在本地 的边缘 CDN 节点上不存在(未命中)时, 该 CDN 节点启动 Pull 方式从内容源或者其他 CDN 节点实时拉取内容, 并且在 Pull 方式下,内容是按需分发的。 在实际的 CDN 系统中, 一般两种分发方式都支持,但是根据内容的类型和业务模式的 不同,在选择主要的内容分发方式时会有所不同。通常, Push 方式适合内容访问比较集中的情况,例如,热点的流媒体视频内容: Pull 方式比较适合内容访问分散的情况。
(3)混合分发方式
混合分发方式就是 Push 与 Pull 分发方式结合的一种机制。混合分发方式有多种方案, 最常见的混合分发机制,是利用 Push 方式进行内容预推,后续则使用 Pull 方式拉取。 混合分发方式能够根据当前内容分发系统中的内容服务状况,采用推拉的方式动态地调 整内容在内容分发系统中的分布,对于热点内容主动将其推送(缓存)到边缘节点。
典型的CDN架构与组网
1. CDN 功能平面
CDN 从功能上可以划分为包含管理平面、调度平面和数据平面在内的 3 个逻辑平面。
其中,在管理平面的管理和控制下实现内容分发和推送,在调度平面完成用户请求的调度、控制以及各种内容调度策略,在数据平面实现内容分发与服务实体。
CDN 管理平面主要用来完成业务管理、网络管理、分发策略管理、 内容接入管理以及回源分发管理等一系列管理功能,管理、监控并保障 CDN 承载业务的高效运营。
CDN 调度平面主要实现用户服务请求调度(包括 DNS 调度、 HTTP 调度、 RTSP 调度)内容定位、内容路由等功能,通过控制用户服务请求的调度,实现对用户的就近及有保障的服务。
CDN 数据平面主要是内容分发与服务实体,主要负责为用户提供内容分发与应用服务, 包括内容存储、 内容缓存、内容分发、内容转码、内容服务等功能。
CDN 部署架构
节点是指多台物理设备在某地理区域范围内作为一个整体对外提供内容服务。每个 CDN 节点通常包含多台服务器设备,节点是 CDN 系统最基本的组成单元。 CDN 系统设计的主要目标是尽量提高用户请求的响应速度,为达到这一目标, CDN节点部署的原则是尽量将内容存放在最靠近用户的位置。
通俗地说,就是将为用户提供实际内容服务的服务器部署在网络的边缘位置。 中心节点层保存着完整的内容副本,当用户请求的内容在边缘层未命中时, 中心层可能会为用户直接提供服务,也可能由下级边缘节点向中心节点请求拉取内容,再分发到边缘节点为用户提供直接服务。但是,当用户请求量过大时,若大量边缘节点都直接向中心节点请求拉取内容,会造成中心层压力过大,这时,就需要考虑在边缘节点层和中心节点层之间部署一个区域层。区域层保存了部分内容副本,使其能够分发内容并在边缘节点未命中时提供服务,以减轻中心节点的压力。这样,就形成了 CDN 的三级系统架构。
从节点构成的角度来说,无论是 CDN 区域层节点还是 CDN 边缘层节点,都是由缓存设 备和本地负载均衡设备( SLB)构成的。在一个 CDN 节点中,缓存设备和本地负载均衡设备 的连接方式有两种: 一种是旁路方式,另一种是穿越方式
在穿越方式下, SLB 一般由四七层交换机实现, SLB 向外提供可访问(公网〉的虚拟 IP (VIP)地址,每台缓存设备分配不同的私网 IP 地址,该 SLB 连接下挂的所有缓存设备构成一个服务单元。所有用户请求经由该 SLB 设备,再由该 SLB 向上向下进行转发。 SLB 实际上承担了网络地址转换(Network Address Translation, NAT)功能,向用户隐藏了各台缓存设备设备的IP地址。这种方式是 CDN 系统中应用较多的方式,优点是具有较高的安全性和可靠性,但是,当节点容量大时,四七层交换机容易形成性能瓶颈。
在旁路方式下, SLB 有两种实现方式。 在早期, SLB 一般由软件实现。 SLB 和缓存设备都具有公共的 IP 地址, SLB 和缓存是并联关系。用户需要先访问 SLB 设备,然后再以重定 向的方式访问特定的缓存。 这种实现方式简单灵活,扩展性好,缺点是安全性较差,而且需要依赖于应用层重定向 。 随着技术的发展,四七层交换机也可采用旁路部署方式,旁挂在路由交换设备上, 数据流量通过三角传输方式进行转发。
CDN 间组网
当 CDN 覆盖范围或能力不足,或需要多厂商时, CDN 可以进行组网。不同 CDN 的共同组网目标是实现 CDN 分发与服务能力的共享,各 CDN 通过标准接口实现互联互通。 CDN 共同组网根据服务的场景及各 CDN 的功能与性能不同,可选择不同的组网架构, 典型的组网逻辑可分为以下两种。
(1)并联组网
源站同时接入多个 CDN,边’过用户请求调度层面进行流量分配,不同 CDN 共同承载内容。
并联组网方式需要把用户流量通过 CNAME 引导到一个用户请求流量调度系统,由该调度系统把请求分配至不同 CDN。 不同 CDN 间不进行内容的分发与服务互联,均需与源站系统进行互联的实现内容注入,或分别回源获取内容,再独立进行分发服务。在一个区域内引 入多家 CDN 服务提供商向用户提供 CDN 服务时, 一般采用这种组网方式。
(2)级联组网
源站接入上游 CDN,上游 CDN 再进一步和下游其他 CDN 对接,上游 CDN 和下游 CDN 除调度层面外, CDN 内容分发与服务层面也进行互联,共同组成一张统一的 CDN
级联组网方式需要 CDN 承载的业务系统只对接一个 CDN (上游 CDN),向该 CDN 注入 内容或由该 CDN 向源站获取内容,并由该 CDN 决定用户调度和内容分发策略,把用户请求调度到其他下游CDN, 再由下游 CDN 通过 CDN 间的分发服务或回源接口实现上下游 CDN 间的互联,向最终用户提供服务。 为保证服务质量,需要服务的内容也可以通过内容预注入的方式通过上游 CDN 提前注入下游 CDN 中。