2.1 CDN的系统架构
2.1.1 功能架构
CDN技术自1998年诞生以来,伴随着互联网的高速发展,其技术一直在持续演进和完善,但基本的CDN功能架构在2003年左右就已基本形成和稳定下来。从功能上划分,典型的CDN系统架构由分发服务系统、负载均衡系统和运营管理系统三大部分组成,如图2-1所示。
图2-1 CDN系统功能架构图
首先,来看看分发服务系统。该系统的主要作用是实现将内容从内容源中心向边缘的推送和存储,承担实际的内容数据流的全网分发工作和面向最终用户的数据请求服务。分发服务系统最基本的工作单元就是许许多多的Cache设备(缓存服务器),Cache负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用户。同时Cache还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。
一般来说,根据承载内容类型和服务种类的不同,分发服务系统会分为多个子服务系统,如网页加速子系统、流媒体加速子系统、应用加速子系统等。每个子服务系统都是一个分布式服务集群,由一群功能近似的、在地理位置上分布部署的Cache或Cache集群组成,彼此间相互独立。每个子服务系统设备集群的数量根据业务发展和市场需要的不同,少则几十台,多则可达上万台,对外形成一个整体,共同承担分发服务工作。Cache设备的数量、规模、总服务能力是衡量一个CDN系统服务能力的最基本的指标。
对于分发服务系统,在承担内容的更新、同步和响应用户需求的同时,还需要向上层的调度控制系统提供每个Cache设备的健康状况信息、响应情况,有时还需要提供内容分布信息,以便调度控制系统根据设定的策略决定由哪个Cache(组)来响应用户的请求最优。
负载均衡系统是一个CDN系统的神经中枢,主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。大多数CDN系统的负载均衡系统是分级实现的,这里以最基本的两级调度体系进行简要说明。一般而言,两级调度体系分为全局负载均衡(GSLB)和本地负载均衡(SLB)。其中,全局负载均衡(GSLB)主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的Cache的物理位置。最通用的GSLB实现方法是基于DNS解析的方式实现,也有一些系统采用了应用层重定向等方式来解决,关于GSLB的原理和实现方法将在本书第5章进行讲解。本地负载均衡(SLB)主要负责节点内部的设备负载均衡,当用户请求从GSLB调度到SLB时,SLB会根据节点内各Cache设备的实际能力或内容分布等因素对用户进行重定向,常用的本地负载均衡方法有基于4层调度、基于7层调度、链路负载调度等,具体的内容在本书第4章进行讲解。
CDN的运营管理系统与一般的电信运营管理系统类似,分为运营管理和网络管理两个子系统。运营管理子系统是CDN系统的业务管理功能实体,负责处理业务层面的与外界系统交互所必需的一些收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。其中客户管理指对使用CDN业务的客户进行基本信息和业务规则信息的管理,作为CDN服务提供的依据。产品管理,指CDN对外提供的具体产品包属性描述、产品生命周期管理、产品审核、客户产品状态变更等。计费管理,指在对客户使用CDN资源情况的记录的基础上,按照预先设定的计费规则完成计费并输出账单。统计分析模块负责从服务模块收集日常运营分析和客户报表所需数据,包括资源使用情况、内容访问情况、各种排名、用户在线情况等数据统计和分析,形成报表提供给网管人员和CDN产品使用者。网络管理子系统实现对CDN系统的网络设备管理、拓扑管理、链路监控和故障管理,为管理员提供对全网资源进行集中化管理操作的界面,通常是基于Web方式实现的。
图2-2是国内第一家CDN服务商——蓝汛(ChinaCache)公司在2005年发布的《CDN技术白皮书》中描述的CDN系统架构,是一套实际的、运行良好的商用CDN系统。我们以该架构为例,与图2-1展示的CDN系统功能架构进行对照分析,帮助读者理解CDN系统的组成。
图2-2 ChinaCache CDN系统架构图
在蓝汛CDN架构中,CCN(ChinaCache Nod)模块对应于图2-1中的分发服务系统,是CDN的基本服务模块,由分布于各个城市、各个运营商网络中的Cache设备和辅助设备组成。
GAC(Global Access Controller)模块对应于图2-1中的负载均衡系统,主要采用了智能DNS解析方案,负责通过域名解析应答实现将用户请求调度到最优服务节点的目的。
NOC(Network Operating Center)模块对应图2-1中的网络管理系统,负责对全网进行7×24小时的监控和管理。NOC可以监控ChinaCache CDN中的链路状况、节点响应速度、设备运行状态,也可以监控到客户的源站点运行状况等信息,一旦发现异常马上采取相应措施予以解决,是保障CDN服务安全可靠性的重要系统。值得一提的是,蓝汛的NOC中设置了源站点监控功能,对客户源站进行可达性监控,从而减轻或者避免由于源站故障造成的服务中断。
OSS(Operating Support System)模块对应图2-1中的运营管理子系统,负责采集和汇总各个CCN的日志记录信息,然后由中央处理软件加以整理和分析,最后通过客户服务门户进行发布。蓝汛的客户可以通过OSS提供的查询界面来查询加速页面或频道的实时流量、流量分布、点击数量、访问日志等信息。
2.1.2 部署架构
CDN系统设计的首要目标是尽量减少用户的访问响应时间,为达到这一目标,CDN系统应该尽量将用户所需要的内容存放在距离用户最近的位置。也就是说,负责为用户提供内容服务的Cache设备应部署在物理上的网络边缘位置,我们称这一层为CDN边缘层。CDN系统中负责全局性管理和控制的设备组成中心层,中心层同时保存着最多的内容副本,当边缘层设备未命中时,会向中心层请求,如果在中心层仍未命中,则需要中心层向源站回源。不同CDN系统设计之间存在差异,中心层可能具备用户服务能力,也可能不直接提供服务,只向下级节点提供内容。如果CDN网络规模较大,边缘层设备直接向中心层请求内容或服务会造成中心层设备压力过大,就要考虑在边缘层和中心层之间部署一个区域层,负责一个区域的管理和控制,也保存部分内容副本供边缘层访问。
图2-3是一个典型的CDN系统三级部署示意图。
图2-3 三级CDN系统部署图
节点是CDN系统中最基本的部署单元,一个CDN系统由大量的、地理位置上分散的POP节点组成,为用户提供就近的内容访问服务。CDN节点网络主要包含CDN骨干点和POP点。CDN骨干点和CDNPOP点在功能上不同,中心和区域节点一般称为骨干点,主要作为内容分发和边缘未命中时的服务点;边缘节点又被称为POP(point-of-presence)节点,CDNPOP点主要作为直接向用户提供服务的节点。但是,从节点构成上来说,无论是CDN骨干点还是CDNPOP点,都由Cache设备和本地负载均衡设备构成。
在一个节点中,Cache设备和本地负载均衡设备的连接方式有两种:一种是旁路方式,一种是穿越方式,如图2-4所示。
图2-4 CDN节点内SLB和Cache的连接方式
在穿越方式下,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交换机也可采用旁路部署方式,旁挂在路由交换设备上,数据流量通过三角传输方式进行。关于SLB的实现方式,在本书第4章还将深入讲解。
在CDN系统中,不仅分发服务系统和调度控制系统是分布式部署的,运营管理系统也是分级分布式部署的,每个节点都是运营管理数据的生成点和采集点,通过日志和网管代理等方式上报数据。可以说,CDN本身就是一个大型的具有中央控制能力的分布式服务系统。