Bootstrap

云上基础产品之内容分发网络

摘要

内容分发网络(CDN,Content Delivery Network)是云上一个标准的产品,它用部分在各地的节点对源站进行加速,本文介绍CDN的基本概念,以及几家云的CDN产品。

CDN的基本概念

CDN是一个在云上出现很早的产品,也是一个比较基本的产品。它的基本原理是:云服务提供商的CDN节点分布于全国各地,可以靠近用户,因此可以对客户的源站进行加速。

CDN对于一个基本互联网服务建设,并不是必需的,它带来的是成本、性能方面的优化。

CDN几个基本概念是:

  • 源站:用于加速的对象,可以是对象存储、动态网站;

  • 缓存:用于暂存源站的内容,CDN加速的原理是将源站内容放在Cache集群里面缓存

  • 回源:当不能或者不需要缓存的时候,CDN访问源站重拿内容

  • 配置域名:代表用户访问的域名,通过域名和DNS可以找到就近的CDN节点;

CDN虽然名叫内容分发网络,但是它本质上与存储类的产品更近,这是因为它属于一种通过Cache集群提高性能、降低成本的方式。

从云服务提供商的角度,CDN不仅仅可以对本云的内容进行加速,对不同云的内容进行加速,其中的区别仅仅是源站设置的内容。

从客户的角度,CDN可以对静态内容加速,也可以对动态内容加速(缓存影响时效性),也可以对全站进行加速。

在实际应用中,CDN与静态内容、动态内容的关系是:

  • CDN对静态内容加速理所当然,静态的站点本身可以完全都走CDN,缓存时间也可以很长;

  • CDN如果对动态内容进行加速,会牺牲一些时效性,与缓存时间设置有关;

  • CND也常常不对动态内容进行加速,动态内容直接对外;

下面是华为云对于CDN的网站加速图,客户、终端用户、源站是CDN需要交互的三个方面,它本身相当于一个黑盒。

CDN的使用场景

华为云的CDN场景

华为云的CDN场景已经比较全面,这里仅仅是应用的场景,但从中也可以看出CDN内部工作的细节。

华为云的网站加速场景中,用户进行配置、Cache集群与源站交互、用户与CDN对外的接口来进行交互。这里面的CDN是一个抽象的概念,实际上它是一个分布在各地的网络。

CDN网站加速的对象,可以是一个静态的对象存储,也可以是动态的网站(以LB对外)。根据此处的描述,动态的内容默认是不缓存。

华为云的CDN点播加速场景,此处的源站本身一般就是在对象存储里面的东西。从实际的运行来看,如果此处没有CDN加速,直接用对象存储对外,不仅速度慢,而且成本也会高很多。使用了CDN之后,还可以的访问配置一些访问限制,用以完成版权控制类的工作。

金山云的CDN场景

金山云的CDN场景也比较基础,体现了CDN原本的运行原理。

金山云的KCDN静态加速服务应用架构是一个只对静态内容进行加速的场景,此处的后端是对象存储,其实也就是代表了一个对象存储的后端。

金山云的KCDN直播加速服务应用架构是面对直播的架构,此处的源站是一个内容源的综合服务集群。

腾讯云的CDN场景

腾讯云的CDN场景也是分成了网站加速、下载加速、音视频加速三个场景。

腾讯云的CDN网站加速架构场景比较典型:CDN对静态内容进行加速。

阿里云的CDN场景

阿里云的CDN也分成了几种典型的场景。

阿里云的CDN网站站点加速场景强调了调度中心的优化,此处的源站和CDN内部的结构都得到了简化。调度中心是一个比较智能的环境,它对CDN提供的是控制的输入。

CDN的计费方式

云上CDN产品的计费理比较简单,也就是考虑带宽、流量的因素,实际上流量是带宽在时间维度的积分,还需要考虑峰值的情况。

华为云的CDN的计费分成基础费用、增值服务费用两个部分。

金山云的CDN计费分成两种方式:流量计费、峰值带宽计费。

腾讯云的CDN计费分成两种方式:它本身也是分成带宽计费、流量计费两个方面。

下面是阿里云的计费,这里面的规则更加复杂一些,除了带宽峰值、流量模式之外,还有增值服务。