History

今天去金山网络面试的时候,被问到性能优化,我说了几个。最后说到了CDN,我说要尽量把静态的内容放置到CDN,可是为什么呢?面试官说既然你说到CDN。你就说说它的原理。

之前有看过,可是忘记差点儿相同了。

Summary

按我个人理解来说它是遵循就近原则,给用户找到近期的server来提供用户的静态内容,比方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.

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

description

有比較才有感觉到差别!

1 传统訪问页面方式
在这篇文章What really happens when you navigate to
a URL
中,已经非常清楚告诉我们页面到底是怎样在server和client之间传送的。

简单来说就是:

(1) 用户提交域名
(2) 浏览器对域名解析,找不到对于的IP。再到操作系统,还是没有;再到路由器。再没有就到DNSserver找
(3) 最后找到相应的IP地址,向域名的服务主机发出数据訪问请求
(4) server就返回页面的内容给client
可是在这里的问题就是假设訪问量非常大的站点的话。比方新浪微博、facebook等大型站点,这样子的server肯定会被挤爆了,那怎么办呢?缓冲或者说是存储这样的理念在冯·诺依曼提出之后就特别流行。确实。CDN也是採用缓存的理念
2 CDN缓存后的站点的訪问过程
(1) 用户向浏览器提供要訪问的域名;
(2) 浏览器调用域名解析库对域名进行解析得到CNAME,再解析CNAME域名获取IP地址。在此过程中,使用的全局负载均衡DNS解析,如依据地理位置信息解析相应的IP地址,使得用户能就近訪问;
(3) 这次解析到仅仅是CDNserver的IP地址。浏览器获取这个IP地址就向CDN缓存发送请求;
(4) CDN缓存server依据浏览器提供的要訪问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址。再由缓存server向此实际IP地址提交訪问请求,缓存server就好像是中间人那样子;
(5) CDN缓存server获取内容后,一方面在本地存储,以便client下次訪问。另外一方面就发送给client;
(6) client就把从CDN缓存server返回的内容显示,下次訪问就直接訪问CDN缓存server。

事实上从上面就好像我们的计算机要訪问数据那样子,由于CPU的运算能力非常快。快到内存根本跟不上。

假设CPU每次运算一下就要去内存获取数据的话,那么计算机的效率太低了。

这样子的话。我们设置缓存。可以缓冲两者速度不匹配而导致的效率问题。所以CPU要訪问数据。先到缓存中找,找不到就去内存中找,然后在缓存中加入相应的数据。下次要訪问改数据就直接到缓存中找即可了。

references

内容分发网络百度百科

