文档章节

程序员常说的CDN是什么?

晚餐吃什么
 晚餐吃什么
发布于 2016/09/29 19:58
字数 1179
阅读 6
收藏 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.2K
63
简单的php基于curl的反向代理程序

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

任臻
2016/04/30
2.8K
2
盘点各种程序员常用的框架,有你用的吗?

避免重复造轮子,我们现在的程序员都在尽量的使用框架来完成很多功能需求,那么你知道各种程序员都常用什么框架吗? JavaScript 程序员 自从有了基于服务端的JavaScript,JavaScript程序员似...

达尔文
2017/09/24
2.3K
32
年薪60w的程序员与年薪6w的极品程序员,差距怎么这么大呢?

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

zwjweb
03/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

科学利用谷歌云平台

当今既是大数据时代,也是云计算时代。云平台构建已经成了诸多大数据平台建设第一步。于是各家互联网巨头们纷纷都开启了云平台服务。国内的以阿里云、腾讯云、百度云、华为云为首,国外的有A...

胖胖雕
4分钟前
0
0
公众号关联小程序发送关联通知

公众号关联小程序发送关联通知,对于推广小程序有着很大的帮助。所以问题来了,怎么做到在公众号关联小程序发送关联通知呢? 一:开发中遇到的问题 之前在开发过程中发现,公众号已经关联小程...

Code辉
7分钟前
0
0
并发编程基础之JMM学习摘要

一、JMM定义 Java内存模型即Java Memory Model(JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见(内存可见性),从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程...

狠一点
12分钟前
0
0
mysql 开启日志记录并且解决日志时间错误问题

查看日志开启状态 SHOW VARIABLES LIKE 'general%'; 开启日志 SET GLOBAL general_log = 'ON'; 本人mysql版本5.7 在查询日志的时候发现时间和系统时间不对 查看系统默认时间参数 SELECT @@l...

Marhal
14分钟前
0
0
Kubernetes上的负载均衡详解

如果您的应用程序是面向大量用户、会吸引大量流量,那么一个不变的目标一定是在高效满足用户需求的同时、不让用户感知到任何类似于“服务器繁忙!”的情况。这一诉求的典型解决方案是横向扩展...

RancherLabs
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部