CDN

253 阅读5分钟

前言

  • 被字节面试官问到CDN,在此做一个总结

内容

1、什么是CDN

  • CDN的全称是Content Delivery Network,即内容分发网络。
  • 内容分发:可与理解为一个全国配仓网络,解决了因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景

2、CDN的基本工作过程

  • 引入CDN之后的网络请求
    • 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器。

    • CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。

    • 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。

    • CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

    • 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:

      • 根据用户 IP 地址,判断哪一台服务器距用户最近;
      • 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;
      • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
    • 全局负载均衡设备把服务器的 IP 地址返回给用户。

    • 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

image.png

3、CDN的应用场景

  • 网站站点/应用加速

    • 动静分离
  • 文件下载业务

    • 提升回源速度,节省带宽
  • 视频直播加速

    • 及时调整服务器带宽,应对突发访问流量;结合媒体转码服务,享受高速稳定的并行转码,且任务规模无缝扩展
  • 移动应用加速

    • 提供httpDNS服务,避免DNS劫持并获得实时精确的DNS解析结果,有效缩短用户访问时间,提升用户体验。

4、CDN缓存

  • 客户端浏览器先检查是否有本地缓存是否过期,如果过期,则向CDN边缘节点发起请求

  • CDN边缘节点会检测用户请求数据的缓存是否过期,如果cdn数据没有过期,则直接响应用户请求,此时一个完成http请求结束;

  • 如果cdn数据已经过期,那么CDN还需要向源站发出回源请求,来拉取最新的数据。

image.png

5、缓存失效问题

  • 如果CDN节点上数据没有及时更新,即便用户再浏览器使用Ctrl+F5的方式使浏览器端的缓存失效,也会因为CDN边缘节点没有同步最新数据而导致用户访问异常。

  • 资源url参数加时间戳

http://www.cdn.com/static/images/test.png # 没加时间戳
http://www.cdn.com/static/images/test.png?_t=202012290910 # 加了时间戳
  • 调用cdn服务商提供的刷新缓存接口
    • 每一次服务器端的更新,自动去刷新 CDN 上的数据

6、组成

(1)逻辑组成

image.png

  • 边缘层: 直接和用户进行交互,CDN边缘层,没有命中,向区域层请求
  • 区域层: 为了减少中心节点的压力,负载一个区域的管理和控制,没有命中向中心层请求
  • 中心层:CDN 系统中负责全局性管理和控制的设备组成中心层,中心层同时保存着最多的内容副本,当边缘层设备未命中时,会向中心层请求,如果在中心层仍未命中,则需要中心层向源站回源。

(2)物理组成

1、内容缓存设备

内容缓存为CDN网络节点,位于用户接入点,是面向最终用户的内容提供设备,可缓存静态Web内容和流媒体内容,实现内容的边缘传播和存储,以便用户的就近访问。

2、 内容交换机

内容交换机处于用户接入集中点,可以均衡单点多个内容缓存设备的负载,并对内容进行缓存负载平衡及访问控制。

3、 内容路由器

内容路由器负责将用户的请求调度到适当的设备上。

内容路由通常通过负载均衡系统来实现,动态均衡各个内容缓存站点的载荷分配,为用户的请求选择最佳的访问站点,同时提高网站的可用性。

内容路由器可根据多种因素制定路由,包括站点与用户的临近度、内容的可用性、网络负载、设备状况等。

负载均衡系统是整个CDN的核心。负载均衡的准确性和效率直接决定了整个CDN的效率和性能。

4、内容管理系统

内容管理系统负责整个CDN的管理,是可选部件,作用是进行内容管理,如内容的注入和发布、内容的分发、内容的审核、内容的服务等。

参考