CDN 和 电商系统的分布式仓储系统一样,分为中心节点、区域节点、边缘节点,数据缓存在离用户最近的位置。
客户端如何找到相应的边缘节点?
用户向浏览器输入 www.web.com,web.com 这个权威 DNS 服务器 ,会设置一个 CNAME 别名,指向另外一个域名 www.web.cdn.com,返回给本地 DNS 服务器。
本地 DNS 服务器再访问 web.cdn.com 的权威 DNS 服务器。这个服务器上,还会设置一个 CNAME,指向 CDN 全局负载均衡器。
全局负载均衡器为用户选择一台何时的缓存服务器,依据为:
- 根据用户 IP 地址,判断哪一台服务器距离用户最近;
- 用户所处的运营商;
- 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上由用户所需的内容;
- 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
如果全局负载均衡器返回的服务器上没有用户想要的内容,则这台服务器向上一级缓存服务器请求内容,直到追溯到网站的源服务器。
CDN 缓存的内容
对于流媒体,预先缓存,也可预先推送到用户的客户端。很多 CDN 还提供预处理,如转码等。解决防盗链问题,防止流媒体被盗走。
对于静态页面,多采用主动推送模式,将热点数据推送到边缘节点。
对于动态的数据,有两种模式:
1、边缘计算模式
定时从源同步数据,在边缘计算结果。
2、路径优化模式
- 规划链路,选择一个可靠,使用类似专线的方式访问。
- 调整 TCP 参数,提供数据传输速率。
- 多个请求复用一个连接。