介绍 CDN
内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)是建立并覆盖在承载网上,由不同区域的服务器组成的分布式网络。将源站资源缓存到全国各地的边缘服务器,供用户就近获取,降低源站压力。
CDN 基于这样的原理:
- 挑选最优的设备为用户提供服务;
- 如果某个内容被很多用户所需要,那么就将它缓存到距离用户最近的节点中。
CDN 公司在整个互联网上部署数以百计的 CDN 服务器(Cache),这些服务器通常在运营商的互联网数据中心(Internet Data Center,IDC)中,尽量靠近接入网络和用户。CDN 在 Cache 中复制内容,当内容的提供者更新内容时,CDN 向 Cache 重新分发这些被刷新的内容。
CDN 提供一种机制,当用户请求内容时,该内容能够由以最快速度交付的 Cache 来向用户提供,这个挑选 “最优” 的过程就叫做负载均衡。被选中的最优 Cache 可能最靠近用户,或者有一条与用户之间条件最好的路径。
CDN 的工作过程
使用 CDN 服务的网站是如何向用户提供服务的呢?
基于 DNS 解析的 GSLB 系统是目前 CDN 服务商采用比较多的 GSLB 方案。基于 DNS 解析的 GSLB 系统的实现又有几种不同的方式:
- 通过 CNAME 方式实现负载均衡;
- 负载均衡器作为权威 DNS 服务器;
- 负载均衡器作为代理 DNS 服务器。
其中通过 CNAME 方式实现负载均衡是目前业界使用最多的方式。
通过 CNAME 方式实现负载均衡,一个用户的访问流程为:
当用户在浏览器的地址栏中输入 URL 并点击回车后,浏览器首先判断 URL 中的是 IP 地址,还是域名。如果 URL 中的是域名,那么首先要做的就是域名解析。
域名解析的过程:首先是浏览器查看浏览器的缓存。
- 1、2、3:如果浏览器中没有该域名的缓存,那么浏览器询问【本地 DNS 解析器】,【本地 DNS 解析器】首先查看本地 DNS 缓存。如果本地 DNS 缓存中没有该域名的缓存,那么【本地 DNS 解析器】请求【本地 DNS 服务器】进行域名解析。
- 4、5、6:如果【本地 DNS 服务器】中没有该域名的缓存,那么【本地 DNS 服务器】向 DNS 系统中的其他远程 DNS 服务器发送查询请求。
在 domain.com 域的域名服务器中,将 host.domain.com 域名的 CNAME 记录设置为其他的域名(CDN 服务商的域名的子域名),比如设置为 host.domain.com.cdn.dnsv1.com。
- 7:【本地 DNS 服务器】获取到 domain.com 域的域名服务器,向其发送 host.domain.com 域名解析请求, domain.com 域的域名服务器返回 CNAME 记录,该 CNAME 记录的值为 host.domain.com.cdn.dnsv1.com(CDN 服务商的域名的子域名)。
- 8:【本地 DNS 服务器】获取到 cdn.dnsv1.com 域的域名服务器(CDN 专用的域名服务器),向其发送 host.domain.com.cdn.dnsv1.com 域名解析请求。
这样就将网站域名的解析权交给了 CDN 专用的域名服务器,由 CDN 专用的域名服务器进行网站域名的解析。
- 9、10:【本地 DNS 服务器】收到域名的解析结果后,【本地 DNS 服务器】缓存数据,并将解析结果返回给【本地 DNS 解析器】。【本地 DNS 解析器】缓存数据,并将解析结果返回给【客户端】。
- 11:【客户端】缓存数据,并向缓存服务器发送请求,缓存服务器响应【客户端】的请求,将用户所需的内容返回给【客户端】。如果这台缓存服务器上并没有用户想要的内容,那么这台缓存服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
CDN 服务商的职责:CDN 专用的域名服务器将域名解析成缓存服务器的 IP 地址。
CDN 使用者的任务:使用 CDN 服务的网站,将网站域名的解析权交给 CDN 专用的域名服务器,再将需要分发的内容注入 CDN(或者由 CDN 拉取),就可以实现内容加速了。
CDN 的应用
CDN 可完成:内容缓存、负载均衡、流媒体加速、动态内容加速 等任务。
参考资料
《CDN 技术详解》