CDN 的原理和特点
CDN 可以加快用户访问网络资源的速度和稳定性,减轻源服务器的访问压力。
实现方式:
通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN 系统能够实时地根据网络流量和各节点的连接和负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,加快访问速度。
CDN 的请求流程
在不使用 CDN 的情况下流程如下:
用户输入 url 地址
浏览器向本地 DNS 服务器请求域名解析
本地 DNS 服务器如果有缓存则直接返回结果,没有的话则通过递归的方式向整个DNS 系统(根 DNS、权威 DNS)请求解析和返回结果
浏览器得到解析结果对应的IP 地址,向对应 IP 的服务设备请求内容
服务器响应内容
使用了 CDN 后,DNS 服务器根据用户的 IP 地址,解析成相应节点的缓存服务器 IP 地址,实现就近访问。
也就是将域名解析权分发给 CDN 全局的负载均衡设备,将需要分发的内容注入 CDN。
流程如下:
用户输入 url 地址
浏览器向本地 DNS 服务器请求域名解析,DNS 服务器递归请求DNS 系统
DNS
系统会最终将域名的解析权交给CNAME
指向的CDN
专用DNS
服务器CDN 将全局
全局负载均衡设备
的 IP 地址返回给用户用户向 CDN
全局负载均衡设备
发起内容 url 的请求全局负载均衡设备
根据用户 ip 地址和请求 url,选择一台用户所属区域的负载均衡设备,向这台设备发起请求区域负载均衡设备
会向全局负载均衡设备返回一台缓存服务器的 IP 地址
根据用户 IP 地址判断哪台服务器离用户最近
根据用户请求的 URL 携带的内容名称,判断哪一台服务器有用户所需内容
查询各个服务器的负载情况,判断哪一台服务器有服务能力
全局负载均衡设备
把服务器的 IP 地址返回给用户用户向缓存服务器发起请求
缓存服务器响应用户请求,如果缓存服务器上没有用户需要的资源,那么它会向它的上一级缓存服务器请求内容,将内容拉到本地,然后将用户所需内容返回给客户端
CDN 请求的流转简图
客户端 -> DNS -> CDN 全局负载均衡设备 -> CDN 区域负载均衡设备 -> 缓存服务器
客户端 -> 缓存服务器 -> 上级缓存服务器 -> 网站源服务器
CDN 的作用
加速访问
负载均衡,解决用户访问量大造成的过载问题
实现跨运营商、跨地域的全网覆盖
基于分布式的储存技术,抵挡大部分攻击,加强网站安全性
异地备援,让网站永不宕机
节约成本,无需重复购买服务器去进行部署和同步
由 CDN 服务商提供服务,让公司专注于业务本身
CDN 的应用场景
静态站点加速
音视频、大文件加速
视频直播加速
移动应用加速(APK 分发)
CDN 更新缓存的方式
服务端:调用 cdn 服务商的刷新缓存接口
客户端:资源 url 加上 文件指纹 hash 或时间戳