Skip to main content
德胜云
  万速智能9 > CDN

居然可以这样「运维工程师必备技能:CDN加速揭密」cdn加速服务器原理cdn加速的好处

2024-04-19 02:12:40 浏览:

居然可以这样「运维工程师必备技能:CDN加速揭密」cdn加速服务器原理cdn加速的好处

1、 CDN发展历史

CDN的诞生是因为为宽带网的骨干网带宽小,接入带宽高,它本质上是通过一种分布试服务器构成的网络,把热点内容存储在网络靠近接入侧的服务器上,从而使用用户访问热点内容时不用再访问骨干网的服务器,减少骨干网流量需要,并提高服务质量。

CDN是为互联网上的应用服务服务的,它伴随关互联网的发展而逐步成长,其发展过程中的高峰低谷、起起落落与整个互联网的发展轨迹基本保持一致,这里借此回顾一下CDN的发展历程,如表1-1所示。

表1-1

2、 CDN核心原理

CDN(Content Delivery Network,内容分发网络)简单地说就是通过在不同地点缓存内容,通过负载平衡等技术请求到最近的缓存服务器上获取内容,提高用户访问网站的响应速度。和简单的内容镜像不同,CDN通过用户就近性和服务器负载的判断,以一种更为高效的方式为用户提供服务。

2.1、CDN操作流程

从用户使用的角度来看,CDN是透明的,用户在使用互联网业务时,该业务是否使用了CDN承载,是不改变和影响用户用户的正常操作流程的。CDN操作流程如图2-1所示。

