性能优化-CDN

loading 2024年01月05日 36次浏览

1. 概念

内容分发网络(CDN)是由分布于不同地理位置的服务器及数据中心组成的虚拟网络,用于将内容(如网页、视频、图片等)快速、可靠地传送给用户。CDN的主要目标是减少延迟,提高内容的访问速度和可靠性。

CDN主要由以下三个部分组成:

分发服务系统:这个系统负责将内容从源站点分发到各个边缘节点。这个过程可以通过多种方式进行,包括主动分发(PUSH)、被动分发(PULL)和综合分发(结合PUSH和PULL)。在主动分发中,网站运维人员可以主动将需要的内容推送到CDN。在被动分发中,当用户请求某个内容时,CDN会从源站点获取该内容。综合分发则结合了主动分发和被动分发。

负载均衡系统:这个系统负责在所有的用户请求中进行访问调度,确定提供给用户的最终实际访问地址。负载均衡系统主要包括全局负载均衡和本地负载均衡。全局负载均衡主要根据用户的地理位置信息,通过对每个服务节点进行“最优”判断,确定向用户提供服务的cache的物理位置。本地负载均衡主要负责节点内部的设备负载均衡。

运营管理系统:这个系统负责CDN的运维管理,包括配置管理和监控管理。配置管理模块负责管理CDN的配置,包括域名配置、设备配置等。监控管理模块负责监控CDN的运行状态,包括服务响应时间、节点负载情况等。

2. 作用

CDN一般会用来托管Web资源(包括文本、图片和脚本等),可供下载的资源(媒体文件、软件、文档等),应用程序(门户网站等)。使用CDN来加速这些资源的访问。

(1)在性能方面,引入CDN的作用在于:

  • 降低延迟和提高内容加载速度:CDN的数据中心(也称为边缘节点)分布在全球各地,当用户请求内容时,CDN会将请求路由到离用户最近的边缘节点。这样,用户收到的内容来自最近的数据中心,从而降低了网络延迟,提高了内容加载速度。

  • 减轻服务器负载:CDN通过缓存内容并在边缘节点上响应用户请求,从而减少了对源服务器的请求。这意味着,源服务器不需要处理所有用户的请求,部分资源请求被分配给了CDN,从而减轻了服务器的负载。

(2)在安全方面,CDN有助于防御DDoS、MITM等网络攻击:

  • 防御DDoS攻击:DDoS(分布式拒绝服务)攻击是一种常见的网络攻击,攻击者通过控制大量的机器向目标服务器发送大量的请求,从而使服务器无法处理正常的请求。CDN可以帮助防御DDoS攻击,因为它将用户的请求分发到全球的边缘节点,而不是直接发送到源服务器。这样,即使有大量的恶意请求,也不会直接影响到源服务器。此外,许多CDN提供商还提供了专门的DDoS防御服务,例如通过监控和分析异常流量,限制其请求频率。

  • 防御MITM攻击:MITM(中间人)攻击是一种攻击者插入到通信双方之间,截取和可能篡改通信内容的攻击。CDN可以通过全链路HTTPS通信来防御MITM攻击。这意味着,从源服务器到CDN节点到ISP(Internet Service Provider),所有的通信都是加密的,攻击者无法读取或修改通信内容。

  • 除了这些,CDN还可以提供其他的安全功能,例如Web应用防火墙(WAF)、SSL/TLS加密、访问控制等。

3. 过程

简洁版:

  1. 首先,用户的请求会被路由到离他们最近的CDN节点(也称为边缘服务器)。
  2. 这个节点会检查它的缓存,看是否已经存储了用户请求的内容。
    2.1 如果内容已经在缓存中,节点就可以立即将内容返回给用户。
    2.2 如果内容不在缓存中,节点会向源服务器请求内容,然后将内容返回给用户并将其存储在缓存中以供将来使用。

完整版:

  1. 对于点击的数据的URL,经过本地DNS系统的解析,发现该URL对应的是一个CDN专用的DNS服务器,DNS系统就会将域名解析权交给CNAME指向的CDN专用的DNS服务器。
  2. CDN专用DNS服务器将CDN的全局负载均衡设备IP地址返回给用户
  3. 用户向CDN的全局负载均衡设备发起数据请求
  4. CDN的全局负载均衡设备根据用户的IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求
  5. 区域负载均衡设备选择一台合适的缓存服务器来提供服务,将该缓存服务器的IP地址返回给全局负载均衡设备
  6. 全局负载均衡设备把服务器的IP地址返回给用户
  7. 用户向该缓存服务器发起请求,缓存服务器响应用户的请求,将用户所需内容发送至用户终端。
  8. 如果缓存服务器没有用户想要的内容,那么缓存服务器就会向它的上一级缓存服务器请求内容,以此类推,直到获取到需要的资源。最后如果还是没有,就会回到自己的服务器去获取资源。

4. 使用场景

网站和应用加速:CDN可以加速网站或应用中大量的静态资源,如图片、HTML、CSS、JavaScript文件等。通过将这些内容缓存到边缘节点上,用户可以就近获取所需内容,从而提高访问速度。

视音频点播和大文件下载分发加速:CDN可以针对各类文件、在线点播视频提供下载、分发加速,比如MP4、FLV视频文件或者单个文件大小在20M以上的安装包等文件。CDN可以搭配对象存储OSS使用,提升回源速度,节约近2/3回源带宽成本。

视频直播加速:在体育或者游戏赛事直播中,通常成千上万的用户瞬间涌入,直播平台要承受高并发访问。CDN通过向所有CDN节点交付内容来确保此类服务的快速,可靠,安全的加速。