CDN之简介
1. 什么是 CDN?
来自 《什么是 CDN?》
CDN(内容交付网络)是一种高度分布式服务器平台,为交付 Web 应用程序、流媒体等内容专门优化。服务器网络分布于众多物理和网络位置,对最终用户的 Web 内容请求和快速安全媒体交付做出快速响应。网络在内容服务器(源站)和最终用户(客户端)间起到桥梁作用。
如果没有 CDN,内容源站服务器必须对每个最终用户请求做出响应。这一机制导致原始和随后加载的流量大幅增加,因此,如果出现极高的流量峰值或持续负载,源站出现故障的几率会增大。
CDN 在源站及接近最终用户的物理和网络位置,对最终用户的请求做出响应,从而分载内容服务器的流量,改善 Web 体验,让内容提供商及最终用户均从中获益。
CDN 主要因交付网站及其内容而出名。用户代理基本上是运行 Web 浏览器的设备,为渲染 Web 页面所需的内容(如 HTML、图像、CSS 和 JavaScript 文件) 提出请求。
对于大多数 CDN,每个内容请求会让最终用户映射到位置最优的 CDN 服务器,服务器会用已请求文件的缓存(预存储)版本予以响应。如果定位文件失败,CDN 会寻找 CDN 平台其他服务器上的内容,然后向最终用户发送响应。然而,如果内容不可用或过时,CDN 会承担源站服务器请求代理的角色,并存储获取的内容,为未来请求提供服务。
尽管 CDN 常用于交付网站内容,但 CDN 能交付的内容类型不止这一种。事实上,CDN 交付的内容类型多到难以置信,其中包括:4K 和高清内容视频;音频流;应用程序、游戏和 OS 更新等软件下载;包含医疗和财务信息的数据记录等等。只要能数字化的任何数据都能通过 CDN 交付。
CDN 提供商让公司有能力使用内容交付网络,向全球最终用户提供相关内容。
随着更多公司进军在线世界,整个世界的人们都在使用互联网购物、沟通和分享,内容提供商面临的挑战日趋增多,例如:交付不同类型的内容,根据不同的设备类型(设备检测)调整内容,保护其最终用户的数据和在线业务。考虑到内容交付网络的特性,CDN 提供商在帮助公司克服媒体交付的各种挑战方面独具优势。
2. CDN 基本工作过程
使用 CDN 会极大简化网站的系统维护工作量,网站维护人员只需将网站内容注入 CDN 的系统,通过 CDN 部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商、跨地域的用户覆盖。由于 CDN 将内容推送到网络边缘,大量的用户访问被分散在网络边缘,不再构成网站出口、互联互通点的资源挤占,也不再需要跨域长距离 IP 路由了。
2.1 无 CDN 时
在没有 CDN 时,一个网站是如何向用户提供服务的?
网站系统基本上都是基于 B/S 架构的,即 Browser-Server(浏览器-服务器)架构。
用户通过浏览器等方式访问网站的过程如下图:
- 用户在自己的浏览器中输入要访问的网站域名。
- 浏览器向本地 DNS 服务器请求对该域名进行解析。
- 本地 DNS 服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
- 本地 DNS 服务器中如果关于这个域名的解析结果的缓存,则以递归方式向整个 DNS 系统请求解析,获得应答后将结果反馈给浏览器。
- 浏览器得到域名解析结果,就是该域名相应的服务设备的 IP 地址。
- 浏览器向服务器请求内容。
- 服务器将用户请求内容传送给浏览器。
2.2 有 CDN 时
在网站和用户之间加入 CDN 后,用户不会有与原来不同的感觉。
最简单的 CDN 网络有一个 DNS 服务器和几台缓存服务器就可以了。一个典型的 CDN 用户访问调度流程如下图:
- 当用户点击网站页面上的内容 URL,经过本地 DNS 系统解析,DNS 系统会最终将域名的解析全交给 CNAME 指向的 CDN 专用 DNS 服务器。
- CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。
- 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。
- CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容 URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局均衡设备返回一个缓存服务器的 IP 地址。
- 全局负载均衡设备把服务器的 IP 地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
DNS 服务器根据用户 IP 地址,将域名解析成相应节点的缓存服务器 IP 地址,实现用户就近访问。使用 CDN 服务的网站,只需将其域名解析权交给 CDN 的 GSLB 设备,将需要分发的内容注入 CDN,就可以实现内容加速了。
3. CDN 原理
- 挑选最优设备为用户提供服务;
- 如果某个内容被很多用户所需要,它就被缓存到距离用户最近的节点中。
CDN 公司在整个互联网上部署数以百计的 CDN 服务器(Cache),这些服务器通常在运营商的 IDC 中,尽量靠近接入网络和用户。CDN 在 Cache 中复制内容,当内容的提供者更新内容时,CDN 向 Cache 重新分发这些被刷新的内容。CDN 提供一种机制,当用户请求内容时,该内容能够由以最快速度交付 Cache 来向用户提供,这个挑选 "最优" 的过程就叫做负载均衡。被选中的最优 Cache 可能最靠近用户,或者有一条与用户之间条件最好的路径。