CDN
核心理念:就近访问数据
CDN 分发系统架构
回溯
由于边缘节点数目比较多,但是每个集群规模比较小,不可能缓存下来所有东西,因而可能无法命中,这样就会在边缘节点之上。有区域节点,规模就要更大,缓存的数据会更多,命中的概率也就更大。在区域节点之上是中心节点,规模更大,缓存数据更多。如果还不命中,就只好回源网站访问了。
CDN 可缓存的内容
- 静态资源:图片、CSS、JS、HTML 文件、流媒体等
- 动态数据:缓存动态数据
如何找到合适的边缘节点
基于 DNS 的全局负载均衡。
根据用户 IP、所处的运营商、请求 URL 中携带的参数、服务器的负载情况等综合分析后,全局负载均衡服务器返回一台缓存服务器的 IP 地址。
动态资源如何缓存
- 边缘计算:动态数据生成的计算、逻辑、存储等,也放到边缘节点,然后定时地从数据源同步存储的数据等内容
- 路径优化:源站到边缘节点的路径经过优化 (调整 TCP 参数、多路复用、数据压缩),采用更为可靠的路径来传输
CDN 挂掉怎么办
为了防止 CDN 挂掉,引入的时候要加入一个判断:
<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
这段代码第一行很简单就是你正常引入 cdn 的地址。下面一行的话就是首先判断 Windows.jQuery
是否存在;也就是说判断一下这个CDN是不是挂掉了,如果没有挂掉,那么就直接使用,如果挂掉了,那么就要在后面引入自己的本地资源库。这样就可以保证在可以使用 cdn 的时候使用 cdn 不可以使用的时候就加载本地的。