一种流媒体服务系统分布式架构的研究

2018-03-28 22:38彭方翔广东南方新媒体股份有限公司
传播力研究 2018年20期
关键词:内存服务器节点

彭方翔 广东南方新媒体股份有限公司

从2017年起,以抖音、快手作为领头羊的短视频社交类手机应用引领着网络视频行业的发展;进入2018年,在经历了20个版本迭代和半年近12倍的用户增长之后,抖音的发展步入了一个新的阶段,抖音实现了自增长[1];到了今年6月,抖音短视频公布了今年上半年数据——日活超过1.5亿,月活超过3亿[2]。在网络视频业务快速发展的今天,在架构设计时就要充分考虑系统具有高模块化、高可靠性和高可扩展性的能力。

一、网络视频业务系统

(一)业务系统分析

非实时网络视频业务系统主要包括三个部分:流媒体服务系统、内容分发网络和客户端软件。流媒体服务系统收集原始音视频数据,对音视频数据进行流化处理后输出到内容分发网络,由内容分发网络完成对终端用户的内容分发,让用户使用播放器观看点播视频。

1.常用的流媒体协议主要有基于HTTP 渐进下载的HLS流媒体协议和基于RTP实时流媒体的RTMP/RTSP协议。HLS是由苹果公司开发的流媒体协议,与RTP不同,HLS不需要服务端来提供播放控制,目前在非实时网络视频业务中比较流行。

2.内容分发网络,也叫CDN,负责接收客户端发送的请求,通过全局和本地负载均衡系统调度请求到最接近的网络节点上,将封装的流媒体分片文件连同索引文件一起发送给客户端。目前互联网CDN服务的技术成熟、适配简单,主流技术架构是:自有流媒体服务系统+租用互联网CDN服务。

3.客户端软件负责确定应该请求的具体媒体流,下载索引文件和流媒体分片文件,并在下载后通过拼接分片将流媒体重新展现给用户。客户端软件通常是播放器或者带有播放器插件的应用或浏览器。

(二)流媒体服务系统

流媒体服务系统作为支撑网络视频业务的核心系统,其性能决定了网络视频业务服务质量。衡量流媒体服务系统,最关键的指标是流输出能力和支持并发请求的数量。下面我们以单台HLS流媒体服务器为例,分析系统的工作流程。

1.媒体文件注入过程

(1)从硬盘中分段读取流媒体文件,存储到内存中。

(2)CPU对内存中的流媒体文件进行解码、重新编码、切片、封装、存储、索引等流化处理。

(3)处理完的播放列表数据,放在内存;处理完的切片数据经过,从内存写入硬盘。

2.响应访问请求过程

(1)网络Web容器收到访问请求解包后将播放列表和切片数据请求发到相应模块进行索引定位。

(2)播放列表直接从内存读取;切片数据从硬盘读取放入到内存。

(3)在Web容器对内存中的数据打包发送。

总结以上两个过程,推流服务系统大量消耗的系统硬件资源主要是CPU、内存、磁盘I/O和存储容量。

二、流媒体服务的分布式架构设计

分布式架构主要面对高并发、高性能和高可用的应用场景,通过系统拆分成不同的子系统模块,具有以下优点:(1)模块间低耦合度,系统整体可靠性高;(2)各模块利用率高、方便横向扩展;(3)各模块之间的边界明确,有利于灵活部署和运维管理。

关于分布式系统,不同的业务需求面对的应用场景不一样,使用的架构设计也不一样。因此,针对网络视频业务大并发量的应用场景,结合流媒体服务系统功能对CPU处理能力、内存、磁盘I/O能力和磁盘容量的要求,选择把系统分成三个服务节点:(1)负载均衡服务节点;(2)流媒体服务节点;(3)存储节点。

平面4参数转换属于两维坐标转换,对于三维坐标,需将坐标通过高斯投影变换得到平面坐标再计算转换参数[9]。

(一)负载均衡节点

负载均衡节点主要解决大量用户回源数据的请求分配到HLS服务节点的多台服务器上。负载均衡分为四层和七层,四层负载均衡主要基于TCP协议,可以做任何基于TCP/IP协议的软件的负载均衡;七层负载均衡,又叫反向代理,基于HTTP、RTMP协议实现web服务、图片、视频等静态文件的访问服务。从软件层面实现负载均衡的主流工具 有Nginx(七 层)、Haproxy(四 层)和LVS(四层)等。

1. Nginx

Nginx作为一种高性能的Web和反向代理服务,Nginx以支持高并发连接、低资源消耗、部署运维简单等优点而闻名。对于请求视频内容这一类静态服务,Nginx以多连接对应一个进程的异步非阻塞请求处理能够支持更多的并发请求。Nginx还具有多种负载均衡算法实现不同的调度功能[3]。

2.虚拟路由冗余协议(VRRP)

负载均衡节点作为用户访问的第一节点,必须具备高可用性,这就需要在节点上部署多台负载均衡服务器来集群。目前,较多使用VRRP来把几台路由设备联合组成一台虚拟的路由设备,保证当主机的下一跳设备出现故障时,可以及时再次选择新路由器来接替业务,保持了内部网络和外部网络通讯的连续性和可靠性。

(二)流媒体节点

因为有了负载均衡节点,HLS服务节点在响应请求过程变得简单了许多,只需要由Nginx来分配访问请求即可。HLS服务节点的大部分硬件资源可以用来承担媒体文件注入的任务。

通常,HLS服务节点上游的媒资管理平台通过接口方式以FTP注入点播媒资数据、以UDP注入直播媒资数据。根据机械磁盘小文件读写性能非常低,所以通常选择把m3u8文件放入内存,把TS文件放入磁盘。

(三)存储节点

流媒体服务系统中切片文件数据占了所有数据的95%以上。一套注入了10万小时时长视频的流媒体服务系统,切片文件的数据量就有几百T。因此采用由“缓存节点+共享式存储节点”的两级存储架构,能够提高推流服务系统的整体效率和稳定性,便于节点扩容。

1.缓存节点

部署在负载均衡节点上的Nginx还有一个重要功能--缓存。Nginx能够对客户已经访问过的内容在本地建立副本,这样在一段时间内(该时间长度可配置)再次访问该数据,就不用再次向HLS服务节点发出请求。同时,当后端服务器宕机时,Nginx服务器上的副本资源还能够回应相关的用户请求,在一定程度上提高了系统整体的鲁棒性。

2.网络附属存储(NAS)

NAS作为一种特殊的专用数据存储服务器,包括可热插拔存储器件和内嵌文件读取系统,能够支持多种访问协议,目前广泛应用于各种信息系统中。通过把NAS挂载在HLS服务节点的服务器下,存储所有注入媒资文件的切片文件,既满足了大量数据的存储要求,又具有良好的系统扩展能力。

三、结语

本文从当前网络视频快速变化的业务场景出发,提出“负载均衡节点+HLS服务节点+存储节点”的架构以建设高模块化、高可靠性和高可扩展性的流媒体服务系统。围绕该架构的实现,本文进行了解决方案的分析和选择,讨论了利用Ningx软件同时实现把负载均衡节点和缓存节点、利用VRRP实现负载均衡主备、利用NAS提供大容量存储等实现方法,提供了技术上的探索,具有重要意义。

猜你喜欢
内存服务器节点
CM节点控制在船舶上的应用
Analysis of the characteristics of electronic equipment usage distance for common users
基于AutoCAD的门窗节点图快速构建
通信控制服务器(CCS)维护终端的设计与实现
“春夏秋冬”的内存
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
抓住人才培养的关键节点
内存搭配DDR4、DDR3L还是DDR3?