当内容提供商、运营商(cp/sp)接入CDN(假设CDN的URL为http://sample.ctccdn.cn)时,在接入CDN成功后,把接入CDN后的URL发布到业务门户上。

1、 用户终端从门户上观看一个在线视频,在打开一个播放页面后,点击播放按钮,该播放按钮URL地址实际是指向CDN的,如

http://sample.ctccdn.com/001.

2、 用户终携带该URL向CDN发起播放请求,CDN通过内容分发机制把内容传送给用户

CDN的内容分发机制是CDN的核心技术,如何高效地把内容由节点分发送给用户是各大CDN广商研究的重点内容。CDN的高效分发,指的是在有限的产资源下,能实现用户就近服务最大化、网络消耗最小化。

图2-1 CDN操作图

2.2、基于pull的分发机制

基于PULL(下拉)的CDN分发机制如图2-2所示

图2-2 基于pull(下拉)的CDN分发机制

基于(下拉)的CDN分发机制基本原理主要是通过把用户服务请求调度到合适的边缘节点,如果发内容末命中,则该边缘节点向上PULL(下拉)内容,如果其上级也没有,则逐级向上下拉。其流程如下。

1、 用户计算机通过门户得到访问CDN的URL后,向CDN发起服务请求,如http://sample.bdqn.cn/001。

2、 CDN检查访问请求的源IP地址,并根据调度策略,把用户请求进行重定向,返回边缘的访问地址,如:。

3、 用户计算机根据得到的重定向地址,如

http://bianyuan1.ctccdn.com/001,向CDN边缘服务器发起请求。

4、 边缘服务器检查发现本机没有"001"内容,如不存在则向上PULL机制,向上发起下拉"001"的请求。

5、 CDN节点逐级检查是否存在"001"内容,如不存在则向上PULL内容,最终把内容下拉下来,并由边缘服务器向用户担任服务。

从基于PULL的CDN分发流程来分析,CDN的处理机制是比较简单的:CDN的主要调度策略是不需要考虑内容的分布情况的,CDN只需要根据访问请求的源IP地址,把用户访问请求调度到合适的边缘服务器。CDN节点间的下拉机制也比简单,一般下级节点只需要把所需要下拉的内容ID,如"001"向上发起请求即可。

2.3、基于PUSH的分发机制

基于PUSH(推)的CDN分发机制如图3.1所示。

图3-1 基于push(推)的CDN分发机制

基于PUSH(推)的CDN分发机制基本原理主要是,把用户服务请求调度到有内容的CDN最接近用户节点。在这种机制下,就不会发生内容末命中的情况。其流程如下。

1、 用户计算机通过门户得到访问CDN的URL后,向CDN发起请求,如

http://sample.ctccdn.com/001。

2、 CDN检查访问请求的源IP地址,检查"001"内容在CDN分布情况,并根据调度策略,对用户访问请求进行重定向,返回有内容的CDN最接近用户的节点,如

http://quyu1.ctccdn.com/001。用户计算机机据得到的重定向地址,

http://quyu1.ctccdn.com/001,向该服务器发送服务器请求。

3、 CDN统计"001"的访问情况,当发现"001"内容达到热度阈值时,中心节点就主动下推内容到区域节点。

4、 区域节点发现"001"内容达到热度阈值时,也主动把内容下推到边缘服务器。

5、 当再有用户服务请求调度到有内容的边缘服务器。

从基于PUSH的CDN分发流程来分析,CDN的处理机制是相对较为复杂的:CDN需要了解到全网CD N内容分布,能正确把用户调度到有内容的服务器上,而且PUSH的主动下发,需要对内容热度有完全的统计信息。

2.4、混合分发机制

混合分发机制就是PUSH与PULL分发机制结合和一种机制。混合分发机制。混合分发机制有多种方案,最常见的混合分发机制,是利用PUSH机制进行内容预推,后续的CDN内容分发机制使用PULL机制。

需要支持智能分发(PUSH/PULL)方式,支持根据当前内容分发系统中的内容服务状况,采用推位的方式动态地调整内容在内容分发系统中的分布,对于热点内容自动智能地将其缓存在边缘节点。

对于PUSH分发方式需要支持手工分发、自动分发、单个分发、批量分发、逻辑群分发(可选);至少应支持即时、定时、增量的内容分发策略;根据节点分组信息、节点IP地址段等策略进行内容分发;应支持根据访问量设置分发门限、定向分发,客户自定义分发策略;支持分类、分级的内容分发策略;支持对内容的分发优先级、更新频率、新鲜度设定等管理功能。

3、 CDN的四大关键技术

随着宽带网络和宽带流媒体应用的兴起,CDN(通常被称为内容分发网络Content distribution network,有时也被称作内容传递网络Contentdeliverynetwork)作为一种提高网络内容,特别是提高流媒体内容传输的服务质量、节省骨干网络带宽的技术,在国内外得到越来越广泛的应用。

CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等。

3.1、内容路由技术

CDN负载均衡系统实现CDN的内容路由功能。它的作用是将用户的请求导向整个CDN网络中的最佳节点。最佳节点的选定可以根据多种策略,例如距离最近、节点负载最轻等。负载均衡系统是整个CDN的核心,负载均衡的准确性和效率直接决定了整个CDN的效率和性能。

通常负载均衡可以分为两个层次:全局负载均衡(GSLB)和本地负载均衡(SLB)。全局负载均衡(GSLB)主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)。因此,就近性判断是全局负载均衡的主要功能。本地负载均衡一般局限于一定的区域范围内,其目标是在特定的区域范围内寻找一台最适合的节点提供服务,因此,CDN节点的健康性、负载情况、支持的媒体格式等运行状态是本地负载均衡进行决策的主要依据。

负载均衡可以通过多种方法实现,主要的方法包括DNS、应用层重定向、传输层重定向等等。

对于全局负载均衡而言,为了执行就近性判断,通常可以采用两种方式,一种是静态的配置,例如根据静态的IP地址配置表进行IP地址到CDN节点的映射。另一种方式是动态的检测,例如实时地让CDN节点探测到目标IP的距离(可以采用RRT,Hops作为度量单位),然后比较探测结果进行负载均衡。当然,静态和动态的方式也可以综合起来使用。

对于本地负载均衡而言,为了执行有效的决策,需要实时地获取Cache设备的运行状态。获取的方法一般有两种,一种是主动探测,一种是协议交互。主动探测针对SLB设备和Cache设备没有协议交互接口的情况,通过ping等命令主动发起探测,根据返回结果分析状态。另一种是协议交互,即SLB和Cache根据事先定义好的协议实时交换运行状态信息,以便进行负载均衡。比较而言,协议交互比探测方式要准确可靠,但是目前尚没有标准的协议,各厂家的实现一般仅是私有协议,互通比较困难。

3.2、内容分发技术

内容分发包含从内容源到CDN边缘的Cache的过程。从实现上看,有两种主流的内容分发技术:PUSH和PULL.