金山面试CDN的更多相关文章

  1. 技术面试问题汇总第005篇:猎豹移动反病毒工程师part5

    这是我当初接受面试的最后两个问题,当时,那位面试官问我对漏洞了解多少时,我说一点都不懂,问我懂不懂系统内核时,我同样只能说不知道.后来他跟我说,面试的考查重点不在于我所掌握的知识的广度,而是深度.这也 ...

  2. 从苏宁电器到卡巴斯基第26篇:难忘的三年硕士时光 IV

    录课,录课,还是录课 开题结束以后,已经是三月的下旬,当时我在考虑要不要回家,毕竟学校这里也没什么事了,我待在学校还得付出一定的花销.后来我考虑到在家的话,只有晚上才能够录课,而在学校的话,整个白天都 ...

  3. 从苏宁电器到卡巴斯基第23篇:难忘的三年硕士时光 I

    初次接触逆向工程 不知不觉就来到了2013年的9月份,学校开学了,我开始正式体验研究生的生活了.按道理来说,硕士研究生是需要围绕在导师身边,每天朝九晚五地去实验室做项目的.不过我们老师没有项目,也不要 ...

  4. 金山wps的面试经历

    故事从两个月前开始说起吧. 前段时间突然想跳槽,原因也没啥,就是想折腾下,看看外面的世界?有一部分原因是想离家近一些稳定下来,博主上份工作坐标厦门,风景好的简直随便拍照就是大片. 不废话了,机缘巧合, ...

  5. 架构师-盛大许式伟VS金山张宴

    许式伟:作为系统架构师,您一般会从哪些方面来保证网站的高可用性(降低故障时间)? 张宴:很多因素都会导致网站发生故障,从而影响网站的高可用性,比如服务器硬件故障.软件系统故障.IDC机房故障.程序上线 ...

  6. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  7. 【干货分享】前端面试知识点锦集04(Others篇)——附答案

    四.Others部分 技术类 1.http状态码有哪些?分别代表是什么意思? (1).成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求 ...

  8. 【干货分享】前端面试知识点锦集02(CSS篇)——附答案

    二.CSS部分 1.解释一下CSS的盒子模型? 回答一:a.标准的css盒子模型:宽度=内容的宽度+边框的宽度+加上内边具的宽度b.网页设计中常听的属性名:内容(content).填充(padding ...

  9. 最常见的 20 个 jQuery 面试问题及答案

    jQuery 面试问题和答案 JavaScript 是客户端脚本的标准语言,而 jQuery 使得编写 JavaScript 更加简单.你可以只用写几行的jQuery 代码就能实现更多的东西. 它是最 ...

随机推荐

  1. 大数据学习——spark-steaming学习

    官网http://spark.apache.org/docs/latest/streaming-programming-guide.html 1.1.  用Spark Streaming实现实时Wor ...

  2. Android library projects cannot be launched解决方法

    着了一个例子项目,总是报标题说的错误. 解决方法如下: 红圈的地方,勾掉. 貌似如果你这个项目是作为一个被引用的project的话, 要勾上这个.单独作为一个app的话,不能勾选这个. --不懂,瞎写 ...

  3. XDEBUG 远程调试

    我的PHP环境是安装在虚拟机中.真机系统用的是windows.那么我要用XDEBUG调试代码,就得用XDEBUG的远程调试功能. 首先要给远程环境中安装XDEBUG扩展,具体方法:http://www ...

  4. javascript学习笔记 - 引用类型 基本包装类型

    六 基本包装类型 Boolean,Number,String 这三个引用类型亦称为基本包装类型,与基本的数据类型boolean,number,string相关联.为了方便操作这些基本类型的数据. 引用 ...

  5. 设计模式(二十二)模板方法模式 Template

    泡茶?泡咖啡? 我们用泡茶和泡咖啡两种行为来引入这一设计模式. 思考一下“泡茶”的过程: 煮水 -> 用沸水泡茶叶 -> 把茶倒进杯子 -> 放点柠檬之类的佐料. 然后再看一下“泡咖 ...

  6. 【Luogu】P2303Longge的问题(莫比乌斯反演)

    就让我这样的蒟蒻发一个简单易想的题解吧!!! 这题我一开始一看,woc这不是莫比乌斯反演么,推推推,推到杜教筛,输出结果一看不对 emmm回来仔细想想……woc推错了? 然后撕烤半天打了个暴力,A了 ...

  7. iOS-sqlite3&FMDB使用代码示范

    数据库操作是我们使用十分频繁的一份操作,在iOS中如何使用数据库,使用什么数据库,是我们不得不考虑的一个问题. 小型数据我们可以使用plist文件,或者NSUserDefaults存储.数据量比较多得 ...

  8. java面试题之HashMap和TreeMap的区别

    HashMap和TreeMap的区别 相同点: 都是以key和value的形式存储: key不可以重复: 都是线程不安全的: 不同点: HashMap的key可以为空 TreeMap的key值是有序的 ...

  9. vue-cli脚手架每行注释--摘抄

    .babelrc文件 { // 此项指明,转码的规则 "presets": [ // env项是借助插件babel-preset-env,下面这个配置说的是babel对es6,es ...

  10. ThinkPHP 条件是一个表里面的两个字段比较

    ThinkPHP 条件是一个表里面的两个字段比较 今天群里有人问,thinkphp框架,条件是一个表里的两个字段,怎么查询. 然后就做了下测试: 比如查询出 手机号就是微信号 的用户: (1)首先,正 ...