今天,我们将讨论内容交付网络(CDN)。CDN是一个由边缘服务器组成的分布式网络,便于向全球各地的用户交付网络内容。
传统上,大多数公司依靠单一的起源服务器,并横向扩展以支持其用户群。
这样的结构会给远离起源服务器的用户造成额外的数据包损失、延迟和抖动。如果需要多次往返以生成完整的网络内容,这可能成为一个大问题。此外,加载时间的增加往往会赶走客户,导致转换率降低。
内容交付网络
CDN架构的概念是使内容更接近用户,无论他们在哪里。
CDN的基本概念是,多个物理节点分布在世界各地,向最近的用户提供高带宽的缓存内容。这些节点被称为存在点(POP)。对于动态内容,大多数CDN供应商利用某种形式的网络和路由优化,将流量自动重新分配到最近的POP。
此外,CDN供应商还利用某种形式的图像/视频优化或压缩来提供大量的媒体相关内容。这就是为什么你上传至YouTube的视频最初默认为360p的质量。处理和分发内容到所有边缘服务器需要时间。然后,根据用户的位置和带宽,将其缓存为服务给用户。高质量的视频通常需要几个小时才能以相同的分辨率提供给用户。
使用CDN的主要目的是为了:
- 减少加载时间和延时
- 防止服务器过载,确保更好的可靠性
- 提高安全性,缓解任何DDoS攻击
减少负载时间和延时
CDN架构不是直接为用户提供服务,而是将内容分配给位于不同地方的多个边缘服务器。然后,根据用户的位置将内容提供给用户。这大大减少了加载时间和延迟,因为内容来自最近的服务器。
防止服务器的过载
边缘服务器能够在向用户提供相同的内容之前进行缓存。当用户请求特定的网络内容时,每个边缘服务器在向原点服务器请求之前,会检查他们在边缘是否有该文件。
该文件通常在边缘服务器中保持缓存状态,直到底层的生存时间(TTL)过期。通常的过期时间是七天左右。
边缘服务器一次又一次地重复使用同一缓存,为请求同一文件的多个用户提供服务。这大大减少了源服务器的负载,提供了更好的用户体验。
更好的安全性
由于用户访问最近的边缘服务器而不是原点服务器,每个单独的边缘服务器作为一个层,可以减轻 DDoS攻击。这就保护了原生服务器不被攻陷或被恶意的人访问。
CDN停运
然而,CDN供应商也很容易出现中断和停电的情况。例如,2021年6月8日发生了大规模的故障,许多主要的网络和在线服务都被中断了。受影响最显著的公司是
- Hulu
- CNN
- 纽约时报
- 监护人
- Twitch
- 焦点网
- 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供应商如何不受干扰,以及不同供应商在提供静态和动态内容时的差异。