原文地址:https://blog.csdn.net/lu_embedded/article/details/80519898

618电商节、双十一购物狂欢节,到底是什么在支撑数以万计的秒杀活动?这就不得不提一直隐姓埋名的 CDN 了,注意不是 CSDN,而是 CDN,CDN,CDN!其全称是 Content Delivery Network,即内容分发网络。 
  那到底 CDN 是什么鬼,我们还得从西天取经说起……


  1300年前,唐僧师徒取经要跋涉十万八千里,历经九九八十一难,一路打怪升级,最终才能修成正果,悟空加冕“斗战胜佛”。 
  1300年后,西游互联网已经开通,雷音寺官网上线,取经只需打开网站,点击下载,凡夫俗子也可以轻易取得真经。

  初时,唐僧师徒觉得当年的辛苦付出颇为不值,慨叹世事变迁,法术高强敌不过科技进步。 
  然四大部洲善男信女众多,扎堆前往雷音寺官网下载经书,网站不堪重负,信徒叫苦不迭,神通广大的如来使出“Scacleup + Scaleout”心法,扩容雷音官网,仍不得其解,遂差遣悟空一查究竟。 
  悟空火眼金睛,半晌就把原因查了个一清二楚,原来信徒要想美美的访问雷音网,需要打败四个妖怪:

第一怪,首里魔

  “首里魔”又称“第一公里魔”,把持网站服务器接入西游互联网的路口带宽,这个带宽决定了能为信徒提供的访问速度和并发访问量。

第二怪,骨干精

  “骨干精”藏于西游互联网的长途传输要道,出没于IDC、骨干网、城域网、接入网等洞穴,使用“时延”和“拥塞”两个妖术作法。

第三怪,互联妖

  西游互联网覆盖四大部洲,各部洲的网络独立运营,“互联妖”善于挑拨离间,让洲与洲之间的互联带宽成为瓶颈。

第四怪,末里兽

  “末里兽”又称“最后一公里兽”,蹲守在上网信徒的家门口,把持用户访问西游互联网的通路,收取买路钱,钱少只能走羊肠小道。 
  悟空看罢大怒,原来是这些妖孽作怪! 
  于是拔下一根毫毛,使出“CDN”大法,变作几百只小猴子,一声令下,每猴背熟一些经文,纷纷潜入到各大部洲的 IDC 山洞中,就近为善男信女们提供讲经服务,这些小猴子被俗称为“cache猴”。

  小猴子们基于这样的规则干活:

A.当某个信徒需要阅读经书,大家就挑选能最快到达信徒家的猴子前去讲经(可能距离最近,也可能是路最好走); 
B.如果某部经书被很多信徒需要,它就会被距离这些信徒最近的小猴子烂熟于心。

  可是猴子很多又生性顽劣,管好还是很费神的,于是悟空叫来了师父和师弟们帮忙,师徒同心,其利断金。

  沙和尚任劳任怨,悟空让他承担“分发服务”:

  老沙的主要职责是将经书内容从雷音寺中心向各部洲的“cache猴”推送和存储,承担实际的佛经流量全网分发工作和面向最终信徒的阅读请求服务。

  猪八戒肠肥肚圆,悟空让他承担“负载均衡”:

  八戒负责对所有发起阅经请求的信徒进行访问调度,确定提供给信徒的最终实际访问地址,告诉信徒那个小猴子最适合他。

  唐三藏高瞻远瞩,悟空请他承担“运营管理”:

  唐僧负责对日常事务的监管、收支核算、团队状态的检查、分析,也承担与大客户–佛祖“疏通”关系等职责。 
  在师徒四人的通力合作下,四个妖怪被打败,如来佛祖的心病治愈了,天下苍生得以美美滴上网取经。 
  雷音寺赚得盆满钵满,不断推出新的服务,原来只有经书下载,现在可以在线浏览经书,还可以视频直播,观看佛祖在线讲经。 
  于是唐僧师徒的 CDN 服务从原来只提供文件传输加速服务,到后来增加为流媒体加速服务、网页浏览加速服务等等。 
  从此,天下再没有难取的经,悟空得到佛祖嘉奖,从“斗战胜佛”升级为“斗站胜佛”!

  好了,西游记的故事讲完了,小伙伴们也明白什么是 CDN 了。

