内容分发网络CDN概述及其技术原理

CDN的全称是Content Delivery Network,即内容分发网络。

CDN基本概念介绍

(一)CDN的由来

CDN就是如上图所示的一种拓扑结构,它能够使用户就近地访问到所需要的内容,从而解决网络拥挤的状况,提高用户访问网站的响应速度。

下面是一个互联网公司的成长过程:

第一阶段,称之为最小规模阶段。此时,在北京地区注册了一个互联网初创公司,并且开发好了一个网站,并购买一台服务器,所有用户都只需要访问到北京地区的服务器就可以了。

到第二阶段,规模发生了扩大。该公司在上海地区又成立了一家分公司,此时发现上海地区的用户访问北京地区的服务器,会有较高的网络延迟。

为了解决这个问题,在上海地区又部署了一台相同的服务器,并且将北京地区服务器上的内容,完整地拷贝到上海服务器,从而有效解决了上海地区用户访问延迟高的问题。

第三阶段,规模再次扩大。该公司的业务在全国各地进行了开展,可谓是遍地开花,此时发现很多地区的用户在访问网站时都存在网络延迟较高的问题。

为了解决这个问题,我们决定在用户访问比较集中的几个地区,部署更多的服务器,分别选择北京、上海、南京、深圳、香港五个地区部署了服务器,从而有效地解决了用户访问速度的问题。

上图是典型的CDN拓扑结构。由此可以发现,CDN的由来是为了解决不同地理区域的用户,访问同一个网站高延迟而产生的

那么,它是通过什么方法来解决的呢?

它的方法就是在离用户最近的地方部署更多的服务器,从而使用户能够就近地访问到这些服务器,提高用户的访问速度。

同时,能够减轻服务器的压力,所有用户都访问同一台服务器的话,那么这台服务器的压力就会很高,但是如果我们让不同的用户访问不同的服务器,这样就能够有效降低某一台服务器的压力。

在稳定性和安全性方面,当其中某一台或多台服务器发生故障时,可以引导用户访问其他没有故障的服务器,这样能够有效提高网站的稳定性和安全性。

(二)CDN的原理

在上一节内容中,我们了解到CDN通过让用户就近访问来产生加速的效果,那么CDN究竟是通过什么方法来实现这个加速呢?

主要有2个步骤。第一步,将内容推送到边缘的节点上,以此产生一个副本;第二步,引导用户就近进行访问。

首先来看第一个过程:红色的服务器是Web的原始服务器,想要实现边缘加速,必须要提前将原始服务器上的内容,拷贝到其他的镜像服务器上,这样其他镜像服务器才会产生副本,以此来给用户进行访问。

在第二步的时候,用户就会去请求这些内容。那么一个正常的请求过程是什么样的?首先,用户在浏览器中输入cloud.tencent.com,浏览器会将该域名发送到DNS服务器(域名系统,英文:Domain Name System,缩写:DNS),DNS服务器是一个用来解析域名的服务器,它会将域名翻译成相应的IP地址进行返回或者翻译成其他的域名进行返回。

DNS服务器是运行在互联网上的公共服务器,如果这台服务器没有查到相应的域名,则会向它的上级服务器进行请求,直至请求到根DNS服务器;如果根DNS服务器也没有返回结果,则说明该域名没有进行对应的解析。

在本案例中,DNS服务器解析到了对应的IP地址,在第二步,DNS服务器将该IP地址返回给了用户的浏览器,在第三步,用户的浏览器请求到相应IP地址的服务器,也就是我们的Web原始服务器,Web原始服务器接收到该请求后,对它进行了分析,并且返回了相应的请求结果,在第四步,用户的浏览器接收到了相应的请求结果,并且对结果进行了一个可视化的展现,于是用户就看到了这样的一个网页。

接下来是CDN加速过后的Web请求过程:

