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