本文将深入探讨 CDN 的概念、工作原理以及相关的常见术语。
什么是 CDN?
CDN(Content Delivery Network,内容分发网络)是一种分布式网络架构,通过部署在多个地理位置的服务器节点,将用户请求的内容(如网页、视频、图片等)快速、可靠地分发到用户的设备上。
CDN 解决了什么问题?
通常情况下,用户与服务器的物理距离越远,访问时间越长。
CDN 通过在全国或全球范围内设立边缘服务器,并将内容缓存到这些服务器上,当用户访问网站时,它能根据用户的地理位置,选择最近的边缘服务器提供服务,从而减少延迟,提高访问速度。
CDN 的工作原理
用户在访问一个没有使用 CDN 的站点时,其访问流程大致为:
- 用户在浏览器中输入域名,浏览器向本地 DNS 服务器请求域名对应的 IP 地址。
- 本地 DNS 服务器未找到域名对应的 IP 地址,向网站授权的 DNS 服务器请求域名对应的 IP 地址(忽略完整的 DNS 解析过程)。
- 网站授权的 DNS 服务器找到域名对应的 IP 地址,返回给本地 DNS 服务器。
- 本地 DNS 服务器将 IP 地址返回给浏览器。
- 浏览器向 IP 地址对应的服务器请求资源。
- 服务器处理请求,并将资源返回给浏览器。
我们可以通过一张图来理解整个流程:
而站点使用了 CDN 后,用户的访问流程大致为:
- 用户在浏览器中输入域名,浏览器向本地 DNS 服务器请求域名对应的 IP 地址。
- 本地 DNS 服务器未找到域名对应的 IP 地址,向网站授权的 DNS 服务器请求域名对应的 IP 地址(忽略完整的 DNS 解析过程)。
- 网站授权的 DNS 服务器未找到域名对应的 IP 地址,只找到对应的 CNAME(域名别名) 记录,返回给本地 DNS 服务器。
- 本地 DNS 服务器根据 CNAME 找到 CDN 的 DNS 服务器,请求 CNAME 对应的 IP 地址。
- CDN 的 DNS 服务器调度系统会根据用户的地理位置(通常是用 IP 来锁定的)、运营商网络、边缘服务器负载情况等,选择最近的、最合适的边缘服务器,将 IP 地址返回给本地 DNS 服务器。
- 本地 DNS 服务器将 IP 地址返回给浏览器。
- 浏览器向 IP 地址对应的边缘服务器请求资源。
- 边缘服务器处理请求,如果有资源,则将资源返回给浏览器,如果没有资源,则先向源站请求资源,再返回给浏览器。
我们可以通过一张图来理解整个流程:
整个访问流程中,有几个关于域名解析的关键名词需要我们理解:
- DNS 服务器:将域名解析为 IP 地址的服务。
- 本地 DNS 服务器:由网络服务提供商(ISP)提供或由企业内部配置,用于处理用户设备的 DNS 解析请求。
- 网站授权的 DNS 服务器:即权威 DNS 服务器,是为域名提供真实 DNS 记录的服务器,由域名所有者配置和管理。
- CNAME:将一个域名映射到另一个域名,常用于设置别名。在域名解析时遇到 CNAME 记录,会继续解析 CNAME 记录指向的域名的 IP 地址。
- CDN 的 DNS 服务器:由 CDN 服务商提供的特殊 DNS 服务器,用于解析域名到分布式的边缘服务器,确保用户能从最近的服务获取内容。
关于 CDN 的常见名词
以下是 CDN 中一些经常会出现的名词:
- 边缘服务器:部署在各地的服务器,用于存储和分发内容,也称作 CDN 节点。
- 源站:网站的原始服务器,存储网站的全部资源和数据。它是 CDN 节点获取内容的最终来源。
- 回源:是指当 CDN 节点无法满足用户请求时(如缓存中无数据或数据已过期),向源站发起请求以获取所需内容。
- 缓存:即 CDN 节点存储的资源副本。
- 命中率:访问的资源正好在缓存里,可以直接返回,命中次数与所有访问次数之比。
- 回源率:访问的资源不在缓存里,需要回源站获取资源,回源次数与所有访问次数之比。