什么是CDN以及在哪里需要CDN?

内容分发网络(CDN)是由分布于不同地理位置的服务器及数据中心组成的虚拟网络,可帮助您以最小的延迟将内容分发给用户。

它通过“节点(PoP)”的广泛分布使内容更接近用户的地理位置。 同时,CDN还会进行数据缓存,以加快网页加载时间并减少带宽消耗。 我们将在下面详细介绍CDN的工作方式。

CDN服务对于需要向用户交付内容的企业至关重要。

请参考以下场景:

  • 大型新闻出版企业,读者遍布全球各个国家
  • 社交媒体企业,需要向用户传递多媒体内容
  • 像Netflix(网飞)这样的娱乐网站,需要向用户实时提供高清视频
  • 拥有百万级客户群体的电子商务平台
  • 玩家地理位置分布广泛的游戏公司

所有这些企业,都需要确保其内容交付高速,高可用,节约源站带宽资源,以及确保Web应用程序的安全性。 这就是需要CDN服务的地方。

CDN发展史

CDN诞生于于大概20年前,目的是应对将互联网上大量数据快速推向最终用户的挑战。 如今,它已成为网站内容交付的主要解决方案,并且在持续被研究和改进。

第一个CDN建于90年代后期,目前仍占全球互联网流量的15%至30%。 之后,随着宽带的增长以及互联网上音频,视频和相关流媒体数据的增长,已经有更多的CDN被开发出来。 从广义上讲,CDN的发展可以分为四代:

前期阶段:在实际创建 CDN 之前,需要开发所需的技术和基础设施。 这一时期的特点是服务器群集的兴起、分层缓存、Web 服务器的改进和部署缓存代理。 镜像、缓存和多宿主等技术为 CDN 的创建和发展铺平了道路。

第一代:CDN 的第一次迭代主要侧重于动态和静态内容交付,因为这是网络上仅有的两种内容类型。 当时的主要机制是副本、智能路由和边缘计算方法的创建和实施。 应用程序和信息分散在服务器上。

第二代:这一代CDN专注于流媒体视频和音频内容或视频点播服务,如Netflix,面向用户和新闻服务。这一代还为向移动用户提供网站内容扫清了道路,P2P和云计算技术也初见端倪。

第三代:第三代 CDN 就是我们现在所处的位置,并且仍在不断发展。 我们可以期待未来的 CDN 会越来越多地为社区服务。 这意味着系统将由普通用户驱动。 自我配置、配置、交付内容将成为趋势。 最终用户的体验质量预计将成为未来的主要目标。

CDN 最初是为了应对带宽压力而发展起来的,之后因为流媒体的需求增长,CDN提供商也不断增多。随着互联网的发展,CDN服务的价格不断下降,使其成为一种非常大众化的技术。因为云计算的广泛应用,cdn在业务运营的各个层面都发挥了关键作用。它们是SaaS(软件即服务)、IaaS(基础设施即服务)、PaaS(平台即服务)和BPaaS(业务流程即服务)等模型的关键。

CDN如何工作?

CDN 的工作原理是减少用户与源站之间的物理距离(网站或应用)。 它是一个全球分布的服务器网络,这些服务器存储的内容比源站更靠近用户。 为了更好地理解这一点,我们会从使用和脱离 CDN 分别来解释。

脱离CDN

当用户访问网站时,建立连接的情况如下图。 网站名称使用本地 DNS 或 LDNS(如 ISP 提供的 DNS 服务器或公共 DNS 解析服务器)解析为 IP 地址。 如果 DNS 或 LDNS 无法解析 IP 地址,它会递归地请求上游 DNS 服务器进行解析。 最终,请求可能会传递到托管区域的权威 DNS 服务器。 此 DNS 服务器解析地址并将其返回给用户。

Local DNS to Authoritative DNS

然后用户的浏览器直接连接到源站并下载网站内容。 每个后续请求都由源站直接提供服务,静态资产在用户机器上本地缓存。 如果来自相似或其他位置的另一个用户尝试访问同一站点,他将经历同样的流程。 每个用户请求都会直接到源站,源站会亲自回复内容。 沿途的每一步都会增加延迟(Latency)。 如果源站位置离用户很远,响应时间将遭受显著的延迟,产生糟糕的用户体验。

