what
简单地说,内容分发网络(content delivery network)就是对特定内容进行分发的专门网络。这个网络中的节点可以是 Web 服务器、反向代理或缓存。
最简单的 CDN 由一个DNS服务器和几台缓存服务器组成:
- 当用户点击网站页面上的内容 URL ,经过本地 DNS 系统解析, DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器。
- CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。
- 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。
- CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容 URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的 IP 地址。
- 全局负载均衡设备把服务器的 IP 地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
why
CDN 可以帮助网站更快地加载。分散网络流量,避免拥塞。分发内容,使之更靠近终端用户,这样从服务器到客户端的传输时间就变短了。
减小请求压力
通过 CDN 向用户传输静态资源文件,可以降低我们自身服务器的请求压力。
提高访问速度
大多数 CDN 在全球都有服务器,所以 CDNs 上的服务器在地理位置上,可能比你自己的服务器更接近你的用户。对于 TCP 传输而言,TCP 的速度
throughput
会受到延迟时间latency
与数据包漏失率packet loss
影响。为了改善这些负面因素,CDN 通常会指派较近、较顺畅的服务器节点将数据传输给用户。虽然距离并不是绝对因素,但这么做可以尽可能提高性能,用户将会觉得比较顺畅。这使得一些比较高带宽的应用(传输高清画质的视频)更容易推动。可靠性
有异地备援。当某个服务器故障时,系统将会调用其他邻近地区的服务器服务,进而提供接近100%的可靠度。
CDNs已经配置了恰当的缓存设置。使用 CDN 节省了在你的服务器中对静态资源文件的配置。