CDN技术架构
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 CDN核心子系统

2.2.1 调度系统

调度系统(见图2-2)在CDN平台中,通过实时科学决策将底层资源合理地调配给上层业务(弹性伸缩),并通过多租户海量业务编排来精确控制资源水位(负载均衡),以达到业务按需进行质量控制和平台成本控制的目标。

CDN提供的核心价值是网站访问加速和业务弹性支撑。其通过建设广域覆盖的边缘节点基础设施,将业务网站的内容缓存到网民身边(“最后一公里”),调度系统将用户访问请求通过调度策略(就近覆盖、过载分离等)引导到最合理的边缘节点,进而达到用户访问站点加速和业务弹性支撑的目的。

在互联网发展的早期,电信基础设施还不完善之时,CDN就已作为互联网的基石,诞生于云计算出现之前的互联网浪潮中,并为互联网一路“高歌猛进”立下了汗马功劳。当云计算开始风靡之时,业内人士发现CDN应该归属于云计算大类,其是非常典型且普及得非常成功的PaaS云产品(于是,云计算公司纷纷加入了这场CDN混战),且分布式、多租户、弹性伸缩等云计算的关键特征能在CDN调度系统里浓墨重彩般地体现(可通过调度系统的实现方式,厘清云CDN和非云CDN的本质差别)。

图2-2 CDN整体示意图

在CDN平台上,不同租户场景有不同的业务需求和质量要求,如下所示。

● 直播对时延和卡顿都有严苛的要求,其对网络抖动的忍受度很低;而点播仅对卡顿有严苛的要求,大家可通过调控视频播放器缓冲器(buffer)的大小在一定程度上抵消网络抖动的影响,其对网络抖动具有一定的忍受度。

● UGC(User Generated Content,用户生成内容)业务内容过于分散,对存储空间的需求非常大;而feed流推荐视频内容相对集中,对存储空间的需求则要低得多。

● 电商、微服务接口、交易类业务需要全站内容请求都通过HTTPS来保护内容传输安全,且用户请求的QPS(Query Per Second,每秒请求数)高度并发,属于算力密集型业务。其对CPU算力的需求很大;而点播、下载类业务,单文件的大小比较大,往往呈现出流量密集型的特征,其对CPU算力的需求较小。

在CDN平台上,节点资源呈现出集群数量庞大、单集群规模小、广域分布、异构构成[网络、存储、计算的容量规格和QoS(Quality of Service,服务质量)都有差异]等特征。调度系统的一个重要职能就是“完成业务和资源的最佳匹配”,即根据各个租户场景的业务画像和资源画像进行特征匹配和资源使用分配。

云产品的成功往往是通过不断做大规模,再通过海量业务自然错峰复用和采用技术手段不断优化资源能效(含资源复用率和资源使用率)、不断摊薄单位业务运营成本来达到赢利目的的。在CDN平台上,不同资源形态存在天然的资源互补(比如95计费、包端口、流量计费的组合使用)、不同业务形态存在天然的业务互补(时序错峰、资源消耗互补等),而调度系统统筹着整个大盘业务和资源,决定各业务单元如何编排到各资源单元上,将资源供应链的优势进行科学释放,以确保在满足业务质量约束的情况下追求成本优化目标的最大化。

图2-3是参照阿里云CDN给出的调度系统架构示意图,CDN调度系统主要分成4个部分(成本规划模块、资源调度模块、全局负载均衡模块、调度执行器模块),以及许多调度支撑组件(含业务画像、资源画像、全局感知、LDNS画像、全球精准IP地址库等)。

CDN平台具有海量边缘节点,这些节点分布在不同运营商、不同地域中,具有不同的价格、不同的计费方式,也具有不同的网络品质、集群硬件配置。CDN的主要成本集中在带宽成本上,成本规划模块是以离线方式在给定业务构成和资源构成的情况下求解各个节点的最优成本线的。

资源调度模块在成本规划模块的基础上,结合业务画像和资源画像进行业务与资源的匹配,将各个业务编排到相应的CDN节点上,输出各个业务的节点集合池。资源调度需要解决在多客户和多业务混跑场景下各个业务都有突发可能的问题;也就是说,一个比较好的资源调度方案应该具备比较好的弹性伸缩机制。

图2-3 调度系统架构示意图

全局负载均衡模块在成本规划模块给定节点成本线和资源调度模块划定业务节点集合的约束下,生成全局调度策略,以确保水位的均衡性,以及根据业务分级需要进行就近覆盖(网络往返时延RTT满足业务场景要求)。由于CDN广域分布海量节点的特点,各节点必然会存在异常或出现故障的概率,全局负载均衡模块还需要将发生故障节点的业务快速迁移到其他的健康节点中。

调度执行器是执行全局负载均衡调度策略的调度服务器组件,包含DNS执行器、HTTPDNS执行器、302执行器等。这三种组件对应三种不同的用户请求调度牵引方式,即LDNS(Local DNS,本地域名服务器)牵引、App端绕过DNS自行解析牵引、302跳转牵引。调度牵引方式的选择对调度策略的执行精确度、实时性、可调度颗粒度都有直接的影响。

此外,调度系统还需要很多重要的支撑组件:

● IP地址库组件:调度执行器基于IP地址库来判断执行哪个用户归属区域(如联通北京、电信广东等)的调度策略。

● 全局感知组件:通过主动探测和被动检测等方式感知资源的可用性状态,并实时触发全局负载均衡模块进行故障迁移。

● 画像组件:含业务画像、资源画像、LDNS画像,画像数据的精确度对调度策略的科学生成至关重要。