type
status
date
slug
summary
tags
category
icon
password
能力模型
能力分类
省赛
全球总决赛
学习进度
中国总决赛
CDN - 内容交付网络
CDN是什么?
CDN(Content Delivery Network),即内容分发网络。
CDN 是一个全球性的代理服务器分布式网络,依靠部署在各地的边缘服务器进行缓存,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
为什么要使用CDN?
内容分发网络的主要目的是减少延迟,或者说减少由网络设计造成的通信延迟。CDN通过在客户端和网站服务器之间引入中间服务器来提高效率,能够有效减少网络带宽消耗,并改善应用程序的用户体验。
CDN的原理
1.三种类型的服务器相互配合:
- 源站服务器 - 由内容供应商提供,包含内容的原始版本,并担任着内容来源与更新的源站。
- 边缘服务器 - 边缘服务器位于世界各地的多个地理位置,也称为入网点(PoP)。这些PoP内的边缘服务器用于缓存从源站服务器中复制的内容,并负责向附近的用户交付此内容。
- DNS服务器 - 域名系统DNS服务器用于跟踪IP地址并为源站和边缘服务器提供IIP地址。当客户端向源站服务器发送请求时,DNS服务器会使用配对的边缘服务器的名称做出响应(相当于中转功能),以便更快地提供内容。
2.CDN 的基本原理是:
- 广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中;
- 在用户访问网站时,实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息来选择最佳缓存服务器;
- 然后,将用户的请求重新导向最佳的缓存服务器上,由缓存服务器直接响应用户请求。
3.CDN 的网络架构主要由两大部分,分为中心和边缘两部分:
- 中心指 CDN 网管中心和 DNS 重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房;
- 边缘主要指异地节点,CDN 分发的载体,主要由 Cache 和负载均衡器等组成。
4.CDN基于缓存、动态加速、边缘逻辑计算的原则工作:
- 缓存 - 缓存是存储相同数据的多个副本以加快数据访问的过程。在计算中,缓存的原理适用于所有类型的内存和存储管理。在 CDN 技术中,该术语是指将静态网站内容存储在网络中多个服务器上的过程。
- 动态加速 - 动态加速是指通过在 Web 应用程序和客户端之间设置中间 CDN 服务器,从而加快对动态 Web 内容请求的服务器响应。缓存不适用于动态 Web 内容,因为内容因用户请求而异。CDN 服务器必须针对每个动态请求重新连接原始服务器,但它们通过优化自己与原始服务器之间的连接加速了该过程。
- 智能路由算法
- 地理位置靠近原始服务器
- 能够处理客户端请求,缩减其大小
如果客户端通过互联网直接向 Web 服务器发送动态请求,则该请求可能会由于网络延迟而丢失或延迟。此外,可能还需要花费时间打开和关闭连接以进行安全验证。另一方面,如果附近的 CDN 服务器将请求转发到原始服务器,它们就已经建立了一个持续的、受信任的连接。例如,以下功能可以进一步优化它们之间的连接:
- 边缘逻辑计算 - 您可以对 CDN 边缘服务器进行编程,以执行简化客户端和服务器之间通信的逻辑计算。例如,此服务器可以执行以下操作:
- 检查用户请求并修改缓存行为。
- 验证和处理不正确的用户请求。
- 在响应之前修改或优化内容。
CDN的优缺点
- 优点
- 访问加速 - 由于 CDN 就近服务,大大降低了网络传播时延,所以自然提高了访问速度。
- 降低负载 - 如果 CDN 已经能获取数据,那么就不必请求源站,这自然降低了源站(服务器)的负载。
- 提高内容可用性 - 同一时间的访客过多或网络硬件故障可能会导致网站崩溃。CDN 服务可以处理更多 Web 流量并降低 Web 服务器的负载。此外,如果一台或多台 CDN 服务器离线,其他运营服务器可以替换它们,以确保服务不中断。
- 提高网站安全性 - 分布式拒绝服务(DDoS)攻击试图通过向网站发送大量虚假流量来关闭应用程序。CDN 可以通过在多个中间服务器之间分配负载来处理此类流量峰值,从而降低对原始服务器的影响。
- 缺点
- CDN 成本可能因流量而异,可能在权衡之后你将不会使用 CDN。
- 如果在 TTL 过期之前更新内容,CDN 缓存内容可能会过时。
- CDN 需要更改静态内容的 URL 地址以指向 CDN。
CDN的组成
CDN 是一个策略性部署的整体系统,包括分布式存储、负载均衡、内容管理和网络请求的重定向4个要件。
- 分布式存储
CDN 网络将存储资源分布到各个地理位置、各个网段。存储系统作为 CDN 系统密不可分的一部分,将 CDN 分发的文件和数据库表记录内容存储起来,提供持续服务。存储系统采用三级存储架构,包括核心存储、CDN 服务节点分布式缓存和终端本地缓存。任意一个点的存储崩溃或失效,并不影响系统服务的可用性。
如 CDN 系统在 5 大运营商(中国电信、中国网通、中国铁通、中国移动、中国联通)以及 2 大专有网络(中国教育和科研计算机网、中国科技网)都布有 CDN 节点。这样就消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。
- 内容管理
内容管理和全局的网络流量管理(Traffic Management)是 CDN 的核心所在。通过用户就近性和服务器负载的判断,CDN 确保内容以一种极为高效的方式为用户的请求提供服务。总的来说,内容服务基于缓存服务器,也称作代理缓存(Surrogate),它位于网络的边缘,距用户仅有"一跳"(Single Hop)之遥。同时,代理缓存是内容提供商源服务器(通常位于 CDN 服务提供商的数据中心)的一个透明镜像。这样的架构使得 CDN 服务提供商能够代表他们客户,即内容供应商,向最终用户提供尽可能好的体验,而这些用户是不能容忍请求响应时间有任何延迟的。据统计,采用 CDN 技术,能处理整个网站页面的 70%~ 95%的内容访问量,减轻服务器的压力,提升了网站的性能和可扩展性。
- 负载均衡
CDN 负载均衡系统实现 CDN 的内容路由功能。它的作用是将用户的请求导向整个 CDN 网络中的最佳节点。最佳节点的选定可以根据多种策略,例如距离最近、节点负载最轻等。负载均衡系统是整个 CDN 的核心,负载均衡的准确性和效率直接决定了整个 CDN 的效率和性能。通常负载均衡可以分为两个层次:全局负载均衡(GSLB)和本地负载均衡(SLB)。
- 网络请求的重定向
当用户访问了使用 CDN 服务的资源时,DNS 域名服务器通过 CNAME 方式将最终域名请求重定向到 CDN 系统中的智能 DNS 负载均衡系统。智能 DNS 负载均衡系统通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的节点地址提供给用户,使用户可以得到快速的服务。
同时,它还与分布在不同地点的所有 CDN 节点保持通信,搜集各节点的健康状态,确保不将用户的请求分配到任何一个已经不可用的节点上。
CDN服务
CDN 服务有推送和拉取两种方式:
- CDN 推送
- 当你服务器上内容发生变动时,推送 CDN 接受新内容。直接推送给 CDN 并重写 URL 地址以指向你的内容的 CDN 地址。你可以配置内容到期时间及何时更新。内容只有在更改或新增是才推送,流量最小化,但储存最大化。
- 优点在于节省源站带宽,提前将要分发的内容放到 CDN 节点上了,当某个流量高峰来临时,不会把你的源站带宽占满(源站还要留点带宽提供动态 HTML 啊)。
- 缺点是需要针对 CDN 做接口开发,在被分发内容生成时主动上传给 CDN。
- CDN 拉取
- CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源。你将内容留在自己的服务器上并重写 URL 指向 CDN 地址。直到内容被缓存在 CDN 上为止,这样请求只会更慢。
- 存活时间(TTL)决定缓存多久时间。CDN 拉取方式最小化 CDN 上的储存空间,但如果过期文件并在实际更改之前被拉取,则会导致冗余的流量。
- 高流量站点使用 CDN 拉取效果不错,因为只有最近请求的内容保存在 CDN 中,流量才能更平衡地分散。
CDN 与云计算的区别是什么?
虽然开发 CDN 和云计算都是为了解决对 Web 内容和应用程序的需求所带来的性能和可扩展性问题,但这些技术的侧重点存在根本性区别。
- 云计算环境通过互联网以服务形式提供服务器、数据库、应用程序、网络和分析等计算资源。云可以帮助企业降低前期成本并按需扩展应用程序基础架构,让企业无需投入巨资构建昂贵的新基础架构即可扩展到新的地理区域,还可以帮助企业利用相关的 云服务构建最新的数字化体验或企业应用程序。
- CDN 是一种由服务器构成的网络,它将内容缓存在靠近最终用户的位置,从而在用户通过网络设备访问互联网时将内容从一个“源站”服务器分发到世界各地。通过缩短数据和内容的传输距离,CDN 可以帮助降低延迟并提供更好的用户体验,还可以将负载分发到位于不同地理位置的多个服务器,从而降低源站服务器的压力。
资源
- CDN 资源
有关CDN的问题,欢迎您在底部评论区留言,一起交流~
- Author:Koreyoshi
- URL:https://Koreyoshi1216.com/article/10cfc3c2-718d-4c7f-b83f-2ab1b07e3eac
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!