N. CDN

84 阅读3分钟

CDN

内容分发服务器,指一组分布在各地的服务器,可存放静态资源。 image.png

为什么要用CDN?

解决首次缓存性能问题,加速~

CDN主要功能:

  • 缓存: 资源copy到CDN服务器上;
  • 回源: CDN上找不到,回源服务器去要资源;

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

  • 负载均衡

全局负载均衡, Global Server Load Balance,CDN的大脑,当用户接入网络的时候在CDN专网中挑选出一个“最佳”的服务节点,解决了用户如何找到最合适的边缘节点的问题。

  • 缓存代理

缓存系统相当于CDN的心脏。

CDN应用

CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。

具体场景分析

借用阿里云官网的例子,来简单介绍CDN的工作原理。

假设通过CDN加速的域名为www.a.com,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:

  1. 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
  2. LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
  3. 当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。(CDN)
  4. 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。(CDN IP)
  5. LDNS获取DNS返回的解析IP地址。
  6. 用户获取解析IP地址。
  7. 用户向获取的IP地址发起对该资源的访问请求。
  • 7.1 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,请求结束。
  • 7.2 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,并返回给用户,请求结束。

从这个例子可以了解到:
(1)CDN的加速资源是跟域名绑定的。
(2)通过域名访问资源,首先是 通过DNS分查找离用户最近的CDN节点(边缘服务器)的IP
(3)通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。

拓展问题

淘宝的图片访问,有98%的流量都走了CDN缓存。只有2%会回源到源站,节省了大量的服务器资源。 但是,如果在用户访问高峰期,图片内容大批量发生变化,大量用户的访问就会穿透cdn,对源站造成巨大的压力。

解决这2个问题,对应的有2个办法: -(1)改图保持图片URL不变,可以避免商品链路的缓存失效。 -(2)在访问高峰到来之前,提前预热图片到CDN,可以避免CDN缓存失效对源站的压力。