视频直播软件开发不得不引起重视的网络架构问题
直播在互联网市场中一直都处于稳定发展的局面,虽然直播行业经历了不同时期的洗牌和考验,但它还是依靠自身强大的变现能力“存活”到现在。而且随着即将统一运营商服务和流量资费的不断下调,更是给视频直播软件开发业务提供了发展“温床”,比如接下来我要给大家分享的内容,开发过程中需要注意的网络架构相关。本文主要以CDN为主来介绍相关的架构问题。
对于传统的点播业务来说,CDN只有下行分发不同。但是对于泛娱乐和游戏类的直播场景来说,直播架构是分为上行汇聚和下行分发两种的。
1.主播推流模式
(1)直播端推流到上行边缘节点。
(2)上行边缘节点将流推到汇聚核心。
(3)汇聚核心收到流后,和 CDN 一样,不需要主动将流分发到边缘,一些转码、水印或录制类的业务通常是在汇聚核心完成。
2.回源拉流模式
如果用户在访问到汇聚核心后,会向一个回源节点拉流,回源节点向客户源站拉流。
3.下行观看流程
(1)观众到边缘节点拉取直播流。
(2)在边缘节点上如果存在音视频流,可以直接发送给观众,如果没有就会向上一级回源。
(3)上一级节点可能是中转节点,也可能是汇聚核心。通常会在两种情况下选择是否经过中转节点,即下行边缘到汇聚核心链路质量和汇聚核心处理能力。
对于CDN来说,是不可能单独使用一个汇聚核心的。如果使用单独的汇聚核心,一旦遇到网络故障或者是高并发等情况发生,就会导致整个直播业务出现瘫痪的情况。况且,单独的汇聚核心无论怎样都是无法覆盖全国的,所以就需要大量的中转节点。通常,直播会使用多汇聚核心的架构,即以下两种方式。
1.链路选优
即上行到一个链路最优的核心,下行也到一个链路最优的核心。两个核心之间使用专线“打通”,从而保证传输质量。国内通常使用3个核心就可以覆盖国内的主要运营商和区域,5个核心基本就能全覆盖所有边缘节点。链路选优问题是需要进行长期的实时数据监控的。比如,直播流在哪个汇聚核心,是汇聚核心之间互相能拉到流的基础。如果需要考虑一些异常节点无法使用的情况,那么就需要进行对应的数据清理。需要注意的是:多一级拉流会增加首屏时间。
2.保证每个汇聚核心都有流
即下行边缘无论如何都能拉到流。这一架构的优点就是不需要使用数据库进行记录是推到了哪个核心,但是也容易存在以下几个问题。
(1)上行边缘到两个核心的质量无法保证,如果上行边缘到某个汇聚核心的链路质量较差,那么从这个汇聚核心拉流的用户观看质量肯定会很差。
(2)上行边缘是需要推两份流到汇聚核心的,这样一来就会造成一定的带宽浪费。对于直播来说,带宽的耗费远远要比主播的收益要高得多。
(3)为了解决上行边缘到所有核心的链路问题,就需要选取很多的中转节点,或者是使用BGP的机房作为上行边缘,这样就会耗费更大的成本。
在视频直播软件开发过程中,CDN的架构也是相当重要的。至于选择哪种架构,还是要根据直播平台自身的定位和资金等方面来决定的。
本文声明原创,转载请注明出处。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
3月20日云栖精选夜读 | 阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量
【点击订阅云栖夜读周刊】 阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量 3 月 21 日,阿里巴巴将宣布开源 Alibaba Dragonwell。届时,开发者可通过阿里云开发者中心及 Github 社区下载使用。 热点热议 阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量 作者:amber涂南发表在:阿里系统软件技术 阿里巴巴联合汉仪重磅推出五款人工智能字体:汉仪天真体、英雄体等 作者:技术小能手 专访百胜软件CTO:30万家门店,从MySQL到阿里云POLARDB云原生数据库 作者:技术小能手 知识整理 如何在E-MapReduce中进行Kafka集群间数据复制 作者:鱼跟猫发表在:阿里云E-MapReduce PHP使用Beanstalkd实例 作者:再现理想 CentOS编译和yum安装Beanstalkd及service和systemctl管理 作者:再现理想 JavaScript 教程 作者:webmirror CentOS6.9搭建Git服务器并使用Gitolite配置权限 作者:再现理想 美文回顾 5G万物互联时代,物联网设备需警惕DDo...
- 下一篇
深度 | Android 整体设计及背后意义
阿里妹导读:现实工作中经常可以听到这样的说法:框架的升级带来协议性能的提升、编程模式的变革带来业务的飞跃...... 姑且不论这些表述是否有问题,实际上如果系统地看待事物整体,可能会有不一样的发现。以LINUX为例,尽管其内核大获成功,但如果不是遵循POSIX、并成为一个开源、精简的UNIX实现,很难想象其最终会有何种发展。因此,对事物进行全局和一定深入的探究有时会有更多启发。 今天,阿里高级无线开发专家所为将结合自己多年的经验,为你深入阐述整个 Android 技术域及移动研发生态,期待与大家共同探讨。 1. Android设计的现实意义 架构的工程意义在于:定义并解决一类问题,为需求到实现的平稳过渡提供保障。传统意义的Android架构(图1)已被人熟知,但不同角色的视角不同,例如认为Runtime和框架是其核心、或者将Androi
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作