:::tips 內容分发网络(Content Delivery Network 或 Content Distribution Network,简称 CDN) 通过将源站内容分发至 最接近用户 的节点,从而 降低核心系统负载(系统、网络),使用户可就近取得所需内容,提高用户访问的响应速度。这种技术方案解决了因分布、带宽、服务器性能带来的访问延迟问题,适用于图片小文件、大文件下载、音视频点播、全站加速和安全加速等场景。

:::

工作原理

通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN 系统能够实时地根据 网络流量 各节点的连接负载状况 以及 到用户的距离 响应时间 等综合信息将用户的请求重新导向离用户最近的服务节点上。 利用公式简述 CDN 可表示为:
  1. CDN = 更智能的镜像 + 缓存 + 流量导流;
简单地说,CDN 是一个经策略性部署的整体系统,包括分布式存储负载均衡网络请求的重定向内容管理 4 个要件,而内容管理和全局的网络流量管理(Traffic Management)是 CDN 的核心所在。

工作流程

用户终端访问 CDN 的过程分为两个步骤,一是用户通过 DNS 找到最近的 CDN 边缘节点 IP,二是数据在网络中送达用户终端。 最简单的 CDN 网络由一个 DNS 服务器和几台缓存服务器组成,假设您的加速域名为 www.taobao.com,接入 CDN 网络,开始使用加速服务后,当终端用户(广州)发起 HTTP 请求时,处理流程如下:

CDN - 图1

步骤解析
  1. 当终端用户(广州)向 www.taobao.com 下的某资源发起请求时,首先向 LDNS(本地 DNS)发起域名解析请求。
  2. LDNS 检查缓存中是否有 www.taobao.com 的 IP 地址记录。如果有,则直接返回给终端用户;如果没有,则向授权 DNS 查询。
  3. 当授权 DNS 解析 www.taobao.com 时,返回域名 CNAME www.taobao.alicdn.com 对应 IP 地址。
  4. 域名解析请求发送至 DNS 调度系统,并为请求分配最佳节点 IP 地址。
  5. LDNS 获取 DNS 返回的解析 IP 地址。
  6. 用户获取解析 IP 地址。
  7. 用户向获取的 IP 地址发起对该资源的访问请求。
    • 如果该 IP 地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤 7 和 8,请求结束。
    • 如果该 IP 地址对应的节点未缓存该资源,则节点向它的上级缓存服务器请求内容,直至追溯到网站的源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,途中的杭州节点,并返回给用户,请求结束。
在步骤四中,DNS 调度系统可以实现负载均衡功能,负载均衡分为全局负载均衡和区域负载均衡,其内部逻辑大致如下: 1. CDN 全局负载均衡设备会根据用户 IP 地址,以及用户请求的内容 URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。 2. 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括: - 根据用户 IP 地址,判断哪一台服务器距用户最近; - 用户所处的运营商; - 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容; - 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。 基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的 IP 地址。 3. 全局负载均衡设备把服务器的 IP 地址返回给用户。 # 组成部分 典型的 CDN 系统由下面三个部分组成: + 分发服务系统:最基本的工作单元就是 Cache 设备,Cache(边缘 Cache)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用户。同时 Cache 还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache 设备的数量、规模、总服务能力是衡量一个 CDN 系统服务能力的最基本的指标。 + 负载均衡系统:主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(GSLB)和本地负载均衡(SLB)。GSLB 主要根据用户就近性原则,通过对每个服务节点进行”最优“判断,确定向用户提供服务的 Cache 的物理位置。SLB 主要负责节点内部的设备负载均衡 + 运营管理系统:分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。 CDN 通常由源站负责内容生产,主干节点负责二级缓存和加速,通常在 BGP 网络。 广义上的内容分发网络可以包含源站一起,甚至多媒体分发(视频)。商业意义上的 CDN 只包含 CDN 提供商的网络,不包含源站。部分 CDN 支持图片及多媒体处理扩展等附加功能:压缩、剪切、水印、鉴黄。 CDN 切面 CDN - 图2 CDN 数据流向 CDN - 图3 # 参考
参考