面试:讲一下你理解的CDN?

1,238 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

No matter what you do, or what type of content you consume, chances are that you’ll find CDNs behind every character of text, every image pixel and every movie frame that gets delivered to your PC and mobile browser

无论您做什么,或消费什么类型的内容,您都有可能在每个文本字符、每个图像像素和每个电影帧背后找到 CDN,这些内容被传送到您的 PC 和移动浏览器。

什么是 CDN

A content delivery network, or content distribution network (CDN), is a geographically distributed network of proxy servers and their data centers. The goal is to provide high availability and performance by distributing the service spatially relative to end users. CDNs came into existence in the late 1990s as a means for alleviating the performance bottlenecks of the Internet[1][2] as the Internet was starting to become a mission-critical medium for people and enterprises. Since then, CDNs have grown to serve a large portion of the Internet content today, including web objects (text, graphics and scripts), downloadable objects (media files, software, documents), applications (e-commerce, portals), live streaming media, on-demand streaming media, and social media site

内容交付网络或内容分发网络 (CDN) 是代理服务器及其数据中心的地理分布网络。目标是通过相对于最终用户在空间上分配服务来提供高可用性和性能。 CDN 出现在 1990 年代后期,作为缓解互联网性能瓶颈的一种手段,因为互联网开始成为个人和企业的关键任务媒介。从那时起,CDN 已经发展到为今天的大部分 Internet 内容提供服务,包括 Web 对象(文本、图形和脚本)、可下载对象(媒体文件、软件、文档)、应用程序(电子商务、门户)、直播媒体、点播流媒体和社交媒体网站.

image.png (图片来自于网络)

基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。

CDN 可以理解为一个普通缓存,如代理缓存或者说边缘缓存,即便不关心用户的具体地理位置,也应该考虑使用 cdn 的代理缓存来提高用户体验。

image.png (图片来自于网络)

CDN 的作用

A CDN’s mission is to virtually shorten that physical distance, the goal being to improve site rendering speed and performance.

CDN 的任务是实际上缩短物理距离,目标是提高站点渲染速度和性能。

CDN就可以理解为分布在每个县城的火车票代售点,用户在浏览网站的时候,CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求。

从本质上讲,CDN 通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验

CDN 的优缺点

优点

  1. CDN 节点解决了 跨运营商跨地域 访问的问题,访问延时大大降低;
  2. 大部分请求在 CDN 边缘节点完成,CDN 起到了分流作用,减轻了源站的负载。

缺点

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

CDN 缓存策略

CDN 边缘节点的缓存策略遵循 http 标准协议,通过 http 响应头中的Cache-control: max-age 的字段来设置 CDN 边缘节点数据缓存时间。

当客户端向 CDN 节点请求数据时,CDN 节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN 节点就会向源站发出回源请求,从源站拉取最新数据,更新本地缓存,并将最新数据返回给客户端。

HTTP请求流程:

  1. 用户在浏览器输入要访问的网站域名,向本地 DNS 发起域名解析请求。
  2. 域名解析的请求被发往网站授权 DNS 服务器。
  3. 网站 DNS 服务器解析发现域名已经 CNAME 到了 www.example.com.c.cdnhwc1.com。
  4. 请求被指向 CDN 服务。
  5. CDN 对域名进行智能解析,将响应速度最快的 CDN 节点 IP 地址返回给本地 DNS。
  6. 取响应速度最快的 CDN 节点 IP 地址。
  7. 浏览器在得到速度最快节点的 IP 地址以后,向 CDN 节点发出访问请求。

此时判断是否有缓存,缓存是否有效。如果有效

  1. CDN 节点将用户所需资源返回给用户。

无缓存或者缓存失效

  1. CDN 节点回源站拉取用户所需资源。
  2. 将回源拉取的资源缓存至节点。
  3. 将用户所需资源返回给用户。

结语

如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。

文章如有错误之处,希望在评论区指正🙏🙏。

附:

what-is-cdn-how-it-works

CDN的加速原理是什么?