基本原理

基本概念

定义

  • C:分发内容-Content
  • D:分发策略-Delivery
  • N:分发网络-Network

分发内容

  • 静态资源:图片、文字、动画
  • 动态内容:流媒体

工作过程

  1. 内容注入
  2. 用户请求调度
    1. 用户发起请求
    2. CDN授权DNS服务器(全局负载均衡GLSB)将节点设备IP返回用户或者将l另一个GSLB设备的IP返回用户
    3. 用户向GLSB设备发起内容访问请求
    4. 根据用户IP地址以及访问URL,选择用户所属地域负载均衡设备(SLB),并让用户向该SLB发起访问
    5. SLB设备通过决策为用户选择最佳服务器,用户向服务器发起访问请求
    6. 若服务器内容未命中,则该服务器向上级节点请求内容,然后由该服务器提供服务
  3. 内容分发
  4. 内容服务

内容接入

  1. 内容存储接入

    1. 互联网内容源提前将内容注入CDN
    2. 内容永久存储CDN
    3. 包括对内容的增加、删除和更新,可以使用系统或者手动方式主动发起内容删除并立即实现全网删除
    4. 对用户服务质量保障最佳,但对CDN资源消耗大、成本高,主要用于IPTV、视频点播
  2. 内容预注入

    1. 源站在内容发布之前注入CDN
    2. 只进行内容缓存,CDN根据热度实现智能删除
    3. 删除之后,仍可通过回源实现内容再提取
  3. 实时回源

    1. 用户访问时,CDN实时拉取源站内容,内容为非托管式接入

    2. 对用户服务质量保障低,主要用于网站,为主流应用方式。

用户请求调度

  1. 全局调度
    1. 基于DNS调度方式
    2. 基于应用层重定向调度
  2. 本地调度

内容分发

  1. push:由CDN内容管理系统发起,将内容从源站或者内容库主动分发到边缘节点
  2. pull:由用户发起请求驱动
  3. 混合分发:利用push方式进行内容预推,后续使用pull方式拉取

内容服务

  1. 静态内容服务
    1. 缓存类服务:基于HTTP服务的文件下载
    2. 流媒体类服务:视频网站
  2. 动态内容服务:微信、微博等实时互动站点

架构与组网

功能平面

  1. 管理平面:业务管理、网络管理、分发策略管理、内容接入管理、回源分发管理
  2. 调度平面:满足用户服务请求调度(DNS调度、HTTP调度、RTSP调度)、内容定位、内容路由
  3. 数据平面:内容存储、内容缓存、内容分发、内容转码、内容服务

内部网元

  1. 内容中心节点
  2. 区域节点
  3. 边缘服务器节点
  4. 全局内容路由
  5. 运维管理
  6. 运营管理及适配
  7. 接口

部署架构

  1. 层级:中心层-区域层-边缘层
  2. 节点构成:缓存-SLB

CDN间组网

  1. 并联组网:源站接入多个CDN
  2. 级联组网:一个上游CDN对接多个下游CDN

关键技术

内容统一ID

  1. 统一资源定位符(URL)
    1. 协议
    2. 主机名
    3. 端口号
    4. 路径
    5. 内容ID
    6. 参数
  2. CDN内容统一ID(UniContentID)
    1. 使用二元组标识:ProviderID、ContentID
    2. ProviderID是唯一ID,需要再接入点和全网进行配置
    3. ContentID区分同一个ProviderID的不同内容,全网可重复

负载均衡

负载均衡的关键是资源使用,其最终目标是使每个服务器的资源利用状态尽量达到平衡。把握各个服务器负载情况,并动态调整流量分配是负载均衡技术的核心。

技术分类
  1. 基于DNS的负载均衡
  2. 基于客户端的负载均衡
  3. 基于OSI模型的负载均衡
    1. 基于二层设备的负载均衡,MAC地址
    2. 基于三层设备的负载均衡,VIP地址和NAT
    3. 基于四层设备的负载均衡,VIP地址和端口号,LVS
    4. 基于七层应用的负载均衡,基于虚拟URL,Nginx和Apache