PUSH是一种主动分发的技术。通常,PUSH由内容管理系统发起,将内容从源或者中心媒体资源库分发到各边缘的Cache节点。分发的协议可以采用HTTP/FTP等。通过PUSH分发的内容一般是比较热点的内容,这些内容通过PUSH方式预分发(Preload)到边缘Cache,可以实现有针对的内容提供。对于PUSH分发需要考虑的主要问题是分发策略,即在什么时候分发什么内容。一般来说,内容分发可以由CP(内容提供商)或者CDN内容管理员人工确定,也可以通过智能的方式决定,即所谓的智能分发。它根据用户访问的统计信息,以及预定义的内容分发的规则,确定内容分发的过程。

PULL是一种被动的分发技术,PULL分发通常由用户请求驱动。当用户请求的内容在本地的边缘Cache上不存在(未命中)时,Cache启动PULL方法从内容源或者其他CDN节点实时获取内容。在PULL方式下,内容的分发是按需的。

在实际的CDN系统中,一般两种分发方式都支持,但是根据内容的类型和业务模式的不同,在选择主要的内容分发方式时会有所不同。通常,PUSH的方式适合内容访问比较集中的情况,如热点的影视流媒体内容;PULL方式比较适合内容访问分散的情况。

在内容分发的过程中,对于Cache设备而言,关键的是需要建立内容源URL、内容发布的URL、用户访问的URL,以及内容在Cache中存储的位置之间的映射关系。

3.3、内容存储技术

对于CDN系统而言,需要考虑两个方面的内容存储问题。一个是内容源的存储,一个是内容在Cache节点中的存储。

对于内容源的存储,由于内容的规模比较大(通常可以达到几个甚至几十个TB),而且内容的吞吐量较大,因此,通常采用海量存储架构。如NAS和SON.

对于在Cache节点中的存储,是Cache设计的一个关键问题。需要考虑的因素包括功能和性能两个方面:在功能上包括对各种内容格式的支持、对部分缓存的支持,在性能上包括支持的容量、多文件吞吐率、可靠性、稳定性。

其中,多种内容格式的支持要求存储系统根据不同文件格式的读写特点进行优化,以提高文件内容读写的效率,特别是对流媒体文件的读写。

部分缓存能力指流媒体内容可以以不完整的方式存储和读取。部分缓存的需求来自用户访问行为的随机性,因为许多用户并不会完整地收看整个流媒体节目,事实上,许多用户访问单个流媒体节目的时间不超过10分钟。因此,部分缓存能力能够大大提高存储空间的利用率,并有效地提高用户请求的响应时间。但是部分缓存可能导致内容出现碎片问题,需要进行良好的设计和控制。

Cache存储的另一个重要因素是存储的可靠性,目前,多数存储系统都采用了RAID技术进行可靠存储。但是不同设备使用的RAID方式各有不同。

3.4、内容管理技术

内容管理在广义上涵盖了从内容的发布、注入、分发、调整、传递等一系列过程。在这里,内容管理重点强调内容进入Cache点后的内容管理,我们称为本地内容管理。

本地内容管理主要针对一个CDN节点(由多个CDN Cache设备和一个SLB设备构成)进行。本地内容管理的主要目标是提高内容服务的效率,提高本地节点的存储利用率。通过本地内容管理,可以在CDN节点实现基于内容感知的调度,通过内容感知的调度,可以避免将用户重定向到没有该内容的Cache设备上,从而提高负载均衡的效率。通过本地内容管理还可以有效地实现在CDN节点内容的存储共享,提高存储空间的利用率。

在实现上,本地内容管理主要包括如下几个方面。

1. 本地内容索引。本地内容管理首先依赖于对本地内容的了解。包括每个Cache设备上内容的名称、URL、更新时间、内容信息等。本地内容索引是实现基于内容感知的调度的关键。

2. 本地内容拷贝。通常,为了提高存储效率,同一个内容在一个CDN节点中仅存储一份,即仅存储在某个特定的Cache上。但是一旦对该内容的访问超过该Cache的服务提供能力,就需要在本地(而不是通过PUSL的方式)实现内容的分发。这样可以大大提高效率。

3. 本地内容访问状态信息收集。搜集各个Cache设备上各个内容访问的统计信息,Cache设备的可用服务提供能力及内容变化的情况。

可以看出,通过本地内容管理,可以将内容的管理从原来的Cache设备一级,提高到CDN节点一级,从而大大增加了CDN的可扩展性和综合能力。

