到底什么是CDN?

戳蓝字“CSDN云计算”关注我们哦!

如今这个移动互联网时代,越来越多的人使用手机观看视频,丰富自己的娱乐生活。


640?wx_fmt=jpeg


可是,大家在追剧的时候,有没有想过一个问题——为什么有时候明明自己手机的网速很快,但观看视频时,仍然卡顿?


640?wx_fmt=jpeg


回答这个问题之前,我们先来做一道算术题。


以之前很火的“延禧攻略”为例,当时曾经在某视频APP实现了1千万用户同时在线观看。


如果大家观看的是1080p清晰度的视频(理论上需要4Mbps带宽),那么,累计需要的流量带宽是10,000,000×4Mbps=40,000,000Mbps=40Tbps。


对于优酷、爱奇艺这样的互联网视频内容提供商来说,这无疑是非常巨大的流量压力。


我们普通计算机的网卡,是1Gbps的带宽。如果优酷有一台超级服务器,那么,这台超级服务器就需要4万块网卡,而且必须百分之百跑满速度,才能够实现这1千万用户的流畅观看。


对于一些实力不够的服务商,或者突发流量陡增的情况,就会造成拥塞,从而导致卡顿和延时。


有这么一个说法:当用户打开一个页面,等待超过4秒,他就会关闭这个页面。也就是说,这个用户就会流失。


▼这应该是大家最讨厌的符号

640?wx_fmt=gif


用户的流失,就意味着金钱的流失。没有任何一家互联网服务提供商希望这样的情况发生。所以,它们必须想方设法让自己的内容尽快呈现,缩短用户的等待时间,提升用户的体验。


而CDN,就是一项非常有效的缩短时延的技术。



CDN的诞生


上世纪80年代,互联网技术刚刚走入民用领域。


人们主要通过拨号来访问网络,带宽很低,用户也很少,所以,没有对骨干网以及服务器带来压力。


随着互联网的爆炸式发展,用户越来越多,加上宽带接入网的出现,内容源服务器和骨干网络的压力越来越大,无法及时响应用户的访问需求。


1995年,麻省理工学院教授、互联网的发明者之一,Tim Berners-Lee博士发现,网络拥塞越来越严重,将会成为互联网发展的最大障碍。


640?wx_fmt=jpeg

Tim Berners-Lee


于是,他提出一个学术难题,希望有人能发明一种全新的、从根本上解决问题的方法,来实现互联网内容的无拥塞分发。


当时Tim Berners-Lee博士的隔壁,是Tom Leighton教授的办公室。他是一位麻省理工学院应用数学教授。


640?wx_fmt=jpeg

Tom Leighton


他被Berners-Lee的挑战激起了兴趣,于是他请研究生Danny C. Lewin和其他几位顶级研究人员一起破解这个技术难题。


640?wx_fmt=jpeg

Danny C. Lewin


最终,他们开发了利用数学运算法则来处理内容的动态路由算法技术,有效地解决了这个难题。这个技术,就是CDN。


他们还为此专门成立了公司,发挥其商业价值。这个公司,就是后来鼎鼎大名的CDN服务鼻祖——Akamai公司


640?wx_fmt=png




CDN的原理


CDN这个技术其实说起来并不复杂,最初的核心理念,就是将内容缓存在终端用户附近


内容源不是远么?那么,我们就在靠近用户的地方,建一个缓存服务器,把远端的内容,复制一份,放在这里,不就OK了?


640?wx_fmt=gif


因为这项技术是把内容进行了分发,所以,它的名字就叫做CDN——Content Delivery Network,内容分发网络


具体来说,CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。(有点像电商的本地仓吧?)


大家可能觉得,这个不就是“镜像服务器”嘛?其实不一样。镜像服务器是源内容服务器的完整复制。而CDN,是部分内容的缓存,智能程度更高。


确切地说,CDN=更智能的镜像+缓存+流量导流


而且还需要注意的是,CDN并不是只能缓存视频内容,它还可以对网站的静态资源(例如各类型图片、html、css、js等)进行分发,对移动应用APP的静态内容(例如安装包apk文件、APP内的图片视频等)进行分发。


我们来举个例子,看看CDN的具体工作流程


如果某个用户想要访问优酷的视频点播内容,那么:


640?wx_fmt=png


具体步骤:

①、当用户点击APP上的内容,APP会根据URL地址去本地DNS(域名解析系统)寻求IP地址解析。

②、本地DNS系统会将域名的解析权交给CDN专用DNS服务器

③、CDN专用DNS服务器,将CDN的全局负载均衡设备IP地址返回用户。

④、用户向CDN的负载均衡设备发起内容URL访问请求。

⑤、CDN负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的缓存服务器

⑥、负载均衡设备告诉用户这台缓存服务器的IP地址,让用户向所选择的缓存服务器发起请求。

⑦、用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。

⑧、如果这台缓存服务器上并没有用户想要的内容,那么这台缓存服务器就要网站的源服务器请求内容。

⑨、源服务器返回内容给缓存服务器,缓存服务器发给用户,并根据用户自定义的缓存策略,判断要不要把内容缓存到缓存服务器上。



