24 / 03 / 27
括彩云内容分发网络(Content Delivery Network,CDN)面向内容提供商,针对其在互联网上传播的图片、音视频、网页、下载包等静态内容,提供传输加速服务、提高下载速度、优化用户访问体验。不论是 Web 网站,还是手机端 APP、客户端软件,其包含的内容都可通过内容分发网络进行加速。在视频加速和图片加速等场景下,内容分发网络会对内容进行审查。如果检测到视频涉黄、涉恐、涉政、涉赌、涉毒、包含广告、存在不良画面等违规内容,内容分发网络会立即下线或禁用加速域名,降低业务风险。
内容分发网络为分布式架构,由遍布全球的海量缓存节点组成。通过将站点内容分发至靠近用户的缓存节点,使得用户可就近快速获取所需内容,有效地解决公网拥塞、网络延迟等问题,优化用户访问体验。
假设一个广州电信用户使用浏览器向您的站点请求了一个文件。您站点的 IP 地址属于北京联通。此时,有以下几种情况。
在这种情况下,该请求会经过以下步骤:
通过 Local DNS 解析,浏览器获得了站点域名的 IP 地址。
浏览器向站点的 IP 地址发送请求获取该文件。
该请求在 Internet 上会在不同网络中的转发,直到抵达您的站点。这些网络所在的地域不同,所属的 ISP 也不同。并且,您站点所在的地域和所属的 ISP 与用户的也不相同。因此,从发送请求到获取文件,整个过程花费了相对较长的时间。譬如用户等待了 3-4 秒才获取到文件。
您的站点接入了内容分发网络在这种情况下,请求会经过以下步骤:
Local DNS 在解析您站点的域名时,获得内容分发网络为您的域名所分配的 CNAME 地址。该 CNAME 地址指向的是内容分发网络的请求调度系统。
通过迭代查询,Local DNS 获得负责响应该请求的边缘节点的 IP 地址。该边缘节点是内容分发网络选择的,对该用户的访问延时最低。大多数情况下,该边缘节点所在的地域和使用的 ISP 与用户的相同。
Local DNS 将该 IP 地址返回给浏览器。
浏览器向该 IP 地址发送请求。
根据该文件是否已被内容分发网络缓存,有以下两种情况:
文件未被内容分发网络缓存的原因有多种。您可以暂且认为该文件没有被缓存的原因是内容分发网络还没有收到过该文件的请求。
在这种情况下,该请求会经过以下步骤:
内容分发网络向您的站点请求该文件。
在收到该文件时,内容分发网络将该文件发送给用户。同时,内容分发网络缓存该文件。
虽然内容分发网络向您的站点请求了该文件,由于内容分发网络自身的网络和带宽优势,相比用户通过公网请求该文件,内容分发网络能更快获取到该文件。
在这种情况下,边缘节点直接将已缓存的文件发送给用户。由于访问该边缘节点的时延很低,用户在短时间内就获得了该文件。譬如用户只等待了 1-2 秒就获取到了该文件。
内容分发网络的缓存架构一般包含两层缓存,分别是边缘层和回源层。
边缘层是由遍布全球的 2500+ 缓存节点组成。边缘层中的缓存节点称为边缘节点。边缘层的目的是使用户能最快获取到您站点上的文件。
回源层位于边缘层与源站之间。相对于边缘层,回源层可以认为是二级缓存。回源层中的缓存节点称为回源节点。回源节点的数量比边缘节点的少,但是缓存容量大很多。回源层的目的是缓存尽可能多的文件,降低内容分发网络向源站请求文件的需求。 随着时间的推移,边缘节点上的某些文件的访问量可能会逐渐降低。边缘节点会移除这些文件,将释放出的磁盘空间留给其他访问量高的文件。但是,这些被删除的文件会继续在回源节点缓存一段时间。如果用户请求某个被删除的文件,边缘节点可以直接从回源节点获取文件响应用户请求,无需向源站请求该文件。
在内容分发网络中,每个加速域名都被分配了一定数量,并且固定的边缘节点和回源节点。譬如分配给加速域名A 的边缘节点是 E1、E2、E3,回源节点是 O1、O2。分配给加速域名B 的边缘节点是 E3,E5、E9,回源节点是 O5、O6。
下面从缓存架构的角度来描述内容分发网络是如何处理用户请求的。
步骤一:用户与边缘层通信
用户使用浏览器向您的站点请求一个文件。
Local DNS 在解析您站点的域名时,获得的是内容分发网络为您的域名所分配的 CNAME 地址。该 CNAME 地址指向的是内容分发网络的请求调度系统。
该请求调度系统获取分配给该域名的边缘节点与回源节点。
根据用户所在的地域和使用的 ISP,该请求调度系统选择一个用户访问延时最低的边缘节点来负责响应用户的请求。在确定了边缘节点后,该请求调度系统将该边缘节点的 IP 地址返回给 Local DNS。然后,Local DNS 将该 IP 地址返回给浏览器。
浏览器向该 IP 地址请求该文件。此时,有以下两种情况:
该边缘节点已经缓存了用户请求的文件。
在这种情况下,该边缘节点将文件发送给浏览器。浏览器收到完整文件后,用户请求完成。
该边缘节点未缓存用户请求的文件。
在这种情况下,转到步骤二。
步骤二:边缘层与回源层通信
该边缘节点会向回源层请求该文件。调度系统会从分配给该域名的回源节点中选择一个回源节点负责响应该边缘节点的请求。此时,有以下两种情况:
该回源节点已经缓存了用户请求的文件。
在这种情况下,该回源节点将文件发送给该边缘节点。在收到文件的第一个字节时,该边缘节点就开始将收到的内容发送给浏览器,并缓存收到的内容。待浏览器收到完整文件后,用户请求完成。
该回源节点未缓存用户请求的文件。
在这种情况下,转到步骤三。
步骤三:回源层与源站通信
该回源节点会向源站请求该文件。在收到源站响应的文件的第一个字节时,该回源节点就开始将收到的内容发送给该边缘节点,并缓存收到的内容。同样,在收到文件的第一个字节时,该边缘节点就开始将收到的内容发送给浏览器,并缓存收到的内容。待浏览器收到完整文件后,用户请求完成。