综上所述,CDN作为一种支持大规模高质量的流媒体服务的关键技术,目前已经基本成熟,具备了广泛应用的能力。

4、CDN在企业中架构图

5、 CDN监控维护思路

1、了解节点服务机器分布的情况

机器数量对监控部署也是挑战,CDN的布点和其他的服务布点策略不太一样。为了最大化节约成本,通常会选择2-3线城市,并且跨多个运营商。特别是过多的小运营商,延迟通常都比较大,延迟别说十几毫秒,十几秒那种都很正常。我们一般统计的平均标准至少都在一秒以上。

2、物理层面的。

由CDN的机房比较分散,在判断一个机房故障时,不能单纯从一条链路故障来判断,比如A机房down掉的情况,不能主观意识的从核心结构去观察到它,这个机房不通了,或者是已经挂掉了。因为CDN的话,除了管理之外,还可以对用户从用户层面上来讲,有可能这个机房是没有问题的。但是从管理级别上来讲,这个机房已经挂掉了,因为它不可控。

从运维角度上来讲,因为不可控了,那就应该标记为不可用了。但是实际上,有可能无法做到它不可控了、不可用了,就去把服务切掉,因为有可能这个机房所承载的服务量会比较大。特别是高峰期,做这种流量标注的时候会影响到用户的质量,其他服务机房的带宽的成本就会上升。所以在第一个维度,要跟据监控体系,从多机房的维度去探测这一个机房。如果说我在这一个时间之内判断,比方说我的维度是五个机房,有三个地方探测这个机房不可用了,那就把这个机房标记为不可用。它是真的不可用了。

第二个维度是用户层面的,就是说,去模拟这个地区之内的用户的请求。比方说这个机房是在广州,那就模拟广州用户的请求,在湖北,就看湖北用户的请求,然后去判断它在这种情况下的不可用。如果说它不可用了,就预警,标记这个机房为不可用的。如果只是单次的情况,比如从监控层面来讲,经常会用有网络顾客打来说丢包啊什么的,大部分时间都采用忽略不计,除非影响故障时间特别长。

更多的时间是保障节点回源的情况,只要回源没有问题。网络链路的情况是我们优化的重点。对于源站那块,主要是HTTP层面的监控,保证服务响应是正常的,确保网络层面的正常。

总体来说, CDN的监控体系从物理层可用性(设备、节点、网络状态)、应用层面可用性(HTTP)、服务质量三个维度出发,结合业务特性做优化工作,并把相关的数据结合更加精密,每一个监控项都需要不断深入细化、调试。慢工做细活,监控就是个细活。

CDN故障响应机制及修复措施。

有的时候我们的源站点负载过高,当然也可能是web服务器,也可能是存储服务器……

1) 分析服务器访问日志,判断源IP的来源。

2) 也有可能是CDN频繁的来抓取数据。可能有这几点原因a.源站点更新频繁,CDN的缓存经常更新数据

3) CDN公司增加缓存节点。它要抓取源服务器。

6、 CDN计费

也不是所有的CDN的计费都相同,不同的公司有着不同计费方式。下例是举例说明:

6.1、按流量计费

按使用流量后付费,流量按自然月累积,做为阶梯判断依据

按小时计费,实时扣费(每小时出账单并扣费)。

账单出账时间为当前计费周期结束。账单出账时间通常在当前计费周期结束后一小时内, 例10:00-11:00的账单会在11:00以后生成, 具体以系统出账时间为准,账单生成后会自动从您的账户余额中扣除费用以结算账单。

6.2、按峰值带宽计费

按使用峰值带宽后付费,峰值带宽按自然日计算,做为阶梯判断依据

按自然日计费,每日出账单并实时扣费。

账单出账时间为当前计费周期结束(自然日)。账单出账时间通常在当前计费周期结束后一小时内, 6月17日的账单会在6月18日零点以后生成, 具体以系统出账时间为准,账单生成后会自动从您的账户余额中扣除费用以结算账单。

……

居然可以这样「运维工程师必备技能:CDN加速揭密」cdn加速服务器原理cdn加速的好处

  • 微信小程序服务器端的重要性与功能
  • 微信小程序服务器端的重要性与功能
  • 寻找服务器回收公司:租用服务器的费用和相关信息
  • 如何搭建适用于微信小程序的服务器
  • 如何搭建微信小程序所需的服务器