基本概念
内容分发网络(Content Delivery Network,简称CDN),是建立并覆盖在Internet 之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性。
CDN主要解决了以下问题:
- 用户与服务器的距离较远(例如用户在广州,而服务器在北京),由于物理距离的限制用户发出的网络请求会存在多次转发,传输时延会大大提升且稳定性不高。
- 服务器的网络带宽处理能力有限,当有海量的请求时,服务器的响应速度以及稳定性都会受到影响
- 用户网络的运营商和服务器网络的运营商不同,请求需要在运营商之间进行转发
CDN的请求过程
名词解释:
- DNS:
DNS 是域名系统的缩写,它的主要作用是将用户输入的域名(如
www.example.com)转换为对应的 IP 地址,帮助用户访问到相应的服务器。因为 IP 地址不易记忆,而域名对人类更友好,DNS 作为互联网的“电话簿”,将域名和 IP 地址进行映射,方便用户通过域名访问网站。 - CNAME: CNAME 是一种 DNS 记录类型,表示一个域名是另一个域名的别名。它允许你将多个不同的子域名指向同一台服务器或 IP 地址。举个例子,如果
www.example.com是example.com的别名,那么你可以用 CNAME 记录将www.example.com指向example.com,这样当访问者请求www.example.com时,实际上访问的是example.com所指向的服务器。 - 边缘节点:边缘节点是内容分发网络(CDN)中的服务器节点,通常位于用户靠近的物理位置上。其主要功能是缓存和存储源站的内容,从而减少用户访问时的延迟。由于边缘节点离用户更近,用户请求可以通过这些节点快速响应,提供更好的性能和体验,特别是在流媒体和大文件下载场景下。
- 中间节点:中间节点是位于源站和边缘节点之间的 CDN 网络节点,它负责在边缘节点和源站之间传递数据。如果边缘节点无法满足某个请求(例如,缓存已过期或没有缓存该内容),它可能会向中间节点请求数据,而中间节点则可能会从源站获取内容并传递给边缘节点。中间节点起到了减少源站负载、优化传输路径的作用。
- 源站:源站是指存储和提供原始内容的服务器或主服务器,通常是用户内容的实际来源。当边缘节点或中间节点无法缓存所需的内容时,它们会从源站拉取该内容。源站负责提供最新的内容,例如网页、图片、视频等,但直接从源站请求通常会因为地理距离和网络延迟导致加载速度较慢,因此需要 CDN 缓解这种负载。
- CDN运营商:CDN 运营商是提供内容分发网络服务的公司或组织,它们通过在全球或区域范围内部署多个节点(边缘节点和中间节点),帮助企业将内容快速、高效地传递给用户。CDN 运营商的职责包括管理和维护这些节点、提供内容缓存、优化网络传输、减少源站的负载、提升用户体验等。常见的 CDN 运营商包括 Cloudflare、Akamai、腾讯云 CDN、阿里云 CDN 等。
CDN的加速类型
1. 动态加速
动态加速针对的是动态内容的传输,指那些需要实时处理、无法缓存的请求,比如数据库查询、API 请求、用户身份验证等。与静态内容不同,动态内容通常是根据用户请求实时生成的,因此无法像静态文件那样通过缓存来提升速度。
主要的优化方式有:
- 智能路由优化:通过监控全球或区域内的网络状况,动态调整路径,确保请求选择最优网络路径。
- TCP/UDP 协议优化:减少网络延迟和数据包丢失,提高请求响应速度。
- 连接复用:减少客户端与服务器之间的握手和建立新连接的时间,提升多次请求的效率。
- 动态数据压缩:对动态响应的数据进行压缩,以减少数据量,提高传输效率。
应用场景:
- 电商网站的商品搜索、支付、用户登录等需要实时生成的页面。
- 需要频繁交互的社交网络和游戏等。
2. 静态加速
静态加速是指加速那些可以长期缓存、不需要实时变化的内容,如图片、CSS、JavaScript、视频文件等。这类文件可以预先存储在 CDN 的边缘节点上,从而使用户能够从距离最近的节点获取资源,减少访问延迟。
原理: 静态加速的核心是缓存和分发:
- 缓存机制:将源站的静态资源(如图片、HTML 页面)缓存在 CDN 的边缘节点。用户请求资源时,CDN 首先检查边缘节点是否有缓存,如果有缓存,则直接返回缓存内容,而无需再向源站请求。
- 就近访问:用户请求时,由距离最近的 CDN 边缘节点提供服务,减少网络传输的时间和负载。
- 缓存更新:针对静态资源的更新,可以通过设置缓存时间(TTL),或采用“缓存刷新”机制来确保边缘节点的内容及时更新。
应用场景:
- 网站的图片、CSS、JavaScript 文件、视频等不常变化的内容。
- 文件下载服务,如软件包、文档等。
3. 直播加速
直播加速专门针对实时视频流媒体的传输优化。直播场景下,内容需要以极低的延迟传送给大量用户,同时保证流畅性。CDN 直播加速通过全球分布的 CDN 边缘节点,将直播流快速、稳定地传递给观众。
原理:
直播加速的技术重点在于降低延迟、提高带宽利用率,保障直播流的稳定性:
- 边缘节点的实时推流:直播流由主播推流到 CDN 的源站,源站再将直播流分发到 CDN 的边缘节点,观众可以从最近的边缘节点获取直播流,减少延迟。
- 分片传输:直播流通常分割成较小的时间片段(如 HLS、DASH 等协议),这些片段可以逐段缓存和传输,减少观看时的卡顿。
- 负载均衡与智能调度:当直播观看人数急剧增加时,CDN 通过负载均衡和智能调度,将观看请求分发到多个节点,避免单个节点超载。
- 延迟控制:优化直播传输协议,减少直播过程中由于网络波动或拥塞引起的高延迟。
应用场景:
- 实时视频直播,如体育赛事、在线演唱会、在线教育等。
- 实时互动场景,如视频会议、直播带货等。