CDN工作原理分析

时间:2024-03-16 08:33:55

一、什么CDN

    首先我们假设一个场景,以淘宝为例。如果我们每次打开淘宝页面时,所有的信息都需要从源站服务器获得,可能同时有千万级的用户同时向源站服务器请求获取数据,那么有极大可能会发生严重的网络拥塞,用户访问数越多,拥塞越严重,网站就会在最需要向用户提供服务的时候失去用户。

    如果在用户的附近就有一个节点,当用户请求数据时,优先从离它最近的节点获得数据,显而易见,用户访问网站的响应速度也得到很大的提高。

    CDN就可以理解为这些离用户最近的“边缘”节点,CDN(content delivery network)是在现有internet上增加一层新的网络架构,将网站的内容分布到离用户最近的网络“边缘”,使用户可以就近取得所需的内容,提高响应速度。

    那么CDN的优势也就很明显了:1)实现了跨地区、跨运营商的访问,大大降低了访问时延;2)大部分请求在“边缘”节点完成,起到了分流的作用,减轻了源站的负担。

    目前CDN都以缓存网站中的静态数据为主,如CSS,JS,图片和静态页面等数据,用户从主站服务器请求到动态内容后,再从CDN中下载静态数据,从而加速网页数据内容的下载速度,如淘宝上90%的数据都是由CDN来提供的。

二、CDN架构及工作原理

    CDN工作原理分析

    以上图为例,我们分析CDN的访问步骤:

    step1:用户向localDNS发起请求查询输入域名对应的IP地址;

    step2:localDNS迭代向rootDNS查询,rootDNS返回权限DNS记录;

    step3:获得权限DNS后,localDNS向权限DNS发起域名解析请求;

    step4:权限DNS通常会将域名CNAME(别名解析)到另一个域名,这个域名最终会被指向CDN网络中的智能DNS负载均衡系统;

    step5:DNS负载均衡系统通过一些智能算法,将最合适的CDN节点IP地址返回给localDNS;

    step6:localDNS将获得的IP地址返回给用户;

    step7:用户得到节点的IP地址后,向该节点发起访问请求;

    step8:CDN节点返回请求文件,如果该节点中请求的文件不存在,就会再回到源站获取这个文件,然后返回给用户。

    从以上步骤可以看出,CDN的两个关键技术在于:

    1)DNS调度技术:把不同运营商、不同地区的用户调度到离用户最优的CDN节点上;

    2)CDN节点缓存代理技术:缓存即当用户向节点访问未过期的数据时,节点直接返回用户数据,提高响应速度;代理即当前节点没有用户请求的数据时,节点代理用户向源站请求数据然后返回给用户。

    每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器。负载均衡设备负责维护节点中各个cache的负载均衡,保证节点的工作效率,此外,负载均衡设备还负责收集节点和外部环境的信息,保持与全局负载DNS的通信,实现全局的负载均衡。

    负载均衡技术还没有做深入研究,后期补上,move on!!!

————————————————————————————————————————————————————

参考博客相关链接:

    https://www.cnblogs.com/wish123/p/5540177.html

    https://www.cnblogs.com/tinywan/p/6067126.html

    《深入分析Java web技术内幕》