算法分类
  1. 轮询:无状态按顺序轮流分配
  2. 加权轮询:无状态,使用权值轮流分配
  3. 随机:无状态,随机分配
  4. 加权随机:无状态,使用权值随机分配
  5. 最小连接:动态算法
  6. 加权最小连接:权值和连接数相结合
  7. 目标地址散列:静态映射算法,将目标IP进行HASH计算
  8. 源地址散列
  9. 基于局部性的最少连接算法:在服务器负载基本平衡的情况下将相同IP请求分配给同一台服务器
  10. 带复制的基于局部性最少连接算法:维护一组IP到一组服务器的映射

路由调度

基于DNS的用户调度
  1. 智能DNS技术
  2. 基于DNS重定向技术
基于HTTP重定向

内容缓存技术

缓存替换算法
  1. LRU算法:缓存经常使用的数据,淘汰未被使用数据,最近最少使用
  2. LFU算法:最少频率使用
  3. 基于分数因子的缓存算法
  4. 基于块等级的缓存算法
  5. 基于流行度的块等级缓存算法

流媒体技术

  1. 实时流媒体:RTSP
  2. 渐进式下载流媒体技术:HTTP Streaming
  3. 自适应流媒体技术

服务鉴权技术

常见服务鉴权
  1. 判断引用地址
  2. 使用用户合法性验证信息
  3. 使用cookie携带动态验证信息
  4. 使用POST下载
  5. 使用图形验证码
  6. 使用动态密钥
  7. 内容中插入随机数据加密
  8. 打包下载
CDN服务器鉴权
  1. 本地鉴权:门户和CDN共享密钥机制,门户提供URL增加加密后的服务鉴权信息,用户利用鉴权URL向CDN解密后检查URL确保合法性
  2. 开环加解密:固定密钥在CDN和业务系统中分别配置

发展方向

前端优化

  1. 合并HTTP请求
  2. 使用浏览器缓存
  3. 压缩组件减少通信传输
  4. 使用外部JavaScript和CSS
  5. 减少cookie传输
  6. 避免CSS表达式

动态加速

  1. 差异化缓存
    1. ESI:片段缓存
    2. CDE:增量编码
  2. 传输加速
  3. 内容生成加速

SDN调度

P2P流媒体技术

应用协议加速技术

  1. 广域网应用加速
  2. SSL应用加速
  3. HTTPS加速

智能协同技术

  1. 智能存储
  2. 智能调度
  3. 智能组网

NVMe技术

开源方案

开源软件

缓存系统

  • Squid
  • Nginx
  • ATS
  • Varnish

内容管理系统

  • HDFS
  • Ceph
  • GoogleFS
  • ElastSearch

内容路由系统

  • LVS
  • Nginx
  • Haproxy

监控系统

  • Cacti
  • Nagios
  • Zabbix

技术指标

  • 命中率
  • 吞吐量
  • 并发值
  • 响应时间
  • MDI:媒体传输质量
  • MOS:平均意见指标
  • 稳定性和可靠性

测试验证

系统测试

目的
  1. 以功能测试为主。
  2. 验证CDN的需求和功能是否得到完整实现
  3. 验证CDN在正常情况下的功能和特性
要求
  1. 了解操作系统和功能模块的设定
  2. 分析模块的设计和实施思路
  3. 对系统运行状态、边界值进行分析
  4. 进行全流程的系统功能测试,关注整个系统的整个运行结果,分析功能是否完备,是否可完整对外服务
方法
  1. Postman
  2. SoapUI
  3. DNS查询
  4. Curl

网络测试

内容测试

  1. 测试源站是否能够推送内容到内容库
  2. 测试用户请求调用模块RR中基于DNS和HTTP调度配置是否成功
  3. 测试流媒体模块配置是否成功
  4. 测试Curl发起源站资源,是否可以命中缓存

现网测试

目的是发现当前运行CDN中的性能瓶颈,以实现系统优化

  1. 模拟各地用户请求,通过不同负载下的测试结果分析评估CDN能力
  2. 测试极端水平,查找CDN模块弱点
  3. 验证稳定性和可靠性

开源套件

GoedgeCDN