CDN原理以及图解
  hkpisnbYHqKn 2023年11月02日 48 0

为什么要有网络加速

互联网有大大小小的网络组成,尤其国内环境,典型的几十运营商网络,这些网络在内部连接很快,但是网络之间延迟很大,必须夸网传输,另外还存在路由器,交换机,网关等等节点,都会带来延迟,跨节点越多,影响就会成倍增加


什么是CDN

CDN (全称 Content Delivery Network),即内容分发网络。

CDN是将源站内容分发至全国所有的节点,从而缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性的技术。它能够有效解决网络带宽小、用户访问量大、网点分布不均等问题。CDN就是根据用户位置分配最近的资源,于是,用户在上网的时候不用直接访问源站,而是访问离他“最近的”一个 CDN 节点(也叫做“边缘节点”、edge node),其实就是缓存了源站内容的代理服务器。


好处

  • 加速网站的访问
  • 为了实现跨运营商、跨地域的全网覆盖
  • 保障网站安全
  • 异地备份
  • 节约成本
  • 专注业务


CDN的分发系统架构和原理

CDN原理以及图解_缓存

CDN的分发系统的架构。CDN系统的缓存,也是一层一层的缓存。CDN就要通过主动或被动分发源站的内容,利用缓存代理技术,把源站内容逐级缓存到网络的每一个节点上,这样用户上网就不用直接访问源站,而是访问离他“最近的”一个 CDN 节点,其实就是缓存了源站内容的代理服务器,这样一来就省去了“长途跋涉”的时间成本,实现了“网络加速”。


CDN网络的组成

全局负载均衡和缓存系统是关键组成部分CDN网络主要由以下几部分组成:内容缓存模块、内容分发管理模块、GSLB模块和CDN管理模块,其中全局负载均衡和缓存系统是关键组成部分


内容缓存

用于缓存内容实体和对缓存内容进行组织和管理。当有用户访问该客户内容时,直接由各缓存服务器响应用户的请求。

“命中”就是指用户访问的资源恰好在缓存系统里,可以直接返回给用户;“回源”则正相反,缓存里没有,必须用代理的方式回源站取。相应地,也就有了两个衡量 CDN 服务质量的指标:“命中率”和“回源率”。命中率就是命中次数与所有访问次数之比,回源率是回源次数与所有访问次数之比。显然,好的 CDN应该是命中率越高越好,回源率越低越好。现在的商业 CDN 命中率都在 90% 以上,相当于把源站的服务能力放大了 10 倍以上。

1.cdn一般有专用的高速网络直连源站,或者是动态路径优化,所以动态资源回源要比通过公网速度快很多。

2.有种叫“边缘计算”的技术,就是把计算动态资源的代码和数据也放在cdn的节点上,这样就可以在cdn里获取动态资源不用回源站了。


内容分发管理

主要负责核心Web服务器内容到CDN网络内缓存设备的内容推送、删除、校验以及内容的管理、同步。


GSLB设备

则实现CDN全网各缓存节点之间的资源负载均衡,它与各节点的SLB设备保持通信,搜集各节点缓存设备的健康状态、性能、负载等,自动将用户指引到位于其地理区域中的最近服务器或者引导用户离开拥挤的网络和服务器。还可以通过使用多站点的内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。

它是 CDN 的“大脑”,GSLB 最常见的实现方式是“DNS 负载均衡。主要的职责是当用户接入网络的时候在 CDN 专网中挑选出一个“最佳”节点提供服务,解决的是用户如何找到“最近的”边缘节点,对整个 CDN 网络进行“负载均衡”。CDN 服务商维护着一个巨大而精确的 IP 地址数据库,能根据用户客户端的 IP 判断出客户端所在的地区、网络运营商等信息。CDN 服务的 DNS 域名可以根据用户客户端的 IP 返回一个距离它最近的缓存服务器 IP


CDN管理系统

实现对全网设备的管理,对系统的配置。它不仅能对系统中的各个设备进行实时监控,对各种故障产生相应的告警,还能实时观测到系统中总的流量以及各节点的流量,并保存在系统的数据库中,作为统计分析的基础数据,并对日志文件进行管理、报告,作为计费的基础数据。


CDN工作流程

用户访问某个站点的内容时,若该站点使用了CDN网络,则在用户会在域名解析时获得CDN网络GSLB设备的IP地址。GSLB设备根据其预设的选择策略(如,地理区域、用户时间等)为用户选择最合适的内容缓存节点,并且使用某种方式(如,基于DNS、基于HTTP重定向、基于IP欺骗的方式等)导引用户访问所选的内容缓存节点。

用户继续向缓存节点发出请求,若缓存中包含请求的内容,则直接返回给用户,否则从核心Web服务器中获取该内容,缓存后返回给用户。这样当用户再次访问相同内容或其他用户访问相同内容时,可以直接从缓存中读取,提高了效率。

在没有应用CDN时,我们使用域名访问某一个站点时的路径为

用户提交域名→浏览器对域名进行解释→DNS 解析得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复

应用CDN后,DNS 返回的不再是 IP 地址,而是一个CNAME(Canonical Name ) 别名记录,指向 CDN的全局负载均衡 GSLB, GSLB实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键


CDN的全局负载均衡 GSLB

由于没有返回IP地址。返回CNAME,于是本地DNS会向负载均衡系统再发送请求 ,则进入到CDN的全局负载均衡系统GSLB 进行智能调度:

  • 看用户的 IP 地址,查表得知地理位置,找相对最近的边缘节点
  • 看用户所在的运营商网络,找相同网络的边缘节点
  • 检查边缘节点的负载情况,找负载较轻的节点
  • 其他,比如节点的“健康状况”、服务能力、带宽、响应时间等

结合上面的因素,得到最合适的边缘节点,然后把这个节点返回给用户,用户就能够就近访问CDN的缓存代理

CDN原理以及图解_服务器_02

图解:CDN工作流程的一个示例

CDN原理以及图解_CDN_03

在没有CDN的情况下,用户向浏览器输入www.web.com这个域名,客户端访问本地DNS服务器的时候,如果本地DNS服务器有缓存,则返回网站的地址;如果没有,递归查询到网站的权威DNS服务器,这个权威DNS服务器是负责web.com的,它会返回网站的IP地址。

本地DNS服务器缓存下IP 地址,将IP地址返回,然后客户端直接访问这个IP地址,就访问到了这个网站。

然而有了 CDN之后,情况发生了变化

在web.com这个权威DNS服务器上,会设置一个CNAME别名,指向另外一个域名www.web.cdn.com,返回给本地DNS服务器。

当本地DNS服务器拿到这个新的域名时,需要继续解析这个新的域名。这个时候,再访问的就不是 web.com 的权威DNS服务器了,而是web.cdn.com的权威DNS服务器,这是CDN自己的权威 DNS 服务器。在这个服务器上,还是会设置一个CNAME,指向另外一个域名,也即CDN网络的全局负载均衡器。

接下来,本地DNS服务器去请求CDN的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:

  • 根据用户IP地址,判断哪一台服务器距用户最近;
  • 用户所处的运营商;
  • 根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需的内容;
  • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。

基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的IP地址。

本地DNS服务器缓存这个IP地址,然后将IP返回给客户端,客户端去访问这个边缘节点,下载资源。 缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。


参考文献

https://www.cnblogs.com/crazymakercircle/p/14978513.html

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  COAWCwhiWpsR   2023年12月10日   30   0   0 DNS
  Yoru5qB4TSKM   2023年12月10日   39   0   0 服务器重启IP
  YKMEHzdP8aoh   2023年12月11日   63   0   0 DNSidePod