网络直播系统实现千万级用户直播需要“非常用心”

发布来源:云豹科技
发布人:云豹科技
2019-03-04 09:00:03

网络直播系统自兴起至今,历经“重重考验”之后形成如今稳步增长的发展趋势。作为互联网领域的热门产品之一,直播不仅在使用方法上深入人心,而且还需要各种各样的技术支持。再加上直播实时性极高的特点,也给开发人员增添了不少难题。至于直播是怎样实现并且支持千万级用户完成直播过程的,我们可以从几个方面来简单分析一下。

直播系统源码

1.缓存

服务层在直接调用后端的缓存集群之后,在架构中增加了本地缓存。举个例子,网红主播在开播后会在极短的时间内进入一大批粉丝观看直播,这个时候如果将全部请求都导入后端集群,那么就会给后端集群带来非常大的压力。当大量数据在短期内变化不大时,可以在前端业务层上本地缓存。在缓存中需要注意的是,重点的数据需要单独布置。

2.互动

像网络直播系统都属于实时性和互动性强的应用场景,直播间内的聊天室也与传统的聊天室不同,不仅信息量巨大而且还具备一定的实时性。要想支撑如此庞大的用户聊天室就需要将聊天室的架构进行分层,分别为接入层和路由层,其中接入层又可分为链接保持层和业务逻辑处理层。

1)在接入层保持用户的链接,路由层进行消息中转,然后业务层对接入层传入的消息进行处理。客户端上行消息后,通过接入层接入业务逻辑处理。

2)消息经业务逻辑处理之后需要进入本地队列,请求平滑后进行业务处理,平滑的过程取决于后端的处理线程,从而保持消息队列中消息数目最少,以保证消息到达的即时性。

3)业务逻辑层对消息进行处理之后,将消息转发给后端的路由层,路由层根据消息的信号记录,通过路由层的索引规则发给其他路由节点。其他的路由节点下发给自身挂载的接入节点。

4)接入节点收到消息后,同样进入消息队列对消息进行判断,如果是单方向的消息直接转发,多方向的消息循环转发给节点用户。

直播软件源码

3.调度

调度主要包括推流调度和播放调度。移动端直播与传统秀场直播不同,传统秀场直播通过PC端进行推流,移动端的网速和性能相比于PC端都存在着一定的差距,所以移动端的推流大都受限于用户的设备和地理位置的不确定性。大部分的直播平台在推流和播放的调度方面都采用三方的CDN。先到调度中心获取离用户最近的推流节点,用户将流上传到推流节点后,该节点将流分发到流控中心,流控中心再将流分发到内部的CDN上,内部CDN再将该流下发到各个节点。当用户需要观看直播时,会先到最近的调度节点上获取最近的播放节点,之后就可以直接播放了。

4. 模块拆分化

前端在进行URL分层之后,后端需要按照业务功能进行模块拆分,将复杂的功能进行拆解。模块化拆解后,不仅实现单模块资源共享,还可以将核心业务与非核心业务区分,将核心业务放在核心资源池内,在突发流量到来时能够优先保证核心业务的可用性。

5. 资源分层处理

将网络直播系统按照功能模块拆分后,后期的资源管理就变得十分简单。在接入层搜索全部日志资源,对所有的请求进行分析,以便于后期监控和数据分析等处理。在接口层用户请求之后下发到不同的接口集群上,接口集群对后端的服务进行组合封装。在预知大的活动发生之前,可以在该层人工或系统进行自动扩容。

直播源码

6. 数据库

在直播应用场景下可以对数据库进行读写分离,比如MySQL,同时还可以对数据库进行水平、垂直拆分。

     对于实时性和互动性要求都非常高的网络直播系统来说,实现千万级用户的直播实属不易。所以,在系统架构设计和开发过程中都需要非常用心才行。只有这样,才可以开发出用户黏性高的直播app。

本文声明原创,转载请注明出处。(www.yunbaokj.com)

上一篇:需要“被提名”的抖音短视频程序推荐机制

声明:
以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任