概览
- 什么是 CDN 服务?
- cdn回源
- CDN 访问过程是什么?
- CDN分布式部署,如果处理用户请求最近的资源?
- CDN有哪些优化静态资源加载速度的机制?
什么是 CDN 服务?
CDN 是一个内容分发网络,通过对源网站资源的缓存,利用本身多台位于不同地域、不同运营商的服务器,向用户提供资源就近访问的功能。也就是说,用户的请求并不是直接发送给源网站,而是发送给 CDN 服务器,由 CDN 服务器将请求定位到最近的含有该资源的服务器上去请求。这样有利于提高网站的访问速度,同时通过这种方式也减轻了源服务器的访问压力。
CDN回源
当 cdn 缓存服务器中没有符合客户端要求的资源的时候,缓存服务器会请求上一级缓存服务器,以此类推,直到获取到。最后如果还是没有,就会回到我们自己的服务器去获取资源。 那都有哪些时候会回源呢?没有资源,资源过期,访问的资源是不缓存资源等都会导致回源。
CDN 访问过程是什么?
- 用户输入访问的域名,操作系统向 LocalDns 查询域名的 ip 地址.
- LocalDns 向 ROOT DNS 查询域名的授权服务器(这里假设 LocalDns 缓存过期)
- ROOT DNS 将域名授权 dns 记录回应给 LocalDns
- LocalDns 得到域名的授权 dns 记录后,继续向域名授权 dns 查询域名的 ip 地址
- 域名授权 dns 查询域名记录后(一般是 CNAME ),回应给 LocalDns
- LocalDns 得到域名记录后,向智能调度 DNS 查询域名的 ip 地址
智能调度 DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的 CDN 节点 ip 地址回应给 LocalDnsLocalDns 将得到的域名 ip 地址,回应给 用户端- 用户得到域名 ip 地址后,访问站点服务器
- CDN 节点服务器应答请求,将内容返回给客户端(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)
CDN分布式部署,如果处理用户请求最近的资源?
- 输入网址
- 本地DNS
- CNAME指向的CDN专用的DNS服务器
- CDN全局负载均衡设备IP
- 区域负载均衡设备
- 缓存服务器的IP地址
- 返回给用户
-
当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器
-
CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户
-
用户向CDN的全局负载均衡设备发起内容 URL 访问请求
-
CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求
-
基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:
- 根据用户IP地址,判断哪一台服务器距用户最近
- 根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需的内容
- 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力
-
全局负载均衡设备把服务器的IP地址返回给用户。
-
用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
CDN有哪些优化静态资源加载速度的机制?
资源调度 + 缓存策略
-
资源调度:CDN会根据用户接入网络的ip寻找距离用户最优路径的服务器。调度的方式主要有DNS调度、http 302调度、使用HTTP进行的DNS调度(多用于移动端)
-
缓存策略和数据检索:CDN服务器使用高效的算法和数据结构,快速的检索资源和更新读取缓存;
- 网络优化:从OSI七层模型进行优化,达到网络优化的目的
- L1物理层:硬件设备升级提高速度
- L2数据链路层:寻找最快的网络节点,确保Lastmile尽量短
- L3路由层:路径优化,寻找两点间最优路径
- L4传输层:协议TCP优化,保持长连接、TCP快速打开
- L7应用层:静态资源压缩,请求合并