后台系统可扩展性学习笔记(四)CDN机制原理
  JCoxMZQ9fPsN 2023年11月02日 56 0


文章目录


概念梳理

CDN(Content Delivery Network,内容分发网络)是由分布在不同地理位置的代理服务器及其数据中心组成的网络,希望在空间距离上为用户就近提供服务,以提高可用性和性能。(空间距离体现在网络传输上就是跳数(hop),从客户端到服务器所经过的跳数越多,距离越远,一般延迟也越大)
CDN 一般用来托管 Web 资源(包括文本、图像和脚本),可供下载的资源(媒体文件、软件、文档等),应用程序(电子商务、门户网站等),以及流媒体和社交媒体网站,加速这些资源的访问,例如在​​​使用Bootstrap-table创建表单,并且与flask后台进行数据交互​​​中浅尝了一下Bootstrap-table组件,但是并未下载其资源而是直接通过cdn直接获取。
性能方面,引入 CDN 的作用在于:

  • 用户收到的内容来自最近的数据中心,延迟更低,内容加载更快
  • 部分资源请求被外包给了 CDN,减少了服务器负载
    使用CDN的优势
    1、一方面缩短了内容与最终用户之间的距离,另一方面,内容不直接从服务器获取,节省了服务器的计算资源,分担了源站压力。
    2、安全性上,CDN 有助于防御 DDoS、MITM 等网络攻击:
  • DDoS(Distributed Denial of Service):通过监控分析异常流量,限制其请求频率
  • MITM(Man-In-The-Middle):从源服务器到 CDN 节点到 ISP(Internet Service Provider),全链路 HTTPS 通信

3、作为一种基础的云服务(IaaS),CDN 同样具有资源托管、按需扩展(能够应对流量高峰)等方面的优势,这降低了内容提供商的基础设施需求,让他们能够更快、更轻松地部署或扩展服务。

CDN拓扑结构

拓扑结构上,CDN 分为分散式(Scattered CDN)和整合式(Consolidated CDN)两种。
在世界各地部署尽可能多的服务器,称为分散式 CDN。早期的 CDN 用大量的中低性能服务器密集地填满选定的地理区域,这些小节点易于部署,尤其适用于低连接性(low-connectivity)的区域。
随着全球连接性的不断提高,缩减物理距离的收益逐渐减少,大量节点的维护成本也凸现出来,于是出现了整合式 CDN。
整合式 CDN 只在主要的数据中心有少量节点,但节点性能更强大,包括网络、吞吐量以及抗 DDoS 的能力,这种集中式的结构有助于提升整体响应能力,为用户和网络运营商提供更多的控制,但部署相对复杂,而且在低连接性区域效果较差。

后台系统可扩展性学习笔记(四)CDN机制原理_缓存图1 分散式


后台系统可扩展性学习笔记(四)CDN机制原理_服务器_02图2 整合式


CDN内容分发方式

CDN 按内容分发方式分为 ​​Push CDN​​​ 与 ​​Pull CDN​​​ 前者由内容服务器提前把内容“推”到 CDN 缓存起来,后者在用户访问内容时 CDN 才去“拉”目标资源并缓存起来。
Push CDN
每次内容发生变化时,都把新内容上传到 Push CDN。由于只需要上传新增的内容和发生变化的内容,用于传输的流量相对较少,但要存储的内容相对较多
因此,Push CDN 适用于小流量,或内容更新不频繁的站点,内容一次性放到 CDN,无需周期性地重新拉取。如果流量负担本就很重,或者内容改动频繁,Push CDN 会给服务器带来额外的压力。
Pull CDN
Pull CDN 无需手动上传,在用户首次访问时自动从服务器拉取新内容,并缓存起来。按需缓存节省了 CDN 存储空间,但在文件过期或在未发生变化时重新拉取也会造成不必要的流量开销

因此,Pull CDN 适用于大流量站点,只缓存最近使用(最受欢迎)的内容,一旦配置好就能按需缓存内容,维护成本较低。
关于CDN缓存的策略,请看之前的笔记:​​​DN缓存替代算法​

架构原理

后台系统可扩展性学习笔记(四)CDN机制原理_缓存_03

  • 源服务器(Origin server):提供内容(数据)源的服务器
  • 边缘服务器(Edge server):用来缓存来自源服务器的内容的服务器
  • 入网点(Point of Presence,PoP):边缘服务器所在的物理位置,一个入网点可能存在多个边缘服务器
  • CDN 反向代理(CDN Reverse Proxy):将用户请求转发到源服务器,并缓存来自源服务器的响应,用于 Pull CDN
  • 回源(Back-to-source):CDN 节点未缓存请求资源或缓存资源已到期时,回源站获取资源,返回给客户端

工作原理

以 Pull CDN 为例,特定地区的用户首次访问资源时,从源服务器取,内容响应给用户之后,资源会被缓存在该地区的边缘服务器上,如果同一地区的用户再次请求相同资源,则从边缘服务器响应:
后台系统可扩展性学习笔记(四)CDN机制原理_源服务器_04
可以通过响应头的特定字段来区分内容响应来自源服务器还是 CDN 缓存,例如:

  • X-Cache: HIT:命中缓存,响应内容来自 CDN 缓存
  • X-Cache: MISS:未命中缓存,响应内容来自源服务器

实现原理

实现上,将子域名的解析权通过CNAME 记录交给 CDN,接着通过基于地理位置临近程度的路由策略,将请求映射到距用户最近的边缘服务器。
对于 Push CDN,边缘服务器仅提供缓存服务,未命中缓存就返回 404,而对于 Pull CDN,边缘服务器提供反向代理服务,未命中缓存时回源去取。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
JCoxMZQ9fPsN
最新推荐 更多