发布日期:2020-06-03 16:54:57

大部分云服务商都会提供CDN服务。CDN服务即为Content Delivery Network(内容分发网络)。其主要目的是使用户就近获取所需内容,从而提高用户访问响应速度,降低网络拥塞。

官方解释:

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

那么CDN是如何实现的呢?

1. 这个问题可以先从如何申请和配置CDN服务来理解。

就腾讯云作为例子,腾讯云提供的CDN服务,可以参考官方文档《从零开始配置CDN》。

主要步骤有三:

  • 开通CDN服务
    • 腾讯云内容分发网络(CDN)划分为中国境内中国境外两个服务区域。两个服务区域均提供两种计费方式:流量计费和带宽计费,您可根据实际业务状态选择合适的计费方式。
  • 接入域名
    • 接入加速域名。CDN 通过加速域名把源站资源缓存到 CDN 加速节点,用户可就近获取所需资源,实现资源访问加速。您的域名接入 CDN 后,系统会为您自动分配一个以 .cdn.dnsv1.com 为后缀的 CNAME 域名,可在 CDN 控制台查看。CNAME 域名不能直接访问,您需要在域名服务提供商处完成 CNAME 配置,配置生效后,即可享受 CDN 加速服务。
  • 配置CNAME(CNAME = Canonical Name, 又叫别名记录)
    • 您的域名接入 CDN 后,还需要在域名服务提供商处完成 CNAME 配置,配置生效后,即可享受 CDN 加速服务。

CNAME就是域名到域名的映射。

 

2. CDN如何工作的呢?

在没有使用CDN时,用户请求服务时一般都使用使用域名。这时就会有一个域名解析的过程。通过域名DNS服务器获取server的IP地址后,用户就可以直接向服务器请求内容。

①用户在自己的浏览器中输入要访问的网站域名。

②浏览器向本地DNS服务器请求对该域名的解析。

③本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。

④本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。

⑤浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址。

⑥浏览器向服务器请求内容。

⑦服务器将用户请求内容传送给浏览器。

不使用CDN的时候所有的内容请求都指向了同一个IP服务器。这样该IP服务器就会存在很多请求,负载较高。当这些请求同时发生时就会高并发高负载,响应速度就会下降。为了解决这个问题,就需要负载均衡,而CDN服务就是一种负载均衡。将请求发布到离用户较近的网络节点。通过CDN服务商部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商、跨地域的用户覆盖。CDN将内容推送到网络边缘,大量的用户访问被分散在网络边缘,不再构成网站出口、互联互通点的资源挤占,也不再需要跨越长距离IP路由,即减少了源服务器的资源占用,企业大大提升了用户访问的响应时间,提高用户体验。

 

在使用了CDN后:

①当用户点击网站页面上的内容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,就可以实现网站内容加速。

CDN工作原理

 

 

3. CDN中的C(Content)。 

在了解了CDN的工作原理后,我们还需要进一步了解CDN中的C(Content)。Content可以分为静态内容和动态内容。静态内容很容易缓存在各个网络边缘节点,内容不变,一次拉取缓存后即可。对于动态内容CDN,需要思考下面的问题:由于内容是动态的,每次相同请求,返回内容可能不一样。这样每次请求必须访问一次源站以获取最新内容,这样访问CDN中的网络边缘节点有意义么?

参考文档:

发表评论