1分钟了解CDN内容分发技术

2020-04-26 15:00:41 浏览数 (1)

1分钟了解CDN内容分发技术

这是一个缓存为王的互联网世界

缓存为王

互联网从引入国内开始到现在,一眨眼已经30余年的时间了。这期间互联网的内容形态已经有万千变化。

从最开始的 hao123,yahoo, souhu 等静态新闻类网站,到现在图片、视频、直播、游戏等内容和形式富文本交互式的内容生态,已然百花齐放,即内容从静态为主,转向动态为主

优秀产品全球化,光纤入户,手机游戏对战等等,这些10年前起来还是奢望的技术,现在已经普及众生。即产品全球化,传输速率和质量受到新挑战。

以淘宝为例,为了能承载中国近14亿人,淘宝可谓淋漓尽致的发挥CDN的功用:

  • 500T的原图 500T的缩略图
  • 700亿左右的缓存图片
  • 100余CDN节点
  • 峰值流量TB级别

而这已经是几年的数据。

淘宝CDN应用

与此同行,超大流量即对电信、联通等运营商骨干网提出了新的要求,如何将产品第一时间送达终端用户,各家想尽了办法,CDN功不可没。

用户访问流程

  • 网页加速
  • 流媒体加速
  • 文件传输加速
  • 应用协议加速

CDN在这些领域时至今日,依然有着不可撼动的地位。这一些都缘由用户对于网速的追求,有数据表示:

响应时间

用户感觉

0-1s

很快

1-2s

一点点慢

2-4s

机器在工作

4-6s

先开点别的吧

>6s

网站坏了吧

CDN对我们生活有如此大影响,作为IT,了解其工作原理还有很有必要的。我们会从如下三方面着手了解。

  • CDN发展史及工作方式
  • CDN的关键技术
  • 加速新技术

1、CDN发展史及工作方式

Content Distribute Network:内容分发网络,又名Content Delivery Network(内容交付网络),旨在解决第一公里的带宽问题。

服务成功率、建连时间、时延、视听播放卡顿度、图像清晰度的好坏决定互联网应用的生死。

  • CDN的用户终端访问数据走向
代码语言:javascript复制
用户 -> 互联网 -> 服务商
  • CDN的用户终端访问数据走向
代码语言:javascript复制
用户 -> 互联网 -> CDN 或 服务商

1.1 CDN的工作原理

CDN工作原理

CDN的最终目标是尽可能将数据放离用户尽可能近的地方。 了解CDN的工作原理有助于理解其如何实现该想法:

  • DNS解析地址为CNAME指向的CDN专用dns服务器
  • CDN返回全局负载均衡设备IP
  • 用户向全局负载均衡设备发起请求
  • 全局负载均衡设备根据用户IP地址,以及用户请求内容,选择用户所属区域的负载均衡设备,告诉用户向这台设备发起请求
  • 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务。选择依据包括:用户IP,用户距离,请求内容,服务器负载情况
  • 全局负载均衡设备把服务器的IP地址返回给用户
  • 用户向缓存服务器发起请求,缓存服务器返回用户请求内容。如果缓存用品没有请求内容,则依次向上级缓存服务器追溯,直至将网站的源服务器拉到本地。

凡对互联网有一定基础,理解起来都不是难事,但事实上,CDN的资源调度和实施还是存在一定实现复杂度。看了CDN逻辑框架及相关服务接口,会有所体会。

CDN逻辑框架及相关服务接口

1.3 CDN可承载的内容

静态内容是早期 CDN 主要承载的内容,以文字、图片、动画等内容为主。随着互联网不断演化,近年来,流媒体、视频、SSL认证、HTTPS加速等也已经成为CDN的业务范畴。

  • 网页加速
  • 流媒体加速
  • 文件传输加速
  • 应用协议加速

不同内容的加速方式也有差别:

流媒体CDN与web

应用技术也多种多样,主要还是以开源技术为主:

  • squid
  • quagga
  • lvs
  • keepalived
  • nginx
  • lua

1.4 内容接入方式

  • 内容存储接入 源站发布内容前,提前把内容注入到CDN。业务系统会期望用户访问的请求指向CDN,引导用户终端直接向CDN发起请求,无需从源站获取内容,提升终端用户体验
  • 内容预注入 方式和内容存储接入类似,但不进行内容长久存储,只会把热点内容临时缓存。根据热点智能增删
  • 实时回源 事先不做缓存,当用户发起请求时,实时从源站获取,随即分发至站点。终端用户的再次请求会将提速

