CDN技术简介

一、概述

1.问题背景

不同地理区域的用户访问同一个网站时会产生高延迟,导致用户的访问速度较慢,对个别服务器造成的

压力也比较大,网站的稳定性和安全性也不是很高,CDN的出现就是用来解决这一问题的

2.什么是CDN

CDN即Content Delivery Network,内容分发网络,具体内容为将源站内容发布到最接近用户的边缘节点,

使用户可就取得所需内容,提高用户访问的响应速度和成功率。解决了因分布、带宽、服务器能力带来的访

问延迟高的问题,提供了一系列加速解决方案

3.CDN的应用场景

  • 网站服务的客户群体从独立的区域扩张到了全国范围,而自身服务器不足以覆盖全网用户,导致部分地区用

户访问网站速度变慢,到达率不高

  • 网站已经实现了静动态资源分离,且静态资源服务器的能力已经达到极限,需要增加服务器硬件设才能够

解决问题的

  • 网站频繁遭到DDOS攻击,CC攻击,DNS劫持,导致用户体验差,网络阻塞,无法提供正常服务 当用户

无访问某一个节点时,CDN会给用户提供更多的节点以供访问

  • 当网站用户跨多个ISP(电信、联通、移动、铁通、长城),而自身的服务器只在其中一个机房的减少因

运营商通道阻塞而导致的访问失败

二、CDN的工作原理

1.CDN的工作过程

  • 步骤一:将内容推送到边缘的节点上,以此产生一个副本,(WEB原始服务器推送到各CDN镜像服务器)

原始服务器上的内容拷贝到其他镜像服务器上

  • 步骤二:引导用户就近进行访问(DNS解析的原理)

2.CDN的加速过程(智能DNS解析)

  1. 用户在浏览器中输入域名后,请求DNS服务器解析该域名

  2. DNS服务器并不能直接解析到该域名所对应的IP地址,而是将该请求发送给智能DNS服务器

(网站的服务商需要将原来的解析地址转换到智能DNS服务器的IP)

  1. 智能DNS服务器(GSLB调度系统)判断用户访问离某区域最近,就返回该区域服务器的IP地址

(智能DNS服务器是CDN加速服务商所提供的服务器)

  1. 用户拿到IP地址后即可访问该区域的服务器

1yInij.png

3.CDN底层技术的实现

(1)路由转发技术

路由转发可以看做是负载均衡技术的一种

本地负载均衡是指对本地的服务器群做负载均衡,具体实现上主要有两种方法,一个是通过ping来进

行主动探测(简单粗暴)、二是通过协议的交互来进行检测(内容非常的具体)

全局负载均衡设备:对分别放置在不同的地理位置,有不同网络结构的服务器集群间做负载均衡实现

方式:一是根据IP地址库投票匹配、二,CDN主动探测目标的最近距离,智能DNS向各个节点发送探测

指令,CDN就是负载均衡分类中的全局负载均衡

1yTXLV.png

(2)内容分发技术

主动推送(PUSH)和被动获取(PULL)

1yIuJs.png

(3)内容存储技术

主流的存储结构主要有以下三种,其中最为常见使用的是NAS

  • 直连式存储(DAS,Direct Attached Storage)

  • 存储区域网络(SAN: Storage Area Network)

  • 网络接入存储(NAS: Network Attached Storage)

1yT854.png

(4)内容管理技术

主要分为资源管理系统和安全管理系统的内容

1yIlQ0.png

1yIeoQ.png

三、CDN的分类

1.按内容区分

  • 网页加速

CDN服务器主要是加速静态资源的内容,静态资源(HTML,CSS,图片,JS)与数据库是没有太大关系

将静态资源拷贝到CDN边缘缓存服务器,用户即可在该服务器上获取静态资源,提高访问速度

  • 流媒体加速

CDN对流媒体文件的加速恰恰是加速这些切片后的视频文件(这些文件经过切片后不会产生任何变化)

分片处理的过程如下:

1yIVeS.png

  • 大文件加速

这些文件通常是固定不变的,非常适合放在CDN的服务器上

1yIAL8.png

  • 应用协议加速(下载工具)

用户直接从目标文件存储器下载数据时通常会受到目标服务器网络带宽的限制 而使用BT下载工具后,

该工具可能已将待下载的文件下载到各地的代理服务器中,用户只需要直接从代理服务器下载即可,而

代理服务器的带宽往往比原始服务器的带宽大很多;当代理服务器中找不到目标文件时,使用多台服务

器会同时从文件存储服务器并同时传递给用户

1yIKWn.png

2.按推送类型区分

  • 主动获取: WEB原始服务器将内容分发到各服务器节点,然后智能DNS服务器引导至就近的节点

  • 被动获取:智能DNS服务器引导到就近节点后,节点发现本地没有对应的数据,则会向原站请求该数据原

站将数据返回给镜像服务器,镜像服务器再讲数据返回给对应的用户第一个用户访问时是没有

任何加速的效果的,但是后面的用户就可以感受到

1yIZdg.png