什么是CDN
CDN,全称Content Delivery Network,即内容分发网络,其是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。
CDN的应用很广泛,支持多行业、多场景的内容加速,如:图片小文件、大文件下载、音视频点播、直播流媒体、全站加速、安全加速等。
CDN工作原理
请看下图:
我们假设 www.a.com 是通过 CDN 加速的域名,开始使用CDN 加速服务后,当终端用户(北京)发起HTTP请求时,后续的处理流程如下:
- 当终端用户(北京)向域名 www.a.com 下的指定资源发起请求时,首先向本地DNS(LDNS)发起域名解析;
- LDNS 检查缓存中是否存在 www.a.com 的 IP 地址记录。如果有,就直接返回给用户;否则,向授权 DNS 发起查询;
- 当授权 DNS 解析 www.a.com 时,返回域名CNAME www.a.tbcdn.com 对应IP地址;
- 域名解析请求发送到 DNS 调度系统,返回调度系统为该请求分配的最佳节点 IP 地址;
- LDNS 拿到 DNS 解析后返回的IP地址;
- 用户获取到解析后的 IP 地址;
- 最后用户向得到的 IP 地址发起该资源的访问请求。
如果该 IP 地址对应的节点已经缓存了目标资源,那么就会将数据直接返回给用户,如图中步骤7和8,此时请求结束。
如果该 IP 地址对应的节点未缓存目标资源,那么节点就会向源站发起对资源的请求。拿到资源后,结合用户配置的缓存策略,将该资源缓存至节点(如图中的北京节点),并返回给用户,此时请求结束。
通过上述说明,可以得出的结论是:
(1)CDN 的加速资源其实是跟域名绑定的;
(2)通过域名访问资源,首先是通过 DNS 查找离用户最近的 CDN 节点(边缘服务器)的 IP;
(3)通过 IP 访问目标资源时,如果 CDN 上没有缓存过,就会到源站请求资源,之后=缓存到 CDN 节点,因此,当用户下一次访问时,这个 CDN 节点就已经有对应资源的缓存了。
最后,如果粗浅的解释CDN的话,或许可以用这样这样的更直接的方式来讲:
“如果我们把某种网络资源,看成是某种路途遥远曲折但却是很多人都喜欢吃的美食,CDN就是把他们一次性的空降到我们面前(且假设可以共享并取之不尽),让我们可以轻而易举的大快朵颐”。
可以说,CDN 本质是缓存,而内核中支撑它的互联网精神是共享。