1.5 用户请求调度

  • 全局 根据用户所在地理位置不同,在各节点之间分析决策,最终将用户请求转移至整个网络中距离用户最近的节点。主要基于DNS调度和基于应用层重定向两种方式
  • 本地 局限在一定地理范围内,更注重一定区域内服务器健康和负载状况。将请求分发给状态最佳,最轻闲的服务器,充分利用现有设备,有效解决用户请求过多引发系统过载的问题。

1.6 内容分发

  • PUSH 一种智能主动的分发策略:由CDN管理系统主动发起。将内容从源站或中心内容库主动分发至边缘节点。主要协议有HTTP,FTP等。
  • PULL 被动策略,根据用户请求,边缘CDN节点向中心节点或源站发起内容请求的过程。
  • 混合

2、CDN的关键技术

CDN的关键技术我们主要关注:

  • 用户统一ID
  • 用户请求调度规则
  • 内容缓存技术
  • 服务鉴权技术

2.1 用户统一ID

针对不同业务需要有唯一ID标识。在CDN总体架构设计之初就需考虑到. 有如下两种思路:

  • 在内容进入CDN之前按规律统一编码
  • 不对内容编码,而是针对每个接入的业务编码

如果出现重复ID,CDN会把错误的内容发给用户

2.2 用户请求调度规则

  • 智能DNS调度 普通DNS只解析IP地址,而智能DNS系统会判断用户源IP地址,分配最优最近资源的IP地址给用户。
  • 基于DNS重定向调度 将域名解析到CDN友商,由友商根据自己的资源情况完成用户的最优资源调度
  • 基于HTTP重定向 301,302,meta fresh。相比DNS智能解析,更精准、更精细、更了解用户。但也HTTP重定向需多一步解析,链路长,GLSB可能会成为瓶颈,核心设备承压大等问题

2.3 内容缓存算法

  • Least Frequrently Used: 最少频率使用
  • Low Inter-Reference Recency Set
  • Least Recently Used: 最近最少使用
  • Leaste Recently Frequently Used
  • Frequently Based Replacement

2.4 服务鉴权技术

对于友商蹭流量的行为给予严厉谴责,技术上严厉打击,常用打击方式:

  • 判断引用地址
  • 用户身体验证
  • 使用cookies携带验证信息
  • 使用POST
  • 使用验证码
  • 使用动态密钥
  • 在内容中随机插入数据加密
  • 打包下载

3、加速新技术

互联网不断成熟的过程,对行业也做了精细化分工。绝大多数应用均分为前后端,其中前端最接近用户。作为接近用户的第一层,FEO的优化显得尤为重要。

3.1 前端优化技术FEO(Front-End Optimization)

  • 合并HTTP请求
  • 使用浏览器缓存 cache-control , expires控制
  • 压缩组件减少通信传输
  • 使用外部JavaScript和CSS HTML文档通常不会被配置为可缓存。外部的可以缓存到本地。
  • 减少COOKIES传输
  • 避免CSS表达式

3.2 动态加速技术

动态内容CDN不会缓存,但请求如果还到CDN再回源,会有传输延迟和数据传输失败的问题。

动态加速技术解决方案:

  • 差异化缓存
  • 传输加速技术(减少源到用户的时延和带宽)
  • 动态内容加速技术(提高服务端生成动态网页的性能),主要有预取技术DUP(Data Update Propagation)和DC2CP(Dynamic Content Caching Protocol)技术

加速技术主要有:

  • ESI片段缓存
  • CDE增量编码

3.2 传输加速技术

利用CDN的站点多的优势,帮助终端用户利用CDN链接,找到触达源站的最优路径。

3.3 SDN调度技术

控制平面和数据转发平面分离,不再耦合在一起。优势:

  • 整个网络状态均由SDN控制器收集
  • 网络管理控制通过软件编程实现,灵活且无需关注底层实现细节。

3.4 P2P流媒体技术

借用终端用户宽带,效果待估量。用户隐私泄密,安全隐患,带宽被占满,消耗较多,用户感知较大会刻意关闭软件会失效等问题,都被一一验证。

3.5 应用协议加速技术

  • 广域网加速
  • SSL应用加速 硬件加解密
  • HTTPS加速 拆分HTTP请求

0 人点赞