使用CDN

在使用 CDN 的情况下,过程略有不同。 当他的 LDNS 收到用户发起的 DNS 请求时,它会将请求转发到 CDN 的 DNS 服务器之一。 这些服务器是 全球负载均衡 基础设施(“GSLB”)的一部分。GSLB 可提供负载均衡功能,从宏观衡量整个网络情况,并跟踪有关所有可用资源及其性能的信息。 有了这些信息,GSLB 会使用性能最佳的边缘节点(通常在用户附近)解析 DNS 请求。 “边缘”是一组缓存和传送网络内容的服务器。

Global Service Load Balancer Diagram

DNS解析完成后,用户向边缘节点发起请求。 当边缘收到请求时,GSLB 服务器会帮助边缘服务器按照最佳路由将请求转发到源站。 然后边缘服务器从源站获取请求的数据,将其交付给请求它的最终用户,同时会将该数据存储在边缘节点本地。 所有后续用户请求都将从边缘节点本地提供服务,而无需再次回到 源站服务器 。 即使源站由于某些原因不可用,存储在边缘上的内容也可以交付给用户。

为什么使用CDN

CDN通过最小化延迟、提高网站性能和降低带宽成本,帮助企业高效地向最终用户交付内容。

CDN 的另一个独特之处在于它允许边缘服务器提前预取内容。 这可确保您要交付的数据提前存储在所有 CDN 数据中心。 在 CDN 行业里,这些数据中心被称为节点(“POP”)。 PoP 通过使 网络内容更接近访问者来最大程度地减少往返时间。

例如,您举办了一个广告活动,在数百万潜在客户中宣传您的服务或产品。你可能会期待大量的客户在阅读了这篇文章后会涌向你的网站,这将出现流量峰值。您能确定您的源站服务器能够承受这种流量激增吗?

在这种情况下,CDN 可以在边缘服务器分担流量,大部分人都会直接得到响应。 只有一小部分请求会回到源站,所以您的源服务器不会遇到流量高峰、502 错误和上游网络链路过载。

使用 CDN 的好处

根据您的业务规模和需求,CDN 的好处可以分为 4 个部分:

提升页面加载时间
通过就近分配 CDN 服务器(以及其他优化),使网站内容分发更靠近访问者,从而体验更快的网页加载时间。 访问者通常会退出(跳出)页面加载时间较长的网站。 这也会对网页在搜索引擎上的排名产生负面影响。 因此,拥有 CDN 可以降低跳出率并增加人们在网站上花费的时间。 换句话说,一个快速加载的网站会让更多的访问者停留更长时间。

降低带宽成本
每次源服务器响应请求时,都会消耗带宽。 带宽消耗成本是企业的一大开支。 通过缓存和其他优化,CDN 能够减少需要从源服务器提供的数据量,从而降低网站所有者的托管成本。

提高内容可用性和冗余
大量的流量进入或出现硬件故障可能会中断正常的网站功能并导致停机。 CDN 由于其分布式特性,可以处理更多的网络流量并更好地抵御硬件故障带来的影响。 此外,如果一个或多个 CDN 服务器由于某种原因离线,其他在线服务器可以提供冗余资源,保持服务不中断。

提升网站安全性
CDN 处理流量峰值的过程和防护 DDoS 攻击原理类似,因此 CDN 是抗D的理想选择。 在这些攻击中,恶意行为者通过发送大量请求来试图压倒您的应用程序或源服务器。 当服务器由于资源饱和而停机时,就会影响网站的可用性。 CDN 可以充当 DDoS 防护和清洗平台,GSLB 和边缘服务器会平均分配流量负载。 CDN 还提供证书管理,可以自动生成证书和更新。

CDN 还能提供哪些帮助?

CDN 带来的好处不仅仅是前文描述的那些。 现代 CDN 平台可为您的业务和工程师团队带来更多其它好处。

它可用于做区域访问管理。 让您允许某些区域的访问,并拒绝其它区域的访问。

