直播开发过程中关于直播技术的架构问题
在直播开发过程中,需要关注的点有很多。但是我们并不能把关注点只是放在客户端如何去采集音频数据,或者是客户端的推拉流的相关内容,而是应该先了解一下直播技术的架构问题。这样一来,对于直播技术的运转流程理解起来也就更加容易了。
1.简单的音视频直播架构
这种架构相对比较简单,可以利用已有的CDN,比如阿里、腾讯、百度等,然后再自己搭建一个服务器并完成服务层的搭建。这个时候,可以先向这一服务器(我们可以叫做信令服务器)发送共享音视频指令,然后通过摄像头采集相关的音视频数据,编码之后通过RTMP的协议将音视频流推送到CDN 。接收端向信令服务器发送指令从而获取所共享的音视频流的名称,再通过这个名称从CDN中拉取音视频流,经过解码之后渲染在屏幕上。
2.实时交互的音视频直播架构
相比起上面的直播架构,这一种直播架构相对来说比较复杂。它们之间的主要区别就是:增加了自有网络。客户端通过UDP进行数据传输,这样可以大大的减少由于网络和CDN结构所导致的音视频延迟的问题。在共享音视频的时候,都是通过UDP协议上传到各自的网络服务器上,这时候如果有其他人要参与实时互动的话,参与者也会通过UDP连接到这个网络,从而达到实时互动的效果。其中,音视频数据上传到自有的网络上之后,还需要通过专门的服务将数据流转化成为RTMP流并推向CDN,这样一来,大多数不参与实时互动的用户就可以在CDN上直接获取音视频的数据了。这一架构的优点就是:既可以满足实时互动的需求,又可以满足大批用户只看不互动的需求。
3.解决高负载和并发问题
为了能够解决实时互动负载过大和高并发的问题,就需要增加资源管理服务器从而实时监测各个服务的资源。在共享音视频时,资源管理器可以分配最佳的服务器给用户使用,而且服务器的资源是可以根据需求来进行横向扩容的。为了增加它的执行效率,服务端通常会使用C或C++语言进行编写。
总体来看,实时互动直播已经成为直播最主要的发展趋势。在直播开发的过程中,不仅需要了解客户端的采集、推拉流等方面的问题,还可以从直播技术的架构方面入手去详细了解直播运行过程中的相关问题。在了解直播架构问题之后,关于直播其他方面的知识相对起来也就更加容易理解了。
本文声明原创,转载请注明出处。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【译】混沌工程与区块链
作者 Vipin Bharathan原文:https://medium.com/@vipinsun/chaos-engineering-the-blockchain-51e60ae74d27 第一部分. 应用混沌工程理论到区块链框架。 混沌与工程两个字是没有什么关系的。在这篇文章,我们会探索下为什么他们会组合在一起并且应用在区块链上。第二部分我们会看到混沌工程在Hyperledger Indy的实现。我们用一个工业界不常见的缩写,混沌实验框架(chaos experimentation framework(CEF))。在这篇文章里为了使用方便,我们使用这种缩写形式。 这是一个使用微服务组成巨型可伸缩分布式系统的时代。Netflix,Linked-In,Medium,Amazon,Microsoft Azure,Uber,AirBnb等。
- 下一篇
高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架
在过去持续分享的几十期阿里Java面试题中,几乎每次都会问到Dubbo相关问题,比如:“如何从0到1设计一个Dubbo的RPC框架”,这个问题主要考察以下几个方面: 你对RPC框架的底层原理掌握程度。考验你的整体RPC框架系统设计能力。 具体,mike来为大家详解。 RPC和RPC框架 1.RPC(Remote Procedure Call) 即远程过程调用, 主要解决远程通信间的问题,不需要了解底层网络的通信机制。 2.RPC框架 RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式、以及通信细节。 实际使用中,并不需要关心底层通信细节和调用过程,让业务端专注于业务代码的实现。 国内大家熟知的PRC框架,阿里的HSF和Dubbo(开源) Dubbo的发展由来 1. 业务规模小 比如早期一个应用Java War包,将所有功能都打包,部署在一个单机服务器,调用接口也比较方便,不涉及到任何分布式场景。 2.业务规模变大 随着业务的快速发展,业务越来越多、子系统也越来越多时。比如:淘宝的交易系统、商品系统、用户系统、评价系统...上百个系统的出现。系统变得越来越复杂,业务代码依然...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8