CDN的好处


采用CDN技术,最大的好处,就是加速了网站的访问——用户与内容之间的物理距离缩短,用户的等待时间也得以缩短。


而且,分发至不同线路的缓存服务器,也让跨运营商之间的访问得以加速。


例如中国移动手机用户访问中国电信网络的内容源,可以通过在中国移动架设CDN服务器,进行加速。效果是非常明显的。


此外,CDN还有安全方面的好处。内容进行分发后,源服务器的IP被隐藏,受到攻击的概率会大幅下降。而且,当某个服务器故障时,系统会调用临近的健康服务器 进行服务,避免对用户造成影响。


正因为CDN的好处很多,所以,目前所有主流的互联网服务提供商,都采用了CDN技术。所有的云服务提供商,也都提供了CDN服务(价格也不算贵,按流量计费)。


640?wx_fmt=png

某某云的CDN服务




CDN和通信行业


CDN是从传统IT行业发展起来的一项服务。但是,对于我们通信行业来说,CDN也有非常大的商业价值。


互联网服务提供商采用CDN,是以存储换时延。花钱购置CDN服务器或云计算服务,以此换取更好的用户体验。


通信运营商也追捧CDN,但它们的目的,是以存储换带宽——通过服务“下沉”,减轻上层骨干网络的流量压力,避免硬件扩容,降低网络建设成本。


这个很好理解啊,如果大量的业务流量数据在骨干网跑来跑去,骨干网肯定吃不消,要拼命扩容。如果这些业务流量数据在底层就被解决了,那么,骨干网的带宽压力自然就减轻了。不是么?


640?wx_fmt=png


很多运营商已经将CDN下沉到地市级,以此减轻压力,同时可以提升用户体验。



讲到这里,广大通信汪们是不是想到了什么?2_02.png


没错,这个和前几天介绍过的移动边缘计算,有异曲同工之妙。


640?wx_fmt=gif


一直以来,随着网络能力的不断提升,内容资源和计算能力都在不断“往上走”,走到云计算中心。由一个核心云计算中心,对所有终端节点提供服务。


640?wx_fmt=jpeg


结果,人们回过头来发现,对于非常大的面积区域,非常多的用户数量,尤其是国家级或世界级的服务,不管你把这个中心设在哪里,也不管你这个中心的能力有多强大,都无法克服物理距离上的障碍,会导致无法忍受的延时网络拥塞


于是乎,人们就开始把云计算中心进行部分“下沉”,这才有了雾计算、霾计算。甚至人们开始质疑,集中式计算是否会最终被分布式计算所取代?


640?wx_fmt=jpeg

区块链,就是分布式计算的代表


在小枣君看来,不存在谁完全取代谁的问题。不同的场景带来不同的需求,不同的需求需要不同的网络架构。场景的多样化是现实存在的,所以,网络架构的灵活化,也是必然的选择。


即将到来的5G,提出三大场景和切片,用同一张网络,满足不同的需求,就体现了这样的设计思想,顺应了潮流的发展方向。


总而言之,对于网络技术来说,不管是黑猫、白猫,总之,能抓到老鼠的,就是好猫。难道不是么?


文章转自:鲜枣课堂


1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。


推荐阅读

  • 细数华为核心技术家底:华为真会被击垮吗?

  • 如何使用 Lucene 做网站高亮搜索功能?

  • 20张图表达程序员的心酸

  • 一个程序员父亲的呼吁:不要教你的孩子从小学编程!

  • Python | 7招教你识别一个网站是否是Django后台

  • 月薪 50K 大牛整理!6 张 Python 图谱,看完茅塞顿开!


程序人生公众号是CSDN旗下有影响力的开发者自媒体之一。这是一个以程序员日常工作和生活紧密相关且垂直服务于程序员群体的自媒体平台,扫描关注吧~


640?wx_fmt=png

↓点击“阅读原文”,打开APP 阅读更顺畅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BugkuCTF-MISC题MuMuMisc的简单题

查看提示 先看png图片 发现最左侧有些信息 看了大佬们的wp,需要写脚本把左侧这块读出来,黑色对应1,白色对应0,再转成字符 得到的结果base64解码,得到: 回过头看private.key,它其实是个jpg图…

“车联网”最强科普!据说它是未来五年5G兴衰的晴雨表?

戳蓝字“CSDN云计算”关注我们哦!说到车联网,相信大家一定不会陌生。现在不管是汽车制造商、销售商,还是阿里腾讯这样的互联网企业,都会经常提到它。简单来说,车联网就是把汽车连起来,组成网络。不过&#…

BugkuCTF-MISC题random color

010打开file,发现文件尾有另一个png图片的数据,提取出来,放到Stegsolve里两张图对比一下,得到一个二维码

C语言逻辑运算符 - C语言零基础入门教程

目录 一.逻辑运算符 1.与运算 &&2.或运算 ||3.非运算 ! 二.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.逻辑运算符 在C 语言 if / else 条件判断中,一个 if 语句的条件判断可以由多个表达式构成,举个例子: …

