《CDN 技术详解》读书笔记

2018/03/04 CDN

CDN 的基本概念

对于 CDN 这个名词,读者大可以望文生义:Content Distribute Network, 直译成内容分发网络,也有人写成 Content Delivery Network, 内容交付网络。CDN 完成的是将内容从源站传递到用户端的任务,我们当然不需要再解释什么叫作“内容分发”或者“内容交付”了,要解释的是 CDN 在这个分发或者交 付的过程中体现了什么价值,为什么需要 CDN 来交付而不是直接通过互联网 交付呢?理解了这个 问题对理解本书中 CDN 的工作原理、各项关键技术都有帮助。

CDN 的基本工作过程

使用 CDN 会极大地简化网站的系统维护工作量,网站维护入员只需将网站内容注入 CDN 的系统,通过 CDN 部署在各个物理位置的服务器进行全网分 发,就可以实现跨运营商、跨地域的用户覆盖。 由于 CDN 将内容推送到网络边缘,大量的用户访问被分散在网络边缘,不再构成网站出口、互联互通点的资源挤占,也不再需要跨越长距离 IP 路由了。

CDN 是如何工作的呢?让我们先看看没有 CDN 服务时,一个网站是如何向用户提供服务的。

今天我们看到的网站系统基本上都是基于 B/S 架构的。 B/S 架构,即 Browser-Server (浏览器-服务器)架构,是对传统 C/S 架构的一种变化或者改进架构。 在这种架构下,用户只需使用通用浏览器,主要业务逻辑在服务器端实现。 B/S 架构,主要是利用了不断成熟的 WWW 浏览器技术,结合浏览器的多种 Script 语言 ( VBScript、JavaScript 等)和 ActiveX 等技术,在通用浏览器上实现了 C/S 架构下需要复杂的软件才能实现的强大功能。

用户通过浏览器等方式访问网站的过程如图 1 -2 所示。

①用户在自己的浏览器中输入要访问的网站域名。

②浏览器向本地 DNS 服务器请求对该域名的解析。

③本地 DNS 服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。

④本地 DNS 服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个 DNS 系统请求解析,获得应答后将结果反馈给浏览器。

⑤浏览器得到域名解析结果,就是该域名相应的服务设备的 IP 地址。

⑥浏览器向服务器请求内容。

⑦服务器将用户请求内容传送给浏览器。

在网站和用户之间加入 CDN 以后,用户不会有任何与原来不同的感觉。 最简单的 CDN 网络有一个 DNS 服务器和几台缓存服务器就可以运行了。一个 典型的 CDN 用户访问调度流程如图 1 -3 所示。

①当用户点击网站页面上的内容 URL, 首先会由网站的权威 DNS 服务器来进行域名解析,该权威 DNS 服务器中会有一条 CNAME 记录,指示将域名的解析权交给 CDN 专用 DNS 服务器。

②CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址作为域名解析结果返回用户,此时 CDN 系统巳经接管了网站的用户访间

③用户向 CDN 的全局负载均衡系统发起内容 URL 访问请求。

④-⑥CDN 的负载均衡系统经过全局-区域两级均衡系统的综合分析,选择一台最优服务器/集群为用户服务,并将这个设备/集群的 IP 地址返回给用户 (由全局负载均衡系统返回还是由区域负载均衡系统返回,取决于 CDN 自身实现方式)。 挑选最优服务器的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。 基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的 IP 地址。

⑦用户向最优服务器发起请求,服务器响应用户请求,将用户所需内容传送到用户终端。 如果这台服务器上并没有用户想要的内容,而负载均衡系统依 然将它分配给了用户,那么这台服务器就要向它的上一级服务器请求内容,直至追溯到网站的源服务器将内容拉到本地并为用户提供服务。

使用 CDN 服务的网站,只需将其域名解析权交给 CDN,容注入 CDN, 就可以实现内容加速了。

CDN 的系统架构

功能架构

CDN 技木自 1998 年诞生以来,伴随着互联网的高速发展,其技术一直在持续演进和完善,但基本的 CDN 功能架构在 2003 年左右就已基本形成和稳定下来。从功能上划分,典型的 CDN 系统架构由分发服务系统、负载均衡系统和运营管理系统三大部分组成,如图 2-1 所示 。

首先,来看看分发服务系统。该系统的主要作用是实现将内容从内容源中心向边缘的推送和存储,承担实际的内容数据流的全网分发工作和面向最终用户的数据请求服务。分发服务系统最基本的工作单元就是许许多多的 Cache 设备(缓存服务器),Cache 负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用户。同时 Cacbe 还负责与原站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。

一般来说,根据承载内容类型和服务种类的不同,分发服务系统会分为多个子服务系统,如网页加速子系统、流媒体加速子系统、应用加速子系统等。每个子服务系统都是一个分布式服务集群,由一群功能近似的、在地理位置上分布部署的 Cache 或 Cache 集群组成,彼此间相互独立。每个子服务系统设备集群的数量根据业务发展和市场需要的不同,少则几十台,多则可达上万台,对外形成一个整体,共同承担分发服务工作。Cache 设备的数量、规模、总服务能力是衡量一个 CDN 系统服务能力的最基本的指标。

对于分发服务系统,在承担内容的更新、同步和响应用户需求的同时,还需要向上层的调度控制系统提供每个 Cache 设备的健康状况信息、响应情况, 有时还需要提供内容分布信息,以便调度控制系统根据设定的策略决定由哪个 Cache (组)来 响应用户的请求最优 。

