cdn实现原理

在描述CDN的实现原理,让咱们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差异:浏览器

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

由上可见,用户访问未使用CDN缓存网站的过程为:服务器

1)、用户向浏览器提供要访问的域名;网络

2)、浏览器调用域名解析函数库对域名进行解析,以获得此域名对应的IP地址;负载均衡

3)、浏览器使用所获得的IP地址,向域名的服务主机发出数据访问请求;ide

4)、浏览器根据域名主机返回的数据显示网页的内容。函数

经过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。CDN网络是在用户和服务器之间增长Cache层,如何将用户的请求引导到Cache上得到源服务器的数据,主要是经过接管DNS实现,下面让咱们看看访问使用CDN缓存后的网站的过程:网站


流程图代理

经过上图,咱们能够了解到,使用了CDN缓存后的网站的访问过程变为:域名

1)、用户向浏览器提供要访问的域名;

2)、浏览器调用域名解析库对域名进行解析,因为CDN对域名解析过程进行了调整,因此解析函数库通常获得的是该域名对应的CNAME记录,为了获得实际IP地址,浏览器须要再次对得到的CNAME域名进行解析以获得实际的IP地址;在此过程当中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。

3)、这次解析获得CDN缓存服务器的IP地址,浏览器在获得实际的IP地址之后,向缓存服务器发出访问请求;

4)、缓存服务器根据浏览器提供的要访问的域名,经过Cache内部专用DNS解析获得此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;

5)、缓存服务器从实际IP地址得获得内容之后,一方面在本地进行保存,以备之后使用,另外一方面把获取的数据返回给客户端,完成数据服务过程;

6)、客户端获得由缓存服务器返回的数据之后显示出来并完成整个浏览的数据请求过程。

经过以上的分析咱们能够获得,为了实现既要对普通用户透明(即加入缓存之后用户客户端无需进行任何设置,直接使用被加速网站原有的域名便可访问,又要在为指定的网站提供加速服务的同时下降对ICP的影响,只要修改整个访问过程当中的域名解析部分,以实现透明的加速服务,下面是CDN网络实现的具体操做过程。

1)、做为ICP,只须要把域名解释权交给CDN运营商,其余方面不须要进行任何的修改;操做时,ICP修改本身域名的解析记录,通常用cname方式指向CDN网络Cache服务器的地址。

2)、做为CDN运营商,首先须要为ICP的域名提供公开的解析,为了实现sortlist,通常是把ICP的域名解释结果指向一个CNAME记录;

3)、当须要进行sortlist时,CDN运营商能够利用DNS对CNAME指向的域名解析过程进行特殊处理,使DNS服务器在接收到客户端请求时能够根据客户端的IP地址,返回相同域名的不一样IP地址;

4)、因为从cname得到的IP地址,而且带有hostname信息,请求到达Cache以后,Cache必须知道源服务器的IP地址,因此在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;

5)、在维护内部DNS服务器时,还须要维护一台受权服务器,控制哪些域名能够进行缓存,而哪些又不进行缓存,以避免发生开放代理的状况。