金山面试CDN

History

今天去金山网络面试的时候,被问到性能优化,我说了几个,最后说到了CDN,我说要尽可能把静态的内容放置到CDN,可是为何呢?面试官说既然你说到CDN,你就说说它的原理。以前有看过,可是忘记差很少了。web

Summary

按我我的理解来讲它是遵循就近原则,给用户找到最近的服务器来提供用户的静态内容,好比CSS文件、图像等,来提升用户访问网站的响应速度。面试

A content delivery network (CDN) is a system of distributed servers (network) that deliver webpages and other Web content to a user based on the geographic locations of the user, the origin of the webpage and a content delivery server.This service is effective in speeding the delivery of content of websites with high traffic and websites that have global reach. The closer the CDN server is to the user geographically, the faster the content will be delivered to the user. CDNs also provide protection from large surges in traffic.

上面说了内容分发网络是基于用户的地理位置、网页的源地址还有就是一个内容分发服务器。距离CDN服务器越近的用户,就能越快地获取到静态内容浏览器

description

有比较才有感受到区别!缓存

1 传统访问页面方式
在这篇文章What really happens when you navigate to a URL中,已经很清楚告诉咱们页面到底是如何在服务器和客户端之间传送的。简单来讲就是:
(1) 用户提交域名
(2) 浏览器对域名解析,找不到对于的IP;再到操做系统,仍是没有;再到路由器,再没有就到DNS服务器找
(3) 最后找到对应的IP地址,向域名的服务主机发出数据访问请求
(4) 服务器就返回页面的内容给客户端
可是在这里的问题就是若是访问量很大的网站的话,好比新浪微博、facebook等大型网站,这样子的服务器确定会被挤爆了,那怎么办呢?缓冲或者说是存储这种理念在冯·诺依曼提出以后就特别流行,确实,CDN也是采用缓存的理念
2 CDN缓存后的网站的访问过程
(1) 用户向浏览器提供要访问的域名;
(2) 浏览器调用域名解析库对域名进行解析获得CNAME,再解析CNAME域名获取IP地址,在此过程当中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问;
(3) 此次解析到只是CDN服务器的IP地址,浏览器获取这个IP地址就向CDN缓存发送请求;
(4) CDN缓存服务器根据浏览器提供的要访问的域名,经过Cache内部专用DNS解析获得此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求,缓存服务器就好像是中间人那样子;
(5) CDN缓存服务器获取内容后,一方面在本地存储,以便客户端下次访问;另一方面就发送给客户端;
(6) 客户端就把从CDN缓存服务器返回的内容显示,下次访问就直接访问CDN缓存服务器。
其实从上面就好像咱们的计算机要访问数据那样子,由于CPU的运算能力很快,快到内存根本跟不上。若是CPU每次运算一下就要去内存获取数据的话,那么计算机的效率过低了。这样子的话,咱们设置缓存,可以缓冲二者速度不匹配而致使的效率问题。因此CPU要访问数据,先到缓存中找,找不到就去内存中找,而后在缓存中添加对应的数据,下次要访问改数据就直接到缓存中找就好了。

references

内容分发网络百度百科