现在已经是全民直播的时代,我们推送出去的流媒体需要传输到观众,流媒体服务器整个链路就是传输网络,类比货运物流就是从出发地到目的地的所有路程了,如果道路的容量不够,会引发堵车也就是网络拥塞,这时我们会改变路程也就是所谓的智能调度,但是传输网络会站在全局的角度进行调度,可以想象有一个上帝在天空中俯视出发地和目的地间的所有路况信息,而且还是实时的,然后给出你一条明路,这是何等神奇。
这里先回顾一下传统的内容分发网络。
为什么要有内容分发网络
互联网起源于美国军方的一个内部网络,Tim Berners-Lee 是互联网发明者之一,他很早就预见到在不久的将来网络拥塞将成为互联网发展的最大障碍,于是他提出了一个学术难题,要发明一种全新的、从根本上解决问题的方法来实现互联网内容的无拥塞分发,这项学术难题最终催生出一种革新性的互联网服务——CDN 。
传统 CDN 的架构
上图是一个典型的 CDN 系统的三级部署示意图,节点是 CDN 系统中的最基本部署单元,分为三级部署,中心节点、区域节点和边缘节点,最上面一级是中心节点,中间一级是区域节点,边缘节点地理位置分散,为用户提供就近的内容访问服务。
下面介绍一下 CDN 节点的分类,主要分成两大类,骨干节点和 POP 节点。
骨干节点:中心节点,区域节点
POP节点:边缘节点
逻辑上来讲,骨干节点主要负责内容分发和边缘节点未命中时进行回源,POP 节点主要负责提供给用户就近的内容访问服务。但如果 CDN 网络规模较大,边缘节点直接向中心节点回源会给中间层的核心设备造成的压力过大,在物理上引入区域节点,负责一个地理区域的管理,保存部分热点数据。
直播传输网络有别于传统 CDN 的痛点
随着全民直播时代的到来,直播成为当前 CDN 厂商的又一个主要的战场,那么直播时代 CDN 需要支持什么样的服务呢?
- 流媒体协议的支持,包括 RTMP,HLS ,HTTP-FLV 等。
- 首屏秒开,从用户点击到播放控制在秒级以内,从推流端到播放端,延迟控制在 1~3 秒之间
- 全球全网智能路由,可以利用整个 CDN 网络内的所有节点为某一单一用户服务,不受地域限制。
传统 CDN 的链路路由
CDN 基于树状网络拓扑结构,每一层都有 GSLB (Global Server Load Balancing) 用于同一层内的多个 CDN 节点负载均衡,这样有什么好处呢?
前面提到的众多 CDN 的应用场景中,网页加速、视频加速、文件传输加速,都是同时依赖 GSLB 和 Cache 系统的,Cache 系统是整个 CDN 系统中的成本所在,设计树形结构可以最大化的节省 Cache 系统的资本投入。因为只有中心节点需要保持机会所有的 Cache 副本,向下逐级减少,到了边缘节点只需要少量的热点 Cache 就可以命中大部分 CDN 访问请求,这样极大的降低了 CDN 网络的成本,也符合当时 CDN 用户的需求,可谓双赢。
我们知道最早的互联网就是网状拓扑结构,后来才慢慢加入了骨干网来解决各种各样的问题,我们是时候该回归本质,拥抱下一代音视频流媒体服务器EasyNVR。