1

前言

这段时间,在工作中遇到了一个CDN导致的图片资源加载的错误,在排查问题的过程中,发现自己对CDN的了解非常的片面,仅仅停留在它能缓存静态资源,提升访问速度的了解中。所以觉得还是非常有必要深入去了解下。

什么是CDN?

CDN的全称是Content Delivery Network,即内容分发网络,是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。————维基百科

CDN的基本工作过程

最简单的CDN网络是由一台CDN服务器和多台缓存服务器构成。
主要工作过程为:

  • 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
  • DN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
  • 用户向CDN的全局负载均衡设备发起内容URL访问请求。
  • CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
  • 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
  • 全局负载均衡设备把服务器的IP地址返回给用户。
  • 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

阿里云CDN访问示意图

为什么需要CDN

根本上的原因是访问速度,访问速度对互联网应用的用户体验,甚至说各种指标(DAU,PV,UV,营收...)都有巨大的影响,任何的互联网企业都渴望自己站点有更快的访问速度和更好的用户体验。而HTTP传输时延对web的访问速度的影响很大(HTTPS更耗时),在绝大多数情况下是起决定性作用的,这是由TCP/IP协议的一些特点决定的。

想要提高访问速度,最直接的做法就是多部署几个服务器在不同的地方,让当前访问用户更靠近服务器。但是多设置几个服务器又会有其他乱七八糟的问题(异地部署,访问一致性,服务管理,成本变高等等)。

这个时候就体现出CDN的作用了。CDN本身是一种公共服务,他本身有很多台位于不同地域、接入不同运营商的服务器,而所谓的使用CDN实质上就是让CDN作为网站的门面,用户访问到的是CDN服务器,而不是直接访问到网站。由于CDN内部对TCP的优化、对静态资源的缓存、预取,加上用户访问CDN时,会被智能地分配到最近的节点,降低大量延迟,让访问速度可以得到很大提升。

最后

掌握CDN工作流程或者基本的原理这种知识,对于一个前端来说,在甩锅的时候更方便。当然最主要是为了解决工作中的问题。

感谢

知乎关于CDN的回答

深度剖析:CDN内容分发网络技术原理

维基百科、百度百科


Charming
154 声望46 粉丝

前端小菜鸡,打杂工程师~~