负载均衡系统是一个 CDN 系统的神经中枢,主要功能是负责对所有发起 服务请求的用户进行访问调度,确定提供给用户 的 最终实际访问地址。大多数 CDN 系统的负载均衡系统是分级实现的,这里以最基本的两级调度体系进行简 要说明。一般而言,两级调度体系分为全局负载均衡 ( GSLB ) 和本地负载均 衡 ( SLB )。其中,全局负载均衡 (GSLB ) 主要根据用户就近性原则, 通过对每个服务节点进行 “ 最优 ” 判断,确定向用户提供服务的 Cache 的物理位置。最通用 的 GSLB 实现方法是基千 DNS 解析 的方式实现,也 有一些系统采用了 应用层重定向等方式来解决,关于 GSLB 的原理和实现方法将在本书第 5 章进 行讲解。本地负载均衡 ( SLB ) 主要负责节点内部的设备负载均衡,当用户请 求从 GSLB 调度到 SLB 时,SLB 会根据节点内各 Cache 设备的实际能力或内容 分布等因素对用户进行重定向,常用的本地负载均衡方法有基于 4 层调度、基于 7 层调度、链路负载调度等.

CDN 的运营管理系统与一般的电信运营管理系统类似,分为运营管理和网络管理两个子系统。运营管理子系统是 CDN 系统的业务管理功能实体,负责 处理业务层面的与外界系统交互所必需的一些收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。其中客户管理指对使用 CDN 业务的客户进行基本信息和业务规则信息的管理,作为 CDN 服务提供的依据。产品管理,指 CDN 对外提供的具体产品包属性描述、产品生命周期管理、产品审核、客户产品状态变更等。计费管理,指在对客户使用 CDN 资源情况的记录的基础上,按照预先设定的计费规则完成计费并输出账单。统计分析楼块负责从服务模块收集日常运营分析和客户报表所衙数据,包括资源使用情况、内容访问情况、各种排名、用户在线清况等数据统计和分析,形成报表提供给网管入员和 CDN 产品使用者。网络管理子系统实现对 CDN 系统的网络设备管理、拓扑管理、链路监控和故障管理,为管理员提供对全网资源进行集中化管理操作的界面,通常是基千 Web 方式实现的 。

部署架构

CDN 系统设计的首要目标是尽量减少用户的访问响应时间,为达到这一目标, CDN 系统应该尽量将用户所需要的内容存放在距离用户最近的位置。也就是说,负责为用户提供内容服务的 Cache 设备应部署在物理上的网络边缘位置,我们称这一层为 CDN 边缘层。CDN 系统中负责全局性管理和控制的设备组成中心层,中心层同时保存着最多的内容副本,当边缘层设备未命中时,会向中心层请求,如果在中心层仍未命中,则需要中心层向涌站回涌。不同 CDN 系统设计之间存在差异,中心层可能具备用户服务能力,也可能不直接提供服务,只向下级节点提供内容。如果 CDN 网络规模较大,边缘层设备直接向中心层 请求内容或服务会造成中心层设备压力过大,就要考虑在边缘层和中心层之间部署一个区域层,负责一个区域的管理和控制,也保存部分内容副本供边缘层访问 。

图 2-3 是一个典型的 CDN 系统三级部署示意图 。

节点是 CDN 系统中最基本的部署单元,一个 CDN 系统由大量的、地理位置上分散的 POP 节点组成 . 为用户提供就近的内容访问服务。CDN 节点网络 主要包含 CDN 骨干点和 POP 点。CDN 骨干点和 CDN POP 点在功能上不同,中心和区域节点一般称为骨干点,主要作为内容分发和边缘未命中时的服务点 ; 边缘节点又被称为 POP ( point-of-presence ) 节点, CDN POP 点主要作为直接 向用户提供服务的节点。但是 ,从节点构成上来说 ,无论是 CDN 骨干点还是CDN POP 点 ,都由 Cache 设备和本地负载均衡设备构成。

在一个节点中 ,Cache 设备和本地负载均衡设备的连接方式有两种:一种是旁路方式,一种是穿越方式, 如图 2-4 所示 。

在穿越方式下,SLB 一般由 L4-7 交换机实现. SLB 向外提供可访问的公网 IP 地址 ( VIP ), 每台 Cache 仅分配私网 IP 地址,该台 SLB 下挂的所有 Cache 构成一个服务组。所有用户请求和媒体流都经过该 SLB 设备,再由 SLB 设备进行向上向下转发。SLB 实际上承担了 NAT ( Network Address Translation, 网络地址转换)功能,向用户屏蔽了 Cache 设备的 IP 地址。这种方式是 CDN 系统中应用较多的方式,优点是具有较高的安全性和可靠性,缺点是 L4-7 交换机 通常较为昂贵。另外,当节点容最大时,L4-7 交换机容易形成性能瓶颈。不过近年来,随着 LVS 等技术的兴起,SLB 设备价格有了大幅下降 。

在旁路方式下,有两种 SLB 实现方式。在早期,这种 SLB 一般由软件实现。SLB 和 Cache 设备都具有公共的 IP 地址,SLB 和 Cache 构成并联关系。用户需要先访问 SLB 设备,然后再以重定向的方式访问特定的 Cache。 这种实现方式简单灵活,扩展性好,缺点是安全性较差,而且需要依赖千应用层重定 向。随着技术的发展, L4-7 交换机也可采用旁路部署方式,旁挂在路由交换设备上,数据流量通过三角传输方式进行。

在 CDN 系统中,不仅分发服务系统和调度控制系统是分布式部署的,运营管理系统也是分级分布式部署的,每个节点都是运营管理数据的生成点和采集点,通过日志和网管代理等方式上报数据。可以说,CDN 本身就是一个大型的具有中央控制能力的分布式服务系统 。


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

Search

    Table of Contents