CDN
# CDN
# 介绍一下CDN
CDN
(Content Delivery Network
内容分发网络)是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户
典型的CDN
系统分为:
分发服务系统: 最基本的工作单元就是
Cache
设备,cache
(边缘cache
)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用户。同时cache
还负责与源站点进行内容同步,把更新的内容以及本地没有的内容从源站点获取并保存在本地。Cache
设备的数量、规模、总服务能力是衡量一个CDN
系统服务能力的最基本的指标负载均衡系统:主要功能是负责对所有发起服务请求的用户进行访问调度,确定提供给用户的最终实际访问地址。两级调度体系分为全局负载均衡(
GSLB
)和本地负载均衡(SLB
)。全局负载均衡主要根据用户就近性原则,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache
的物理位置。本地负载均衡主要负责节点内部的设备负载均衡运营管理系统: 运营管理系统分为运营管理和网络管理子系统,负责处理业务层面的与外界系统交互所必须的收集、整理、交付工作,包含客户管理、产品管理、计费管理、统计分析等功能。
CDN
的作用: 用来托管Web
资源(包括文本、图片和脚本),可供下载的资源(媒体文件、软件、文档等)应用程序,使用cdn
来加速这些资源等访问
- 在性能方面:
- 用户收到的内容来自最近的数据中心,延迟更低,内容加载更快
- 部分资源请求分配给了
CDN
,减少了服务器的负载
- 在安全方面,有助于防御
DDos MITM
等网络攻击- 针对
DDoS
,通过监控分析异常流量,限制其请求频率 - 针对
MITM
,从源服务器到CDN
节点到ISP(Internet Service Provider)
,全链路HTTPS
通信
- 针对
负载均衡
多台服务器共同协作,不让其中某一台或几台超额工作,发挥服务器的最大作用
http
重定向负载均衡:调度者根据策略选择服务器以302
响应请求,缺点只有第一次有效果,后续操作维持在该服务器dns
负载均衡:解析域名时,访问多个ip
服务器中的一个(可监控性较弱)- 反向代理负载均衡:访问统一的服务器,由服务器进行调度访问实际的某个服务器,对统一的服务器要求大,性能受到 服务器群的数量
# CDN
工作原理
CDN
的原理: CDN
和DNS
有着密不可分的联系
DNS
的解析域名的过程是在浏览器输入 www.crucials.cn
的解析过程如下:
检查浏览器缓存
检查操作系统缓存,常见的如
hosts
文件检查路由器缓存
如果前几步都没没找到,会向
ISP
(网络服务提供商)的LDNS
服务器查询如果
LDNS
器没找到,会向根域名服务器(Root Server)
请求解析,分为以下几步:
根服务器返回顶级域名(
TLD
)服务器如.com
,.cn
,.org
等的地址,该例子中会返回.cn
的地址接着向顶级域名服务器发送请求,然后会返回次级域名(
SLD
)服务器的地址,本例子会返回.crucials
的地址接着向次级域名服务器发送请求,然后会返回通过域名查询到的目标
IP
,本例子会返回www.crucials.cn
的地址Local DNS Server
会缓存结果,并返回给用户,缓存在系统中
CDN
的工作原理:
用户未使用
CDN
缓存资源的过程:浏览器通过
DNS
对域名进行解析(就是上面的DNS
解析过程),依次得到此域名对应的IP
地址浏览器根据得到的
IP
地址,向域名的服务主机发送数据请求服务器向浏览器返回响应数据
用户使用
CDN
缓存资源的过程:对于点击的数据的
URL
,经过本地DNS
系统的解析,发现该URL
对应的是一个CDN
专用的DNS
服务器,DNS
系统就会将域名解析权交给CNAME
指向的CDN
专用的DNS
服务器。CDN
专用DNS
服务器将CDN
的全局负载均衡设备IP
地址 返回给用户用户向
CDN
的全局负载均衡设备发起数据请求CDN
的全局负载均衡设备根据用户的IP
地址,以及用户请求的内容URL
,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求区域负载均衡设备选择一台合适的缓存服务器来提供服务,将该缓存服务器的
IP
地址返回给全局负载均衡设备全局负载均衡设备把服务器的
IP
地址返回给用户用户向该缓存服务器发起请求,缓存服务器响应用户的请求,将用户所需内容发送至用户终端。
如果缓存服务器没有用户想要的内容,那么缓存服务器就会向它的上一级缓存服务器请求内容,以此类推,直到获取到需要的资源。最后如果还是没有,就会回到自己的服务器去获取资源
补充说明
CNAME
(意为:别名):在域名解析中,CNAME
记录用于将一个域名(同名)映射到另一个域名(真实名称),域名解析服务器遇到CNAME
记录会以映射到的目标重新开始查询,也就是充当一个中转站的意思
# CDN
使用场景
使用第三方的
CDN
服务:如果想要开源一些项目,可以使用第三方的CDN
服务使用
CDN
进行静态资源的缓存:将自己网站的静态资源放在CDN
上,比如js
、css
、图片等。可以将整个项目放在CDN
上,完成一键部署。直播传送:直播本质上是使用流媒体进行传送,
CDN
也是支持流媒体传送的,所以直播完全可以使用CDN
来提高访问速度。CDN
在处理流媒体的时候与处理普通静态文件有所不同,普通文件如果在边缘节点没有找到的话,就会去上一层接着寻找,但是流媒体本身数据量就非常大,如果使用回源的方式,必然会带来性能问题,所以流媒体一般采用的都是主动推送的方式来进行
# CDN
加速是对网站所在服务器加速,还是对其域名加速
CDN
是只对网站的某一个具体的域名加速。如果同一个网站有多个域名,则访客访问加入CDN
的域名获得加速效果,访问未加入CDN
的域名,或者直接访问IP
地址,则无法获得CDN
效果
# 能不能让CDN
不缓存某些即时性要求很高的网页和图片
只需要使用动态页面,asp
,php
,jsp
等动态技术做成的页面不被CDN
缓存,无需每次都要刷新。或者采用一个网站两个域名,一个启用CDN
,另外一个域名不用CDN
,对即时性要求高的页面和图片放在不用CDN
的域名下
# CDN
和镜像站点比较有何优势
CDN
对网站的访客完全透明,不需要访客手动选择要访问的镜像站点,保证了网站对访客的友好性。CDN
对每个节点都有可用性检查,不合格的节点会第一时间剔出,从而保证了极高的可用率,而镜像站点无法实现这一点。CDN
部署简单,对原站基本不做任何改动即可生效
# CDN
和双线机房相比有何优势
常见的双线机房只能解决网通和电信互相访问慢的问题,其它ISP
(譬如教育网,移动网,铁通)互通的问题还是没得到解决。而CDN
是访问者就近取数据,而CDN
的节点遍布各ISP
,从而保证了网站到任意ISP
的访问速度。另外CDN
因为其流量分流到各节点的原理,天然获得抵抗网络攻击的能力