万人直播网络架构与CDN网络

栏目: 后端 · 发布时间: 6年前

内容简介:目前市场上的产品主要分为两种:一种是像花椒、映客、斗鱼、YY等的泛娱乐化直播,一种是思科、声网之类的实时互动直播。一般情况下实时互动直播会与PSTN网络相连,所以实时互动直播必须达到电话级别的传输要求,一般不超过400ms。在泛娱乐化直播架构中有信令服务器集群来负责创建房间、聊天、赠送礼物…,当直播端需要直播时直接向信令服务器发送请求,信令服务器向请求端返回推流的地址,然后直播端开始像CDN网络推送数据流(流媒体CDN与传统CDN有些不同),然后当观众需要观看直播时,使用同样的方式请求直播地址,然后在流媒

目前市场上的产品主要分为两种:一种是像花椒、映客、斗鱼、YY等的泛娱乐化直播,一种是思科、声网之类的实时互动直播。一般情况下实时互动直播会与PSTN网络相连,所以实时互动直播必须达到电话级别的传输要求,一般不超过400ms。

泛娱乐化直播架构

在泛娱乐化直播架构中有信令服务器集群来负责创建房间、聊天、赠送礼物…,当直播端需要直播时直接向信令服务器发送请求,信令服务器向请求端返回推流的地址,然后直播端开始像CDN网络推送数据流(流媒体CDN与传统CDN有些不同),然后当观众需要观看直播时,使用同样的方式请求直播地址,然后在流媒体CDN拉取数据流,具体如图所示:

万人直播网络架构与CDN网络

实时互动直播架构

众所周知,实时互动直播架构对传输效率要求高,因此客户端使用UDP协议向媒体服务器推流,由于要保证服务器7x24小时的服务,所以通过私有网络建立了服务器集群,直播端向媒体服务器推流。由于使用了多个直播服务节点,所以需要控制中心来控制这些节点以达到负载均衡、健康评估等的目的。每个节点通过内总线向控制中心发送心跳包,控制中心通过心跳包来分析服务节点的健康状况来做出相应的决策。使用内总线的原因一是为了数据的安全性,二是为了数据的时效性。那么有时候实时互动也需要多人观看,所以上面讲解的泛娱乐化直播架构与实时互动直播架构进行融合。在CDN流媒体网络与内总线之间有一层服务节点最重要的作用是将直播端的RTP转换为RTMP数据向CDN推流,由此得知内总线的主要作用就是提高数据吞吐量和保证数据实时安全,具体如下图所示:

万人直播网络架构与CDN网络

流媒体CDN网络与传统CDN网络

虽然各大CDN厂商都提供CDN服务,但是流媒体CDN与传统CDN网络有很大的差别,但是要弄明白区别首先要了解什么是CDN:CDN就是内容分发网络的简称,主要用来加速用户访问数据的速度和承载源站点大部分访问压力。一个CDN网络大致上分为三层:

  • 边缘节点:用户访问边缘节点,边缘节点在主干接点拉去数据。
  • 主干接点:是边缘节点与源站点的中间层,负责分发源站点的内容到边缘节点。
  • 源站点:内容提供商的服务器集群。

具体见下图:

万人直播网络架构与CDN网络

一般情况下,内容提供商有多个服务器来负载均衡,并且CDN提供区域的CDN边缘节点来提供服务,众多的边缘节点和源节点之间通过主干节点连接,主干节点之间一般通过光纤直接互联,如下图所示:

万人直播网络架构与CDN网络

通过上文介绍,我们已经清楚CDN网络基本架构,那么传统CDN与流媒体CDN的区别是:

传统CDN网络是客户端请求某一站点的数据,首先请求源站点的数据,如果源站点有数据就直接返回,如果没有就会直接通过主干节点请求源站点直接返回,并且边缘节点缓存该数据以便下一次客户端去请求加速,也就是说传统CDN网络有 热点数据 这一说。

流媒体CDN网络采用的推送+拉去的数据分发策略,也就是内容提供商将数据推送到主干节点,然后边缘节点在主干节点拉取数据,用户请求边缘节点的数据拉取数据流。

搭建一个简单的直播系统

ffmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。

ffplay

ffplay是一个使用了 ffmpeg 和 sdl 库的、一个简单的可移植的媒体播放器。

Nginx

Nginx是一款 轻量级Web 服务器/ 反向代理 服务器及 电子邮件 (IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行,同时Nginx也支持流媒体服务。

Step.1 安装Nginx服务器和RTMP模块:

brew install nginx-full --with-rtmp-module

Step.2 配置Nginx服务:

# 文件路径:/usr/local/etc/nginx/nginx.conf
vim /usr/local/etc/nginx/nginx.conf

# 修改配置文件: 
rtmp {
    server {
        listen 1935;
        chunk_size 4096; # 传输数据块的大小
        # 创建了一个应用
        application live {  
            live on;
            record off;   # 关闭录制
            allow play all;
        }
    }
}

# 热加载配置文件:
nginx -s reload

Step.3 推流到服务器

ffmpeg -re -i ***帝国-矩阵危机.mp4 -c copy -f flv rtmp://127.0.0.1/live/hacker-three

Step.4 拉取数据

ffmpeg -i rtmp://127.0.0.1/live/hacker-three -c copy dump.flv
ffplay rtmp://127.0.0.1/live/hacker-three

以上所述就是小编给大家介绍的《万人直播网络架构与CDN网络》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation

CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation

谢郁 / 电子工业出版社 / 2014-9 / 59.00

想象一下,一个网页只有HTML,没有CSS,那就是素颜和上妆的区别。而一个网页只有CSS,没用CSS 3,那就是马车和汽车的区别!汽车代表的是高效、美观,CSS 3的意图也是如此。移动设备的流行导致了响应式设计的流行,而CSS 3正是实现这种设计的精髓。《CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation》围绕的就是如何跨浏览器、跨设备进行高效率的CSS开......一起来看看 《CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具