CDN常见问题汇总

284 阅读4分钟

概览

  • 什么是 CDN 服务?
  • cdn回源
  • CDN 访问过程是什么?
  • CDN分布式部署,如果处理用户请求最近的资源?
  • CDN有哪些优化静态资源加载速度的机制?

什么是 CDN 服务?

CDN 是一个内容分发网络,通过对源网站资源的缓存,利用本身多台位于不同地域、不同运营商的服务器,向用户提供资源就近访问的功能。也就是说,用户的请求并不是直接发送给源网站,而是发送给 CDN 服务器,由 CDN 服务器将请求定位到最近的含有该资源的服务器上去请求。这样有利于提高网站的访问速度,同时通过这种方式也减轻了源服务器的访问压力。

image.png

CDN回源

当 cdn 缓存服务器中没有符合客户端要求的资源的时候,缓存服务器会请求上一级缓存服务器,以此类推,直到获取到。最后如果还是没有,就会回到我们自己的服务器去获取资源。 那都有哪些时候会回源呢?没有资源,资源过期,访问的资源是不缓存资源等都会导致回源。

CDN 访问过程是什么?

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的 ip 地址.
  2. LocalDns 向 ROOT DNS 查询域名的授权服务器(这里假设 LocalDns 缓存过期)
  3. ROOT DNS 将域名授权 dns 记录回应给 LocalDns
  4. LocalDns 得到域名的授权 dns 记录后,继续向域名授权 dns 查询域名的 ip 地址
  5. 域名授权 dns 查询域名记录后(一般是 CNAME ),回应给 LocalDns
  6. LocalDns 得到域名记录后,向智能调度 DNS 查询域名的 ip 地址
  7. 智能调度 DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的 CDN 节点 ip 地址回应给 LocalDns
  8. LocalDns 将得到的域名 ip 地址,回应给 用户端
  9. 用户得到域名 ip 地址后,访问站点服务器
  10. CDN 节点服务器应答请求,将内容返回给客户端(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)

image.png

CDN分布式部署,如果处理用户请求最近的资源?

  1. 输入网址
  2. 本地DNS
  3. CNAME指向的CDN专用的DNS服务器
  4. CDN全局负载均衡设备IP
  5. 区域负载均衡设备
  6. 缓存服务器的IP地址
  7. 返回给用户
  • 当用户点击网站页面上的内容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应用层:静态资源压缩,请求合并