同样的,用户在浏览器中输入cloud.tencent.com,第一步,用户的浏览器还是将该域名发送到了DNS服务器,不同的DNS服务器并不能直接把它解析到相应的IP地址,而是把它解析到了智能DNS服务器,第二步,智能DNS服务器获取到了该请求,并且判断当前的用户离上海最近,返回了上海服务器的IP,这里的智能DNS服务器是CDN加速服务商所提供的服务器,它会对用户进行一个判断,并且返回相应的结果,第三步,将该IP地址返回到DNS服务器,第四步,DNS服务器将该地址返回到了用户的浏览器,第五步,用户的浏览器去请求了上海的CDN镜像服务器,第六步,上海的CDN镜像服务器获取到了相应的请求,并且查询到相应的CDN副本文件,对用户进行返回,此时用户的浏览器接收到返回的结果,并且对用户进行一个展现。

这就是CDN加速以后的Web请求过程。从这个过程中可以看到,对于用户来说,CDN加速以后是没有任何障碍的,用户操作和原先一样,只用输入相应的域名进行访问就可以了。不同的是,网站的服务商需要将原来的解析地址转换到智能DNS服务器,并且要提前将相应的副本文件推送到相应的镜像服务器。

(三)CDN的分类

3.1 网页加速

上图是一个小型网站的拓扑结构。一个网站通常由两部分资源组成,即静态资源和动态资源。

静态资源如HTML、CSS(层叠样式表)、图片、JS(JavaScript)、视频等等,这些文件通常与数据库没有任何关系、不需要动态地生成,并且短时间内不会发生变化,CDN服务器主要是加速静态资源的内容。首先,将CDN的静态资源拷贝到CDN的边缘缓存服务器,然后用户就可以访问到这些静态资源,以此提高用户访问速度,即网页加速

3.2 流媒体加速

在当前流媒体的发展阶段中,为了使用户得到更高的浏览体验,并且保证流媒体的知识产权,几乎所有的流媒体平台都采用了分片处理的效果。

上图是一个典型的分片处理的过程。用户将视频文件上传后,流媒体服务器会对该文件进行分析切片,切片后会被存放到文件存储服务器。在“加速内容”中,我们可以看到切片后的视频文件(plist.xml),这个文件主要是来描述该视频的大小和文件完整性的校验戳、视频的持续长度、视频的名称等等相关信息;后面的1.ts,一直到1006.ts,都是视频的分片,这些分片有可能在流媒体服务器切片时进行了加密,普通用户即使得到了这些文件,也无法观看视频内容,以此实现保护知识产权的效果。

同时,很多视频在观看时,用户只会看前面的2-3分钟,后面的视频可能不会观看,通过切片后能有效提高服务器读写文件的速度,而CDN对流媒体的加速,恰恰是加速这些切片后的视频文件,因为这些文件相对来说不会产生任何变化,非常符合CDN加速的业务条件。

3.3 大文件加速

大文件加速主要是对文件的安装包、补丁、独立完整的大视频、安卓的APK安装包、压缩包,以及一些大型的实验数据等等。这些文件通常都是固定不变的,将这些文件放到CDN服务器当中,能有效提高用户访问的速度,同时减轻源站的服务压力。

3.4 应用协议加速

应用协议加速,我们比较熟悉的是下载工具,比如要下载一个x.rar,直接从浏览器中下载,可能受目标服务器网络带宽的限制,下载速度只能达到500kb每秒,使用BT下载加速工具后,下载工具可能已将需要下载的文件提前下载到了代理服务器中,用户只需从代理服务器上直接下载即可,而代理服务器的带宽通常要远远大于原始的目标服务器,以此提高下载速度。

此外,当代理服务器中未找到这个文件时,会使用多台代理服务器同时下载这个文件,并同时传输给用户,以此提高下载速度。


3.5 主动推送

主动推送即前面所讲,首先需要将WEB服务器源站的内容分发至各个边缘节点,使之获得相应的副本文件,然后智能DNS服务器会引导用户去访问相应的节点,完成主动推送。

3.6 被动获取

首先,智能DNS服务器会引导用户访问就近的节点,此时该节点会对索引进行查询,当它发现服务器上没有这个文件时,则会向源站获取数据,源站在对数据进行查询后,将数据返回给镜像服务器,最后镜像器再将相应的数据返回给用户,用户在浏览器上才能够看到相应的内容,这就是一个被动获取的过程。

第一个用户访问时是没有任何加速效果的,但是当第二个用户和他以后的用户再来进行访问时,由于服务器上已经有了相应的副本,则直接返回相应的副本以此达到加速的效果。