什么是 CDN(超形象)的更多相关文章

  1. 转: 解决Github访问超慢问题

    转自:http://zengrong.net/post/2092.htm 解决Github访问超慢问题 Github is so slowly. 这段时间访问 github 都非常慢,google了一 ...

  2. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  3. CDN缓存那些事

    CDN是什么? 谈到CDN的作用,可以用8年买火车票的经历来形象比喻: 8年前,还没有火车票代售点一说,12306.cn更是无从说起.那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不通火 ...

  4. CDN学习笔记一(CDN是什么?)

    CDN是什么? 谈到CDN的作用,可以用8年买火车票的经历来形象比喻: 8年前,还没有火车票代售点一说,12306.cn更是无从说起.那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不通火 ...

  5. 解决Github访问超慢问题[自己留档]

    解决Github访问超慢问题 Github is so slowly. 这段时间访问 github 都非常慢,google了一下发现是github某个CDN被伟大的墙屏蔽所致. 出问题的应该是这个CD ...

  6. Java缓存学习之三:CDN缓存机制

    CDN是什么? 关于CDN是什么,此前网友详细介绍过. CDN是Content Delivery Network的简称,即"内容分发网络"的意思.一般我们所说的CDN加速,一般是指 ...

  7. 网站优化与Cdn文件传输服务

    网站优化与Cdn文件传输服务 如今互联网无处不在,其方便快捷.性质和低成本的经济特点,已经逐渐成为商务贸易.信息分发和数据交付的一个重要渠道.要想让数据的分发带来巨大的效益,那么网民的满意是唯一的办法 ...

  8. 分布式还是混合式? 谈CDN架构对服务质量的影响

    传统分布式模型 通 常,内容分发网络(CDN)採用分布式模型.在这样的模型里, 用户的文件存放在一个源server上.而且由大量边缘server负责分发这些文件.这些边缘server的磁盘空间比較小. ...

  9. 开源来自百度商业前端数据可视化团队的超漂亮动态图表--ECharts

    开源来自百度商业前端数据可视化团队的超漂亮动态图表--ECharts 本人项目中最近有需要图表的地方,偶然发现一款超级漂亮的动态图标js图表控件,分享给大家,觉得好用的就看一下.更多更漂亮的演示大家可 ...

随机推荐

  1. 开始编写Makefile

    1.Makefile 的编写规则一 目标列表:关联性列表 命令列表 目标列表:可以是多个以空格隔开多个目标文件 关联列表页称为先决条件:同样是用个或多个空格分开的目标文件 命令列表:用<tab& ...

  2. Vim颜色配置

    最近迷上了Vim 主要原因是可以装逼 不过话说它自带的配色里面也就只有一个evening能勉强满足我的审美 于是我花了大概几天的时间翻了些百度贴吧,或者自己手动改属性后面的配色来实验这个属性到底对应哪 ...

  3. 交互设计算法基础(3) - Quick Sort

    int pivotIndex, pivot, swapIndex; void swap(int[] arr, int x, int y) { int temp = arr[x]; arr[x] = a ...

  4. Python和多线程(multi-threading)。这是个好主意码?列举一些让Python代码以并行方式运行的方法。

    Python并不支持真正意义上的多线程.Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意.Python中有一个被称为Global Interpreter ...

  5. NTT小结及原根求法

    注意 由于蒟蒻实在太弱了~^_^~暂时无法完成证明,仅能写出简单版总结 与FFT的区别 \(NTT\)与\(FFT\)的代码区别就是把单位根换成了原根,从而实现无精度误差与浮点数的巨大常数 原根具有单 ...

  6. c#调用phantomjs 将 网页 存为 PDF

    一. 下载 phantomjs 具体下载方式 不再详细说明了. 二. 创建一个 rasterize.js 文件 (放在哪里都行, 我这里是放在了项目中) . 代码内容如下 var page = req ...

  7. ICEM——倒角的处理

    原视频下载地址: https://pan.baidu.com/s/1miHMOuk 密码: knc4

  8. .netFramework 升级NetCore 问题汇总及解决方案

    升级版本: NetCore sdk 2.2.108 .AspNetCore 2.2.0.EFCore 2.2.6 所有程序引用均从NuGet上下载,并支持NetCore 问题: 问题1:No coer ...

  9. 为 Raft 引入 leader lease 机制解决集群脑裂时的 stale read 问题

    问题:当 raft group 发生脑裂的情况下,老的 raft leader 可能在一段时间内并不知道新的 leader 已经被选举出来,这时候客户端在老的 leader 上可能会读取出陈旧的数据( ...

  10. VC++ 返回13位时间戳(Unix时间戳)

    //获取13位时间戳 CString GetUnixTime() { CString nowTime; SYSTEMTIME sysTime; GetLocalTime(&sysTime); ...