CDN介绍

122 阅读5分钟

今天,我们将讨论内容交付网络(CDN)。CDN是一个由边缘服务器组成的分布式网络,便于向全球各地的用户交付网络内容。

传统上,大多数公司依靠单一的起源服务器,并横向扩展以支持其用户群。

这样的结构会给远离起源服务器的用户造成额外的数据包损失、延迟和抖动。如果需要多次往返以生成完整的网络内容,这可能成为一个大问题。此外,加载时间的增加往往会赶走客户,导致转换率降低。

内容交付网络

CDN架构的概念是使内容更接近用户,无论他们在哪里。

CDN的基本概念是,多个物理节点分布在世界各地,向最近的用户提供高带宽的缓存内容。这些节点被称为存在点(POP)。对于动态内容,大多数CDN供应商利用某种形式的网络和路由优化,将流量自动重新分配到最近的POP。

此外,CDN供应商还利用某种形式的图像/视频优化或压缩来提供大量的媒体相关内容。这就是为什么你上传至YouTube的视频最初默认为360p的质量。处理和分发内容到所有边缘服务器需要时间。然后,根据用户的位置和带宽,将其缓存为服务给用户。高质量的视频通常需要几个小时才能以相同的分辨率提供给用户。

使用CDN的主要目的是为了:

  • 减少加载时间和延时
  • 防止服务器过载,确保更好的可靠性
  • 提高安全性,缓解任何DDoS攻击

减少负载时间和延时

CDN架构不是直接为用户提供服务,而是将内容分配给位于不同地方的多个边缘服务器。然后,根据用户的位置将内容提供给用户。这大大减少了加载时间和延迟,因为内容来自最近的服务器。

防止服务器的过载

边缘服务器能够在向用户提供相同的内容之前进行缓存。当用户请求特定的网络内容时,每个边缘服务器在向原点服务器请求之前,会检查他们在边缘是否有该文件。

该文件通常在边缘服务器中保持缓存状态,直到底层的生存时间(TTL)过期。通常的过期时间是七天左右。

边缘服务器一次又一次地重复使用同一缓存,为请求同一文件的多个用户提供服务。这大大减少了源服务器的负载,提供了更好的用户体验。

更好的安全性

由于用户访问最近的边缘服务器而不是原点服务器,每个单独的边缘服务器作为一个层,可以减轻 DDoS攻击。这就保护了原生服务器不被攻陷或被恶意的人访问。

CDN停运

然而,CDN供应商也很容易出现中断和停电的情况。例如,2021年6月8日发生了大规模的故障,许多主要的网络和在线服务都被中断了。受影响最显著的公司是

  • Hulu
  • CNN
  • 纽约时报
  • 监护人
  • Twitch
  • Reddit
  • 焦点网
  • Vimeo
  • 淘宝网
  • HBO Max

一项 调查显示,问题出在CDN供应商Fastly身上。他们在5月12日应用了一个软件更新,其中包含了一个可能由他们的客户在配置其服务时触发的错误。因此,他们的大部分网络在当天返回错误,导致整个网络服务的巨大中断。幸运的是,这个问题在一小时后被修复,所有的依赖服务都恢复了。

部署策略

数据版本控制

拥有适当的数据版本控制是至关重要的。它可以确保在出现编码问题导致应用程序功能出现重大问题时,你可以轻松地回滚到之前的工作状态。你可能需要为新旧版本使用不同的CDN实例,以防止出现问题,如一个CDN实例从其缓存中提供旧内容。

捆绑和简化

你可以通过捆绑和最小化减少你的内容的文件大小来减少加载时间。这通常用于CSS和JavaScript等文件,以去除不必要的字符,而不改变其基本功能。

文件压缩

除此之外,另一个选择是在向CDN供应商或客户发送文件之前对其进行压缩。由于文件大小的减少,这大大提高了性能。确保不要过度使用它,一些CDN供应商不鼓励对压缩格式的文件,如MP3、MP4、ZIP或JPG使用这种技术。

一些CDN供应商通过缓存只支持静态内容,而大型CDN供应商,如Azure,可以同时处理静态内容(S3存储)和动态内容(S1 Verizon,Akamai S2)。说到这里,到目前为止还不支持与Azure数据湖的整合。

  • 存储和数据湖是两个不同的概念。存储是指云上的文件系统服务,存储结构化和有用的数据。你可以在云上上传和保存你的数据,而不是在本地存储。然后,你可以很容易地在你的终端应用上为它服务。

  • A 数据湖 是一个集中的存储库,以任何规模存储所有形式的数据。这些数据既可以是结构化的,也可以是非结构化的。你可以把它看作是一个原始数据的倾销地。然后,你可以根据你的需要访问和处理这些数据。它主要用于大数据、实时分析和存储机器学习训练数据。

总结

让我们回顾一下你今天所学到的东西。

本文首先简要介绍了CDN和通过传统方法提供内容时面临的问题。然后,它转向了CDN背后的基本概念和它所提供的优势。

最后,它讨论了CDN供应商如何不受干扰,以及不同供应商在提供静态和动态内容时的差异。