您可以轻松地将应用程序的一些功能放到更靠近用户的边缘服务器。 您可以处理请求/响应标头和正文,根据策略访问不同源站,或将身份验证任务委托给边缘服务器。

大量的访问流量需要一个日志收集和处理的基础设施,以便进行进一步的分析。CDN 可以收集日志并提供接口,方便地分析访问者数据。

只有熟悉的东西才是使用起来最方便的。CDN360 是基于NGINX的。这意味着您可以使用标准NGINX 指令执行任务。

我们的工程团队花费了数千小时来扩展 NGINX。

数据安全 & CDN

信息安全是 CDN 不可或缺的一部分。 CDN 通过以下方式保护网站数据。

提供 TLS/SSL 证书

CDN 可以通过提供传输层安全性 (TLS)/安全套接字层 (SSL) 证书来确保高标准的身份验证、加密和完整性,从而帮助保护站点。 这些证书可确保在用户和网站之间传输数据时遵循安全协议。

当数据通过互联网传输时,它很容易被恶意行为者拦截。 这可以通过加密数据来解决,保证只有预期的接收者才能解码和读取信息。 TSL 和 SSL 是对通过 Internet 发送的数据进行加密的协议。 它是安全套接字层 (SSL) 的更高级版本。 如果网站以 https:// 而不是 http:// 开头,则可以判断网站是否使用 TLS/SSL 认证,这表明它对于浏览器和服务器之间的通信足够安全。

DDoS 攻击防护

由于 CDN 部署在网络边缘,因此它充当了一道虚拟安全防护,可以抵御对您的网站和web应用程序的攻击。分散的基础设施和边缘位置也使 CDN 成为 阻止 DDoS 洪水攻击 的理想选择。 由于需要在核心网络基础设施之外缓解这些泛洪,CDN 将根据其来源在不同的节点上处理它们,从而防止服务器资源饱和。

阻止机器人和爬虫

CDN 还能够阻止威胁并限制滥用的机器人和爬虫程序占用您的带宽和服务器资源。 这有助于限制其他垃圾邮件和黑客攻击,并降低您的带宽成本。

静态 & 动态加速

静态内容是指您的资产在交付给最终用户之前不需要生成、处理或修改。 这些可能是图像或其他媒体文件、各种二进制文件或应用程序的静态部分,例如 HTML、CSS、JavaScript 库,甚至 JSON、HTML,或任何不经常更改的动态响应。 如前所述,您可以提前预取此类内容。 然后,当您需要使此类内容无效并将其从边缘服务器中删除时,您可以进行缓存刷新。

动态加速适用于由于其动态特性而无法缓存在边缘的内容。 例如一个 WebSocket 应用程序,它侦听来自服务器或 API 端点的事件,其响应因凭据、地理位置或其他参数而异。 很难使用静态内容的缓存机制。 在某些情况下,应用程序和 CDN 之间更紧密的集成可能会有所帮助; 但是,在某些情况下,应该使用缓存以外的其他方法。 对于动态加速,CDN 优化了网络基础设施,和使用了先进的请求/响应路由算法。

计费模式或“我要为什么服务付钱”

通常在 CDN 中,您需要为最终用户消耗的流量和请求量付费。 此外,HTTPS 请求比 HTTP 请求需要更多的计算资源,这给 CDN 提供商设备带来了更多的负载。 因此,您可能需要为 HTTPS 请求支付额外费用,而 HTTP 请求则不会收取额外费用。

当需要在边缘节点进行计算时,CPU 成为了计费对象。 请求可能有不同的处理线程,因此需要不同数量的 CPU 处理时间。 按请求数计费是不切实际的; 按流量+cpu使用时间计费更实用。

谁在使用CDN ?
各种规模的企业都在使用 CDN 来优化其网络访问和可用性,并为客户提供卓越的用户体验。 CDN 在以下行业特别受欢迎:

  • 广告
  • 数字出版
  • 在线视频&音频
  • 游戏
  • 在线教育
  • 电子商务
  • 公共部门
  • 政府
  • 金融服务
  • SaaS(软件即服务 )
Play Video