静态资源访问的关键点是就近访问。可以考虑在业务服务器的上层加一层特殊缓存,即CDN。
CDN(Content Delivery Network/Content Distribution Network,内容分发网络)。简单来说,CDN 就是将静态的资源分发到,位于多个地理位置机房中的服务器上,因此它能很好地解决数据就近访问的问题,也就加快了静态资源的访问速度。
搭建一个CDN系统需要考虑两点:
可以通过DNS解决域名映射的问题。
DNS(Domain Name System,域名系统)实际上就是一个存储域名和IP地址对应关系的分布式数据库。
域名解析的结果一般有两种:
DNS 分为很多种,有根 DNS,顶级 DNS 等等。除此之外还有两种 DNS 需要特别留意:
域名解析过程是分级的,每一级有专门的域名服务器承担解析的职责。DNS解析过程需要做本地缓存,降低DNS解析过程的响应时间。一个具体的解决思路如下:
GSLB (Global Server Load Balance,全局负载均衡)可以给用户返回一个离着他更近的节点,加快静态资源的访问速度。
GSLB 的含义是对于部署在不同地域的服务器之间做负载均衡,下面可能管理了很多的本地负载均衡组件。其有两方面作用: - 它是一种负载均衡服务器,让流量平均分配使得下面管理的服务器的负载更平均。 - 保证流量流经的服务器与流量源头在地缘上是比较接近的。
是否能够从 CDN 节点上获取到资源还取决于 CDN 的同步延时。
一般会通过CDN厂商的接口将静态资源写入某一节点,然后通过内部同步机制分散同步到每一个节点。这个同步过程存在延迟,一旦无法获取到就不得不从源站获取。所以在使用CDN时需要关注CDN的命中率和源站的带宽情况。