Loading

架构设计(四):CDN

架构设计(四):CDN

作者:Grey

原文地址:

博客园:架构设计(四):CDN

CSDN:架构设计(四):CDN

CDN 全称 Content delivery network ,即:内容分发网络。

CDN 是一个地理上分散的服务器网络,主要用于提供静态内容。如:图片、视频、CSS、JavaScript 文件等。

还有一种是动态内容缓存,它可以实现基于请求路径、查询字符串、cookies和请求头的HTML页面的缓存。参考Amazon CloudFront 动态内容分发。本文主要介绍 CDN 技术

当用户访问一个网站时,离用户最近的 CDN 服务器将提供静态内容。也就是说,用户离 CDN 服务器越远,网站的加载速度就越慢。架构如下

img

整个工作流程如下

  • 客户端通过使用一个图像 URL 来获取图片信息。该 URL 的域是由 CDN 提供者提供的。URL 类似如下的形式:https://mysite.cloudfront.net/logo.jpg

  • 如果 CDN 服务器的缓存中没有这张图片,则 CDN 服务器就会从原始服务器中请求该文件。

    • 原始服务器向 CDN 服务器返回该图片,其中包括可选的 HTTP 头 TTL(Time-to-Live),描述图像被缓存多长时间。

    • CDN 缓存图像并将其返回给用户A。图像一直缓存在CDN中,直到 TTL 过期。

  • 另外一个客户端发送请求以获得相同的图像。

  • 只要 TTL 没有过期,图像就会从 CDN 缓存中返回。

使用 CDN 要考虑的因素

  • 成本。CDN 是由第三方供应商运行的,要为进出 CDN 的数据传输付费。缓存不经常使用的内容不会带来明显的好处,还会增加成本,所以,你应该考虑将它们从 CDN 中移出。

  • 设置一个适当的缓存过期时间。对于时间敏感的内容,设置一个缓存过期时间时间是很重要的。缓存过期时间既不能太长也不能太短。如果它是太长,内容可能不再是最新的。如果它太短,它可能会导致重复从原始服务器重新加载内容到 CDN。

  • 考虑你的网站或应用程序如何应对 CDN 故障。如果 CDN 暂时中断,客户应该能够检测到这个问题并从原始服务器请求资源。

  • 如果 CDN 的内容无效了,应该要可以在一个文件过期前从 CDN 中把无效内容删除,有两种删除方式

    • 第一种方式,是使用 CDN 供应商提供的 API 使 CDN 对象失效。
    • 使用版本管理来提供对象的不同版本。可以在 URL 中添加一个参数,比如说版本号,image.png?v=2,当版本号不同的时候,获取的内容也就不一样了。

参考资料

System Design Interview

posted @ 2022-12-16 19:50  Grey Zeng  阅读(222)  评论(0编辑  收藏  举报