1.CDN 定义:
CDN的全称是Content Delivery Network,即[内容分发网络]。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。【百度百科】
2.CDN往往被用来存放静态资源
所谓静态资源就像JS CSS 图片等不需要业务服务器进行计算得到的资源。而动态资源, 顾名思义就是需要后端实时动态生成的资源。
3. CDN基本工作流程
CDN是如何工作的呢?让我们先看看没有CDN服务时,一个网站是如何向用户提供服务的。
今天我们看到的网站系统基本上都是基于B/S架构的。B/S架构,即Browser-Server(浏览器 服务器)架构,是对传统C/S架构的一种变化或者改进架构。在这种架构下,用户只需使用通用浏览器,主要业务逻辑在服务器端实现。B/S架构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript等)和ActiveX等技术,在通用浏览器上实现了C/S架构下需要复杂的软件才能实现的强大功能。
用户通过浏览器等方式访问网站的过程如图1-2所示。
①用户在自己的浏览器中输入要访问的网站域名。
②浏览器向本地DNS服务器请求对该域名的解析。
③本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
④本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。
⑤浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址。
⑥浏览器向服务器请求内容。
⑦服务器将用户请求内容传送给浏览器。
在网站和用户之间加入CDN以后,用户不会有任何与原来不同的感觉。最简单的CDN网络有一个DNS服务器和几台缓存服务器就可以运行了。一个典型的CDN用户访问调度流程如图1-3所示。
①当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
②CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
③用户向CDN的全局负载均衡设备发起内容URL访问请求。
④CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
⑤区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
⑥全局负载均衡设备把服务器的IP地址返回给用户。
⑦用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
DNS服务器根据用户IP地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问。使用CDN服务的网站,只需将其域名解析权交给CDN的GSLB设备,将需要分发的内容注入CDN,就可以实现内容加速了。
这段转载https://book.51cto.com/art/201205/338756.htm
4. CDN回源机制以及更新
什么是回源?
当CDN缓存服务器中没有符合客户端要求的资源时,缓存服务器会请求上一级的缓存服务器,直到取到为止。如果最后到中心服务器仍没有,则中心服务器向源站请求,这一机制称为回源。
CDN什么时候会回源呢?
①缓存服务器没有该资源
②资源过期
③访问的资源设置了不缓存策略
CDN 如何判断资源过期?
CDN是通过http 请求头部参数来判断资源是否过期,这点和http协议一致,具体可参考http协议,这里不详谈。
CDN如何更新资源?
CDN更新资源分主动和被动两种方式。
被动方式就是上面提到过的回源机制,在回源的途中会更新节点上的缓存资源。
主动是指主动刷新CDN,把源站的资源推送给CND。
更新CDN注意点:CDN的节点和地域以及运营商相关,CDN上的文件生命周期和当地用户访问的时间节点有关,当源站的资源有变化,不主动刷新CDN的情况下,随着时间推移,各CDN节点的资源会出现不一致的情况,所以,每次源站有变动时,是需要做CDN的主动刷新。