架构设计(四):CDN

架构设计,cdn · 浏览次数 : 192

小编点评

## CDN 架构设计(四): **CDN 的架构设计包含以下主要部分:** * **前端:** 用户通过 URL 获取内容。 * **CDN 服务器:** 存储和分发静态内容,包括图像、视频、CSS 和 JavaScript 文件等。 * **原始服务器:** 提供最终的动态内容,例如 HTML 文件。 * **客户端:** 从 CDN 服务器获取并缓存静态内容。 **架构图如下:** ```mermaid graph LR A[用户请求] --> B[CDN 服务器] B --> C[静态内容缓存] C --> D[原始服务器] D --> E[CDN 服务器] E --> F[用户获取的静态内容] ``` ** CDNs 的工作流程:** 1. 用户通过 URL 获取图像等静态内容。 2. URL 包含 CDN 提供者的域名。 3. CDN 服务器从缓存中检索图像。 4. 如果缓存中没有,则从原始服务器请求并将其缓存起来。 5. 原始服务器向 CDN 服务器返回图像,包括 TTL(缓存时间)信息。 6. CDN 缓存图像并将其返回给用户。 7. 用户再次请求相同的图像,由于 TTL 过期,从 CDN 缓存中获取内容。 ** CDNs 的优势:** * 降低响应时间 * 减少网络流量 * 提高网站性能 ** CDNs 的考虑因素:** * 成本 * 缓存策略 * 故障处理 ** CDNs 的成本因素:** * 与 CDN 供应商的付费计费 * 存储空间 * 数据传输 * 缓存维护 ** CDNs 的策略:** * 将不经常使用的内容从 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

与架构设计(四):CDN相似的内容:

架构设计(四):CDN

架构设计(四):CDN 作者:Grey 原文地址: 博客园:架构设计(四):CDN CSDN:架构设计(四):CDN CDN 全称 Content delivery network ,即:内容分发网络。 CDN 是一个地理上分散的服务器网络,主要用于提供静态内容。如:图片、视频、CSS、JavaSc

直播CDN调度技术关键挑战与架构设计

作者:胡济麟 1、背景介绍 1.1 直播业务特点 互联网视频直播是一种消息媒介形态,提供时产时消的内容,经过多年,已经发展出秀场、游戏、电商、体育等多种业务形态。主要特点是:内容实时产生实时消费,对时效性要求更高;流媒体内容占用带宽大,对网络质量要求更苛刻;一人生产、多人消费,带宽规模大。直播 CD

文心一言 VS 讯飞星火 VS chatgpt (106)-- 算法导论10.1 4题

四、用go语言,重写 ENQUEUE 和 DEQUEUE 的代码,使之能处理队列的下溢和上溢。 文心一言: 在 Go 语言中,我们可以使用切片来实现队列。下面是如何实现 ENQUEUE 和 DEQUEUE 操作,同时处理队列的下溢和上溢的情况: package main import "fmt" t

[转帖]国产服务器CPU架构与行业研究报告(节选四)

https://zhuanlan.zhihu.com/p/527034350 ​ 目录 收起 4 服务器CPU演进趋势 4.1 CPU优化的传统方式 4.1.1 工艺制程提升 4.1.2 并行度(核数)提升 4.1.3 缓存提升 4.1.4 专用指令集 4.2 CPU提升性能的新趋势 4.2.1 H

文件系统(四):FAT32文件系统实现原理

FAT32是从FAT12、FAT16发展而来,目前主要应用在移动存储设备中,比如SD卡、TF卡。隐藏的FAT文件系统现在也有被大量使用在UEFI启动分区中。 为使文章简单易读,下面内容特意隐藏了很多实现细节,关于分区、格式化等相关的内容,可以查看之前的文章: 文件系统(一):存储介质、原理与架构 文

高可用系列文章之四 - 总结

前文链接 高可用系列文章之一 - 概述 - 东风微鸣技术博客 (ewhisper.cn) 高可用系列文章之二 - 传统分层架构技术方案 - 东风微鸣技术博客 (ewhisper.cn) 高可用系列文章之三 - NGINX 高可用实施方案 - 东风微鸣技术博客 (ewhisper.cn) 六 总结 高

[转帖]玄铁C910微架构学习(2)——指令高速缓存

https://www.zhihu.com/people/kent-35-40/posts ​ 目录 收起 一、指令提取单元简介 二、指令高速缓存源码的文件结构 三、指令高速缓存的组成 data_array tag_array predecd_array 四、指令高速缓存的回填 五、扩展的指令缓存操

高可用系列文章之三 - NGINX 高可用实施方案

前文链接 高可用系列文章之一 - 概述 - 东风微鸣技术博客 (ewhisper.cn) 高可用系列文章之二 - 传统分层架构技术方案 - 东风微鸣技术博客 (ewhisper.cn) 四 NGINX 高可用实施方案 高可用的实施, 主要步骤概述如下: NGINX 的安装及基础配置 负载均衡层高可用

数字电路中的等效电路和FPGA中的等效电路

欢迎各位朋友关注“郝旭帅电子设计团队”,本微信公众号会定时更新相关技术类资料、软件等等,希望各位朋友都能在本微信公众号获得一些自己想要的“东西”。 本篇内容主要介绍数字电路中的等效电路(注意:是数字电路,不是模拟电路)。 上述为利用三个二输入与门组成的两种不同结构的四输入与门。 无论是哪一种架构,都

架构设计(一):从单服务器模式到负载均衡设计

# 架构设计(一):从单服务器模式到负载均衡设计 作者:[Grey](https://www.cnblogs.com/greyzeng/) 原文地址: [博客园:架构设计(一):从单服务器模式到负载均衡设计](https://www.cnblogs.com/greyzeng/p/16980532.h