CDN是什么,它在web服务的哪个环节起到怎样的作用?

一.背景

业务开发中了解到获取很多数据都需要通过CDN来实现,比如我想拿一条数据,调用CDN的接口,结果返回给我一个List,其中每个都一样。这是为什么呢,带着这样的疑问,打算了解,介绍一下CDN的概念,使用。


二.CDN概念介绍

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

  • 是什么:构建在现有网络基础之上的智能虚拟网络
  • 怎么用:依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块
  • 好处:就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率

CDN是什么,它在web服务的哪个环节起到怎样的作用?
工作流程可以总结为:当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相应网站的内容。


三.CDN的原理

  • 有一道经典面试题:输入www.baidu.com后会发生什么?

这道题就是先dns解析拿ip地址,再从应用层生成http请求一直到物理层传输,再到服务端一层一层拆包处理,最后返回html页面。具体可以看本人的文章:计算机网络部分


网站接入CDN之后

CDN是什么,它在web服务的哪个环节起到怎样的作用?

①当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器

②CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。

③用户向CDN的全局负载均衡设备发起内容URL访问请求。

④CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

⑤区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

⑥全局负载均衡设备把服务器的IP地址返回给用户。

⑦用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

总结

CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现。Cache可能是公司的一个中转设备,也可能是外界CDN服务商提供的服务器。