程序员的晒娃方式

戳蓝字“CSDN云计算”关注我们哦!(图自:可乐柠檬的日常)微博网友评论:挨踢南:性别那叫gender不是sexWTF王启旻ITF:babySay(Hello World!!!);lovelydong:c语言结构体么忘了渔阳2020&a…

BugkuCTF-MISC题split

Kali打开图片,显示 Binwalk和foremost分离不出有效文件 通过TwakPNG打开 显示文件第33个字节有问题,这可能暗示文件末尾的分水岭 Tweakpng打开说第33个字节开始报错,010打开发现从34字节开始的文本描述是(38 39 61)89a,第一反…

C语言三目运算符 - C语言零基础入门教程

目录 一.C 语言三目运算符简介二.C 语言三目运算符实战 1.使用三目运算符2.使用 if / else 条件判断 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.C 语言三目运算符简介 三目运算符,又称条件运算符,是计算机语言&…

BugkuCTF-MISC题telnet

wireshark打开networking.pcap 点击右键->TCP stream,弹出flag

10 张令人喷饭的程序员漫画

戳蓝字“CSDN云计算”关注我们哦!0、修电脑的专家是如何炼成的1、维护遗留代码的感觉2、努力把自己升级吧3、这代码谁写的?4、程序员逛酒吧5、程序员的生活写照6、我再也不在课堂上扔纸飞机了一个小朋友在课堂上玩纸飞机,被老师发现后罚写 50…

BugkuCTF-MISC题where is flag

下载附件 解压得到10个txt文件 010打开发现里面全是00截断符号 这时候唯一的线索就是字节大小,用py脚本把各个文件的字节长度跑出来 for n in range(1,11):name str(n).txtwith open(name) as f:print(len(f.read()),end"")跑出来的字节长度应该是十进…

大型私有云运维实践

戳蓝字“CSDN云计算”关注我们哦!大家下午好!我要分享的题目是国家级私有云的实践。分享的内容有三部分:第一部分为什么要建设云?云建设的目标是什么?第二部分介绍一些云技术发展的趋势,有些技术也好几年了…

C语言自加自减运算符(++i / i++) - C语言零基础入门教程

目录 一.C 语言自加 / 自减 – 运算符简介 1.前 后 的区别2.前–后-- 的区别 二.C 语言自加/自减–运算符实战三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 除了前面文章讲解的逻辑运算符 / 三目运算符 / 逗号表达式,C 语言中自…

BugkuCTF-MISC题where is flag2

开始想着是crc32碰撞,拿到文本里的内容,后面发现txt里的内容都是无意义的 这些txt的文件名很容易让人联想到十六进制,内容无意义应该是为了凑crc32值 把这些txt的crc32值连在一起,转字符得到flag: bugku{You_can’t_…

漫画:为什么互联网人收入高,却这么低调

戳蓝字“CSDN云计算”关注我们哦!我们第一IT圈一直流传着各种传说。比如哪个公司应届毕业生收入逼近中产,某某游戏团队年终奖分了多少,某某公司上市又造就了多少位千万富豪。虽然从来没有哪个人真正站出来验证这些传说,但各种人才…

(作者:无名`)svn提交代码到本地仓库

1.创建空文件夹demo1,然后按下图 2.然后 3.demo1中创空文件夹test 4.打开自己的项目,按下图 5.复制刚才第二步路径,加上test,路径变为 file:\\\C:\demo1\test 放入上图url中 打完收工!

C语言 for 循环 - C语言零基础入门教程

目录 一.for 循环简介 1.for 循环语法简介2.for 循环代码执行步骤3.for 循环适用场景4.for 循环嵌套 二.for 循环实战 1.简单的 for 循环实现累计求和:1234….102.for 循环嵌套:九九乘法表 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >>…

BugkuCTF-MISC题where is flag3

WinRAR打开压缩包 思路应该和前面两题差不多,前面已经用过了文件大小和crc32 这里考虑一下从修改时间下手,直接看日期没有什么规律,考虑转换成时间戳 用在线网站转换成时间戳,需要精确到秒,这里只能到分,所…

第二次想上传demo到github

1.参考我的第一篇 上传自己的项目到github_wanggang182007的博客-CSDN博客 2.不用在获取秘钥 3.可能到这步出错 4.最后一行末尾改成github用户名字和新建仓库名字 5.如果文件过大 6.备份后,用命令删除(如果去磁盘右键删除无效) 7.如果还是…

C语言 break 和 continue - C语言零基础入门教程

目录 一.for 循环中使用 break二.for 循环中使用 continue三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 前一篇文章详细的介绍了 for 循环的使用,本文还需要介绍两个额外的关键字:**break **和 continue,这…

程序员求助:被领导强行要求写Bug该怎么办?网友的回答让我笑翻

戳蓝字“CSDN云计算”关注我们哦!相信大家都知道程序员在写代码的时候,一般都会尽量避免出现Bug,因为一旦代码中出现Bug就证明这段代码运行的时候会有极大的概率出错,会给公司带来直接经济损失。但俗话说事情无绝对,近…