文档章节

程序员常说的CDN是什么?

晚餐吃什么
 晚餐吃什么
发布于 2016/09/29 19:58
字数 1179
阅读 8
收藏 0

程序员每天提及的无数词当中,有一个是「CDN」,Ta的中文名是「内容分发网络」,读中文是令人蒙逼的,英文名是Content Delivery Network。

 

CDN有啥用呢?它主要用来解决什么问题呢?它的原理大概是怎么样的呢?

 

我们先拆解下这三个名词。

 

CDN专注于「内容」,也就是CDN的C所代表的Content,专注于静态资源的分发和访问,比如一张图片,一个文本文件,一个视频,一个CSS,一个JS等等,任何以文件形式存储的,为了提高在互联网上的访问速度和质量,都可以将这个资源部署在CDN这个网络上。

 

CDN动作是「分发」,也就是如何让刚才提到的那些「内容」快速的部署在这个网络中,从而快速为用户服务,其实还有一层更重要的含义是用户的快速访问与就近接入,分发的目的是为了用户更好的体验。

 

CDN落定于「网络」,是部署于全国或者全世界的一大堆服务器,这些服务器基于当前互联网的基础架构在其上层再构成一个网络,这个网络专为资源分发而生。

 

解释清楚了这三个词,我们可以推导出CDN的作用是:CDN厂商构建了一个基于互联网数量巨大的服务器,专注于内容和资源分发,方便用户快速访问,提升用户体验的一个内容网络。

 

为什么CDN专注于提供这项服务有不错的市场呢?或者说没有CDN网络,会发生什么呢?

 

首先要说的是应用服务器和资源服务器应该解耦,也就是应用服务器只处理逻辑,而资源服务器存放内容或者叫资源。术业有专攻,如果混在一起,会拖慢应用服务器的速度,如果没有CDN来专门处理资源,那所有的资源部署可能会离用户很远,保证不了体验,专业的CDN服务商专注于这里,并且规模也让成本不断下降,就像许多公司周边产品都是外包出去,自己也可以做,只不过专门生产礼品的公司会更有效率、更专业、价格也更低、不耗费自己公司的人力资源。

 

假设你在创业,那如果你只租用了一台服务器,并把资源也放在这个服务器上,那和把资源放在CDN上对于全国用户的体验会差很远,假设服务器在北京,那广东的用户要走更长的路,而且还处理不了跨运营商访问等等一系列问题。

 

那CDN的原理是什么呢?为什么用户可以接入离他最近的服务器呢?这个问题以前叙述过,请出门左转《就近接入-怎样让用户找到最近的机房》,主要是利用了DNS来判断用户位置,再返回给用户最近的机房的服务器的资源地址。

 

肯德基的总部在美国,可是你家楼下也有一家肯德基,并且汉堡包是一模一样的,这就是CDN(这个比喻来自知乎,觉得非常的恰当)。肯德基部署了很多个CDN在世界各地提供服务,用户都是找到最近的店,这个计算过程就是刚才讲的「就近接入」。

 

在一个商圈有两家肯德基,有一家组织活动,鸡腿随便吃,所以顾客全部涌到这家店,已经水泄不通,另一家店则门可罗雀。这个时候CDN的调度功能就要发挥作用了,另一家店也发布了一个消息说,买一个汉堡,打五折。这个时候,在第一家店抢不上鸡腿的顾客,马上跑去了第二家店,这个时候两个店的流量处于均衡状态。这就是CDN的调度。

 

美国肯德基总部研发了一个新菜,叫「回锅肉汉堡」,这个时候总部要把这个「内容」向全世界分发,让每一个分店,都能开始卖回锅肉汉堡,好让新老产品能够并驾齐驱,这个就是内容分发网络的「分发」。这个时候你要吃回锅肉汉堡的时候,直接去你家楼下就可以了。

 

总结一下,CDN是一种资源的分布式存放和备份的方法。

本文转载自:http://chuansong.me/n/471619651833

共有 人打赏支持
晚餐吃什么
粉丝 0
博文 8
码字总数 2072
作品 0
珠海
程序员
私信 提问
.Java程序员在企业做什么工作?

什么是程序员? 程序员的概念在这里就不说了,想知道的可以看百度百科,这种词的定义搬过来没有什么意义,在行业内,程序员有一个别名“玩俄罗斯方块的”,确实很形象,但是我们也要理解真正...

khnj89
2015/12/29
5
0
程序员的十大谎言

国外知名的问答网站Quora上最近有人提出一个问题:程序员们最常说的谎话是什么? 首先,这个问题本身就很有意思,做码农这一行当的人总喜欢挖苦自己,从自身找乐子,就像《软件纠错的六个阶段...

oschina
2012/09/28
9.4K
63
简单的php基于curl的反向代理程序

起因: 经理:需要实现一个反向代理? 我: 简单,nginx分分钟配置好。 经理:嗯?没有nginx? 我: nodejs也行啊,网上有例子分分钟搞定。 经理:嗯?只有虚拟主机,只能上传php程序? 我:...

任臻
2016/04/30
2.8K
2
【有奖话题】 说说您与CDN的爱恨情仇~

程序员每天提及的无数词当中,有一个是「CDN」,Ta的中文名是「内容分发网络」,读中文是令人蒙圈的,英文名是Content Delivery Network。文末有科普~ 您是在什么样的场景下,怎么来使用CDN...

阿里云官方博客
2016/08/09
454
0
年薪60w的程序员与年薪6w的极品程序员,差距怎么这么大呢?

首先申明:非针对程序员本人也是程序员。世人常说我们做程序的太木讷,太呆板,其实真不然!在这里咱也娱乐一下,幽默一下,笑了的朋友,请绝对支持“程序猿”哦...........不管怎么说,他们...

zwjweb
03/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
51分钟前
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
51分钟前
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
52分钟前
1
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
52分钟前
1
0
java框架学习日志-3

这章主要是补充一些ioc创建对象的方式,ioc容器在写好<bean></bean>的时候就已经创建对象了。在之前的例子中,一直都是无参的构造方法。下面给出有参的构造方法的对象的创建,没有什么难点重...

白话
54分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部