参考阅读:
- cloudflare - 什么是CDN
- cloudflare - CDN的好处
- cloudflare - 缓存的工作原理
CDN stands for Content Delivery Network. It’s a network of servers distributed across various locations to deliver web content more efficiently to users.
CDN是内容交付网络的缩写。它是由分布在各个地点的服务器组成的网络,可以更高效地将网站内容交付给用户。当用户访问网站时,其位置与网站服务器的物理位置之间的距离会影响加载时间和性能。为了提高网站的加载速度、降低延迟并减少网络拥塞,CDN应运而生。
目前互联网业务在网络层面可能存在的问题:
- 业务服务器接入互联网的带宽有限
- 地域问题导致用户到服务器的物理距离会比较远,传输时延非常高
- 不同运营商之间的互联问题使得业务要考虑多运营商分布问题
适用场景:
- 站点加速,包括资讯、内容为主的站点
- 点播
- 直播
- …
将网站的内容发布到最接近用户的网络边缘,CDN 能够实时根据 、 和 等综合信息将用户的请求路由至离用户最近的服务节点上,提高用户访问网站的响应速度和成功率。
CDN的原理是将网站的静态资源(如图片、视频、CSS、JavaScript文件等)复制到位于世界各地的服务器上。当用户访问网站时,CDN会根据用户的位置将内容从距离最近的服务器发送给用户,而不是直接从原始服务器发送。这样可以减少数据传输的时间和距离,提高网站的加载速度。
具体来说:
- 当用户输入网站上的 URL,经过本地 DNS 域名解析,DNS 域名解析最终会将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 域名解析服务器
- CDN 的 DNS 域名解析服务器将 CDN 的全局负载均衡设备 IP 地址返回用户
- 用户向 CDN 的全局负载均衡设备发起 URL 访问请求
- CDN 全局负载均衡设备根据用户IP地址,以及用户请求的内容 URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求
- 区域负载均衡设备会为用户选择一台合适的缓存服务器(这样源服务器就不必一遍又一遍地传递相同的内容)提供服务,选择的依据包括:根据用户 IP地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址
- 全局负载均衡设备把缓存服务器的 IP 地址返回给用户
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地
CDN 的全球分布可以缩短用户与网站资源的距离,CDN 可以使用户连接到一个地理位置更近的数据中心;另外,CDN 使用最小化和文件压缩等策略来减小文件大小,从而减少传输的数据量;最后,CDN 还通过优化连接重用和启用 TLS 假启动来加速使用 TLS/SSL 的站点。
CDN 的核心是一个服务器网络,CDN 会将服务器放置在不同网络之间的交换点,这些互联网交换点(IXP)是不同互联网提供商连接的主要位置,以便彼此提供来自其不同网络的流量的访问,通过连接到这些服务器,CDN 加速可以覆盖全球的线路,充分利用带宽资源,平衡源站点的流量/减少源服务器每次响应请求时消耗的带宽成本。了解 CDN (例如 Cloudflare CDN )如何减少对源服务器的请求并降低带宽成本。
对于拥有互联网资产的任何人来说,正常运行时间都是至关重要的组成部分。恶意攻击或只是受欢迎程度增加所致的硬件故障和流量激增,都有可能使 web 服务器停机并阻止用户访问站点或服务。完善的 CDN 具备一些可最大程度减少停机时间的功能:负载均衡可以在多个服务器之间平均分配网络流传,从而更容易应对流量的快速增长。
另外,即使一台或多台 CDN 服务器由于硬件故障而脱机,智能故障切换也可提供不间断的服务,故障转移可以将流量重新分配给其他正常运行的服务器;如果整个数据中心都遇到技术问题,那么 Anycast 路由会将流量转移到另一个可用的数据中心,以确保所有用户都能继续访问网站。
信息安全是 CDN 不可或缺的一部分。CDN 可以使用新的 TLS/SSL 证书保护站点的安全,这将确保高标准的身份验证、加密和完整性。
使用 CDN 加速厂商的一站式服务,可以实现网站的全网铺设,不用考虑购买服务器以及后续的托管运维。另外,CDN 加速厂商还有配套的云存储、大数据服务、视频云服务等,而且一般会提供7x24小时运维监控,可以更专注自身业务上。
使用CDN可以减少带宽成本的主要方式包括:
-
减少源服务器负载: CDN会缓存网站的静态资源并分发给用户,减轻了源服务器的负载。因为许多用户直接从CDN服务器获取内容,而不是从源服务器获取,所以源服务器的带宽使用量会减少。
-
节省网络传输成本: CDN的服务器分布在世界各地,用户可以从距离最近的服务器获取内容。这减少了跨越长距离的网络传输,从而降低了数据传输成本。
-
缓存优化: CDN提供商通常会使用缓存技术来优化内容交付。它们会根据用户的需求和访问模式智能地缓存内容,减少了对源服务器的请求,进一步降低了带宽成本。
-
带宽费用结构: 某些CDN提供商可能会提供较为灵活的计费方案,例如基于流量的付费模式。这样,用户只需支付实际传输的数据量,而不是整体带宽容量,从而节省了带宽成本。
综上所述,使用CDN可以通过减少源服务器负载、优化网络传输和采用灵活的计费方式等方式来降低带宽成本。
关于第四点,CDN 这种 Web 托管服务一般对传入或传出源服务器的数据收费(这通常称为“带宽”)。如果网站的大部分内容都缓存在 CDN 中,那么需要传入和传出网站主机服务器的数据就会少得多,从而降低带宽成本。
注意,这里说的"带宽"实际上不是实际意义上的带宽。当人们在 CDN 网络托管环境中说"带宽"时,他们真正的意思是“数据传输”,这是往返于网页主机的数据量。
带宽:实际上表示一段时间内可以通过网络上某个点的最大数据量
要使用或构建CDN,通常需要以下步骤:
-
选择CDN提供商: 选择一家信誉良好的CDN提供商,例如Cloudflare、Akamai或Amazon CloudFront。
-
设置CDN: 将网站的静态资源上传到CDN提供商的服务器,并配置CDN以使其知道如何将请求路由到最近的服务器。
-
DNS设置: 更新网站的DNS设置,以便将网站的域名解析到CDN提供商的服务器。
-
测试和优化: 测试CDN以确保它能够有效地提高网站的性能。根据测试结果进行优化,可能需要调整缓存设置或添加更多的CDN节点来覆盖更广泛的地理区域。
通过使用CDN,网站可以实现更快的加载速度、更高的可靠性和更好的用户体验。
上述只是简单的流程,更具体的配置前往不同CDN提供商官网。
CDN把资源放在不同缓存服务器上,是如何实现实时更新的?
关键在于缓存控制机制和内容更新策略。主要有以下几种方法:
CDN会为缓存的内容设置过期时间,当内容过期时,CDN会向源服务器发送验证请求,检查内容是否已更新。如果内容已更新,CDN会从源服务器获取最新的内容并更新缓存。这个过程称为缓存验证,它确保用户获取到的始终是最新的内容。
CDN提供商通常会提供主动刷新和预加载功能,使网站管理员能够手动触发内容的更新。管理员可以通过CDN的管理界面或API发送刷新请求,强制CDN立即更新特定的缓存内容。
某些CDN提供商支持事件驱动的更新机制,例如当源服务器上的内容发生变化时,CDN可以通过Webhooks或其他方式收到通知,并自动更新相关的缓存内容。
CDN可以根据源服务器上内容的更新频率和重要性,自动调整缓存的更新策略。对于频繁更新的内容,CDN可能会采用更短的缓存时间或实时更新策略,以确保用户获取到最新的内容。