(四)CDN的应用场景

【应用场景一】

上图这类情况比较适用CDN来解决。

首先来看传统的解决方案。比如在安徽部署了一个网站的主站,一段时间运营后,对网站的访问情况进行统计,可以看到,安徽、上海、北京、广东、香港等地的访问量都较高。

为了解决其他地区用户访问体验不佳的情况,我们在访问量较集中的几个地区部署了4台服务器,以此提供更好的访问体验。

经过一段时间的运营后,又发现距离较远的新疆、云南、甘肃、成都等地区都一定程度的存在着用户访问慢的情况。下面是CDN的解决方案,可以看到腾讯云CDN的国内节点分布几乎遍布全国,通过对比后不难发现,传统解决方案需要投入更多的资金,以购买更多的服务器,还需要投入更多的人力资源对服务器进行维护,而使用CDN解决这个问题时,可以节省开支,无需考虑未来追加的增量服务器,而且加速效果更加明显,覆盖范围更加广阔。

【应用场景二】

网站的标准配置都是由动态资源服务器、数据库服务器、静态资源服务器组成。当服务器静态资源加载较慢时,我们对静态资源服务器的消耗情况进行了监控,下表中服务器的使用率越来越高,直至最后服务器崩溃导致停止服务。

通过传统方案来解决,我们需要投入更多成本来购置更多的服务器,并需要投入大量的人力资源对服务器进行维护,而采用CDN,能节省开支、不需要自己搭建反向代理服务器、也不需要对当前的业务代码进行任何修改、更不需要未来追加增量服务器,它的加速效果也更加明显,能够大幅度降低本地静态资源服务器的压力。

【应用场景三】

CDN会对用户的访问进行优化,如果用户无法访问某一个节点时,则会给用户提供更多其他节点进行访问,同时CDN也提供了更多面对网络安全威胁的措施,能够有效提高网站的安全性,以此保证用户访问的到达率。

【应用场景四】

当一个网站的用户跨越了多个ISP电信运营服务商,而它自身的服务器却只在其中一个机房时,也非常适用CDN来解决问题。上图中可以看到,腾讯云CDN服务器已经部署到了电信、联通、移动、铁通、长城等不同的机房当中。当使用CDN服务时,能够更好地提高用户的访问速度,并且能够有效减少因运营商通道堵塞导致的访问失败。

接下来看CDN在不同商业领域中的表现。

【应用类型一:电商领域】

右图中,用户访问时首先会从CDN加速访问器进行访问,然后才会访问到后端的其他服务,在这里主要对网站的图片、视频、静态页等静态资源进行加速。比较成功的应用案例有淘宝、京东和亚马逊。

【应用类型二:游戏领域】

右图中,用户访问登录服务时,会直接从负载均衡系统走,因为登录服务主要是数据库之间的交换,而访问其他服务时,则通过CDN加速进行,这里主要对游戏的安装包、安装补丁进行加速。比较成熟的案例有使命召唤OL、英雄联盟等。

【应用类型三:政企领域】

右图中可以看到,政企是文件存储较多的单位,并且文件会逐年增长,因此都会部署云存储服务器以提高它的弹性伸缩能力。图中用户首先访问到它的BGP高防,然后是CDN服务器,最后才会达到云服务器,这里主要对云服务器中的图片、视频和其他静态的文件进行加速。比较成熟的案例有图书馆和超星视频。

【应用类型四:移动领域】

右图可以看到,在用户访问时,首先会经过CDN节点,然后才会到达其他的业务领域,在这里主要对App的安装包和更新包进行加速。比较成熟的案例有12306、知乎App等。

【应用类型五:直播领域】

右图可以看到,主播在录制视频的同时,将视频上传到直播后台,最后展现在观众面前,在这里主要对主播上传的视频流进行加速。比较成熟的案例有斗鱼直播、战旗直播、熊猫直播等。

【应用类型六:点播领域】

右图可以看到,主播将录制好的视频文件上传到点播服务器后台,点播服务器后台对文件进行切片处理,最后展现到观众显示器上,在这里主要对视频的文件和分片文件进行加速。比较成熟的应用案例有极客学院、腾讯视频、Youtube等。

- End -

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容