CDN
CDN英文全称Content Delivery Network,即为内容分发网络。它是建立并覆盖在承载网之上,将内容存储在分布式的服务器上,使⽤户可以从距离较近的服务器获取所需的内容,从⽽减少数据传输的时间和距离,提⾼内容的传输速度、减少延迟和提升⽤户体验。
CDN的应用
CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。
CDN的工作流程
- 当⽤户输⼊⼀个域名或点击⼀个链接时,⾸先会进⾏域名解析。如果网站启⽤了 CDN,DNS 解析会返回距离⽤户最近的 CDN 节点的 IP 地址,⽽不是原始源服务器的 IP 地址。
- ⽤户的请求会被路由到距离最近的 CDN 节点,并且CDN 节点可以根据服务器的负载和可⽤性,动态地将请求分发到最适合的服务器节点上。
- CDN 会⾸先检查是否已经缓存了该资源。如果有缓存,CDN 节点会直接返回缓存的资源,如果没有缓存所需资源,它会从源服务器(原始服务器)回源获取资源,并将资源缓存到节点中,以便以后的请求。
例如:点击
假设通过CDN加速的域名为www.a.com
,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:
- 当终端用户(北京)向
www.a.com
下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。 - LDNS检查缓存中是否有
www.a.com
的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。 - 当授权DNS解析
www.a.com
时,返回域名CNAME www.a.tbcdn.com
对应IP地址。 - 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
- LDNS获取DNS返回的解析IP地址。
- 用户获取解析IP地址。
- 用户向获取的IP地址发起对该资源的访问请求。
- 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤7和8,请求结束。
- 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,图中的北京节点,并返回给用户,请求结束。
CDN是如何加速的
- 就近访问:CDN 在全球范围内部署了多个服务器节点,当⽤户请求访问⼀个网站时,CDN 会选择距离⽤户最近的节点来提供内容。这减少了数据传输的距离和时间,从⽽降低了延迟。
- 内容缓存:CDN 节点会缓存静态资源,如图⽚、样式表、脚本等。当⽤户请求访问这些资源时,CDN 可以直接从缓存中返回,避免了从源服务器获取资源的延迟。
- 前置缓存:CDN 可以根据网站的配置,提前将热门的内容缓存在节点中,以备用户请求时快速响应。
- 智能负载均衡:CDN 会根据服务器的负载和可用性,动态地将请求分发到合适的服务器节点上,确保资源的快速获取。
- 压缩技术:CDN 使⽤压缩技术对内容进⾏压缩,减少传输数据的大小,从⽽加快内容的传输速度。
- 并行下载:由于 CDN ⽀持多路复⽤,⽤户可以在同⼀个连接上同时下载多个资源,从而提⾼并行下载的效率。
CDN主要运用场景:
- 物理距离远,多次网络转发,延时高不稳定;
- 所在运营商不同,需运营商之间转发绕行;
- 网络带宽处理能力有限,海量请求时,响应速度与可用性降低。