近些年,爱奇艺、哔哩哔哩、抖音等一些在线视频应用像是一夜之间涌现出来,规模和突发性堪比寒武纪的物种大爆发。有财力的大公司更是与运营商合作推出了各种相关的流量套餐和流量卡。2015年上半年到2017年上半年间,亚太地区安卓手机“视频播放和编辑”与“娱乐”类别(大多数在线视频应用都属于这个类别)应用的使用时长增长了两倍,达到400亿小时 。这占到了全球总时长的近一半。

在线视频应用

得益于现在的网络环境,我们几乎可以随时随地拿出手机看视频。但有时导致我们看视频卡顿的可能并不是因为网络太慢。以前些日子很火的“延禧攻略”为例,延禧攻略在爱奇艺上取得了单日平均播放量3亿、最高播放量达7亿,并且实现了一千万用户同时在线观看的场景。

如果大家观看的是1080P的视频,这大概需要4Mbps的带宽,要实现一千万用户同时在线观看,那么总共需要的流量带宽就有10,000,000 × 4Mbps = 40,000,000Mbps = 40Tbps。对于优酷、爱奇艺这样的互联网视频内容提供商来说,这无疑是非常巨大的流量压力。

普通计算机的网卡大约是1Gbps的带宽。如果优酷有一台超级服务器,那么,这台超级服务器就需要4万块网卡,而且必须百分之百跑满速度,才能够实现1千万用户的流畅观看。对于一些实力不足的服务商,只要突然流量陡增,就会造成拥塞,从而导致延迟和卡顿。

曾有很多研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒,99%的用户会关闭这个网页。举一些实际点的例子:Google的访问速度每慢400ms就导致用户搜索请求数量下降0.59%;Amazon每增加100ms网站延迟将导致收入下降1%;雅虎如果有400ms延迟会导致流量下降5-9%。直白来讲就是延迟过长=用户流失,这是服务提供商最不愿意看到的。

服务提供商必须想办法解决这个问题,而CDN(Content delivery network,内容分发网络)满足了这个需求,很好的解决了以上情况导致的延迟。

越来越近的服务:CDN的诞生

上个世纪80年代,互联网技术刚刚走进民用领域,那个时候还只能拨号上网,带宽很低,市场还不是很大,自然用户也不会很多。还不足以对骨干网和服务器造成压力。

之后的几年,爆炸式发展的互联网行业刺激了用户的需求,用户越来越多。并且宽带接入网的出现给内容源服务器和骨干网络的压力越来越大,无法及时响应用户的访问需求。

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


Tim Berners-Lee

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

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

Tom Leighton

Leighton被Berners-Lee的挑战激起了兴趣,于是他请当时麻省理工学院的研究生Daniel M. Lewin和其他几位顶级研究人员一起解决了这个技术难题。

Daniel M. Lewin

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

为了发挥这个技术地商业价值,他们成立了一个公司。这个公司就是后来大名鼎鼎地CDN服务鼻祖--Akamai公司

CDN如何运作

上次说到5G采用了网络切片技术,对部分设备使用了“下沉”,使一些设备离基站更近。CDN基本也是这个思路。

CDN最初的核心理念,就是将内容缓存在终端用户附近,使用更多的缓存服务器(CDN边缘节点)布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。

CDN流程

这有点像是建立多个镜像服务器,实际上并非如此。举个例子,假如你现在想要使用APP在线观看一部3G多的视频,那么大概会经历以下几个过程

  1. APP会先根据你点击的URL去本地的DNS寻求IP地址解析

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

  3. 专用DNS服务器会将CDN的全局负载均衡设备IP地址返回给用户

  4. 此时用户就可以向CDN的负载均衡设备发起URL访问请求

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

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

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

  8. 如果这台缓存服务器上并没有用户想要的内容,那么这台缓存服务器就要向网站的源服务器或其他较近的缓存请求内容。

  9. 源服务器或其他缓存服务器将内容返回给缓存服务器,缓存服务器再将内容发给用户,并根据用户自定义的缓存策略,判断要不要把内容缓存到缓存服务器上。

确切的说CDN更像是更加智能的镜像+缓存+流量导流

当然缓存服务器中也不会存下视频的全部内容,每个缓存服务器都只会存下视频的部分内容。而且,服务器本质上也是一台计算机,所以我们可以将我们的个人电脑作为缓存服务器,这就是P2P网络。而P2P也是世界上最大的CDN网络。

CDN带来了什么

CDN技术最大的好处,就是减少了内容分发的延迟,缩短了用户与内容之间的物理距离,并且分发至不同线路的缓存服务器,也让不同运营商之间的访问得以加速。如果中国移动的用户要访问中国电信网络的内容源,可以通过在中国移动架设CDN服务器进行加速。

使用CDN技术也保证了网络的安全。内容进行分发后,源服务器的IP被隐藏,受到攻击的概率将会大幅下降。而且但某个服务器故障时,系统会调用临近的正常运行的服务器进行内容分发,对用户使用的影响也降低了不少。

正是因为CDN的上述优点,目前所有主流的互联网服务器提供商都采用了CDN技术。所有云服务提供商,也都提供了CDN服务。


阿里云的CDN服务

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

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

通信运营商也追捧CDN,但它们的目的,是以存储换带宽,通过服务“下沉”,减轻上层骨干网络的流量压力,避免硬件扩容,降低网络建设成本。将业务流量数据在底层解决,避免了大量的业务流量数据占用骨干网的带宽,骨干网也不需要拼命地扩容。许多运营商已经将CDN下沉到了地级市。


非CDN架构与CDN架构地比较

分布式网络的未来

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

云计算与边缘计算

但是,我们回过头想想。对于非常庞大的区域和极大的用户数量,尤其是国家级或世界级的服务,不管把这个中心设在哪里,不管这个中心的能力有多强大,都无法客服物理距离上的障碍,并且这个中心也很容易崩溃。毕竟梅西C罗再强也不能成为一支球队。


区块链

现在我们开始把云计算中心进行部分下沉,这就有了雾计算、霾计算。这时,我们不禁遐想,集中式计算是否最终会被分布式计算所取代?作为分布式网络的代表,区块链是否会是未来互联网的最终形态?



分享到: