高并发需求下VR 远程教育平台的设计与优化

作者: 陈知新 李竹村 王曼宁

高并发需求下VR 远程教育平台的设计与优化0

摘要:在远程教学中引入VR技术对系统的存储容量、带宽以及并发能力提出了更高的要求。采用微服务架构搭建远程教育平台,可以实现各业务子模块的无状态弹性运行,并通过容器平台作为底层支撑,满足高并发和高可用需求。集群化部署对象存储技术可为VR远程教育平台提供海量的存储空间,同时分摊用户访问流量,实现负载均衡。Galera和Elasticsearch数据库集群的多主特性,使底层数据库在分布式部署情况下保持强一致性。压力测试结果表明,该设计方案能够有效提高平台的并发性能。

关键词:VR;远程教育平台;高并发;高可用;集群化部署

中图分类号:TP315 文献标识码:A

文章编号:1009-3044(2024)17-0114-03 开放科学(资源服务)标识码(OSID) :

随着国家对新型基础设施建设的大力投入,5G 通信网络的覆盖范围不断扩大,预计到2025年底,全国将实现5G网络的基本覆盖[1]。5G网络所具备的高速率和低延时特性,消除了制约VR(虚拟现实)技术应用发展的障碍,使VR技术用于远程教育教学成为可能。本研究针对VR远程教育平台对海量存储、高带宽和高并发需求进行分析,设计了一套适合高并发需求的VR远程教育平台。

1 需求分析

1.1 提供沉浸式学习体验

给用户带来沉浸式体验是VR技术的优势与特色。目前主流的VR媒体摄录与编码包括半球面畸变法、正方体拟合、腰鼓畸变法等多种模式[2]。其中,半球畸变法使用多个简单的鱼眼镜头拍摄广角影像,将拍摄到的球状影像展开成二维,再按照传统视频的方式进行编码和传输,最终通过播放终端还原成球状的全景影像,是各类VR录像机最常使用的技术。

各类VR媒体编码与传输对远程教育平台没有额外的功能需求,但随着头戴设备技术的发展,实现良好的沉浸式体验需要较高的视频分辨率。根据实测,4K像素的VR视频在头戴设备上才能勉强达到高分屏播放普通720p视频的效果,但依然存在颗粒感。因此,VR远程教育平台必须支持8K以上视频的流畅播放,这对带宽需求、存储需求、服务器端的编码性能和终端的解码性能都提出了更高要求。

1.2 提供交互功能

VR 远程教育平台的交互功能主要包含两个方面:一是VR视频本身所提供的全景互动体验,用户可以通过终端设备控制观看视角,点击视频中的标记点实现互动;二是提供在线实验测试环境,例如为常规专业提供的客观题在线测试,以及为工程类学科提供的虚拟仿真平台[3]。

1.3 具备高级别的安全性与可靠性

在安全性方面,VR远程教育平台根据其行业用途的不同,需执行的信息安全等级保护也有所差异。教育属于社会公共服务,涉及民生,根据《信息安全等级保护管理办法》,或对社会执行构成损失的信息系统至少需要执行安全保护等级二级标准,系统架构及所需的模块组件必须足够成熟且安全可控。

在可靠性方面,远程教育平台一般要求7×24小时不间断运行,并设计至少能覆盖5万用户。实际上,在遇到冰灾、疫情等需要大范围支持远程教学的情况下,用于单一高校的并发访问量可达2~8万人。而根据湖南省教育统计快报的数据,用于省、市等不同级别、不同阶段教育的平台并发数需求如表1所示。

基于对大量VR教学视频进行编码测试,录制8K/ 30fps视频的原始码率约为50Mbps,这意味着在默认情况下,单台常规服务器最多只能支持约2 000人的并发用户。为了满足较大的区域覆盖需求,需要采用集群化部署的方式进行优化。

2 技术选型

基于上述需求,我们对流媒体传输协议、内容存储、数据库及全文索引、运维与部署等方面的关键技术进行了分析和选型。

2.1 流媒体传输协议

当前主流的流媒体传输协议包括RTP(RTCP、RTSP、RTMP) 、MMS、HLS等。其中,RTP协议与MMS 协议相似,都将音视频数据进行编码封装,辅以传输控制数据和传输质量监控机制,提供稳定可靠的音视频在线体验。由于带宽优化和防私接保护等优势,这些协议在早期被广泛应用。

HLS(HTTP Live Streaming) 协议是苹果公司提出的一种基于HTTP的流媒体传输协议[4]。它的重要特征是将媒体文件切片存储,并通过HTTP协议进行分发和重组,不依赖特定的服务端和客户端软件,具有良好的兼容性和可扩展性,适合大型网络视频服务平台,也同样适合VR远程教育平台。当前,YouTube、优酷、bilibili等知名平台均使用HLS协议提供服务。

2.2 内容存储

本平台采用分布式部署的MinIO作为内容存储。MinIO支持S3协议,没有存储对象数量限制,单个文件最大支持5TB[5],即使不对VR视频进行切片,也能满足所有课程需求。MinIO可支持32个节点组成集群,每个节点同时接入集群内网和外网,通过内网实现互联,外网提供服务,访问任意节点都能读取集群中的任意内容。

通过纠删码技术,MinIO可保护数据免受硬件故障和数据损坏,即使丢失一半节点的硬盘,也可以读取和恢复数据,具有优秀的可靠性。MinIO支持旁路服务,即直接通过接口面向用户提供读写网址,用户可以直接将文件写入MinIO或从MinIO下载数据,减轻业务服务端访问压力。

2.3 数据库与全文索引

在高并发场景下,远程教学互动带来的高频次数据库读写可能形成性能瓶颈。根据湖南师范大学智慧校园平台的实践经验,当并发数超过5 000时,用户认证业务可能导致单节点数据库运行满负荷,访问开始出现卡顿及无响应。

为满足成本和安全需求,本项目采用开源的MariaDB+Galera集群作为数据库。其优势包括:一是不增加额外开发成本,所有数据库访问与SQL语句编写与单节点部署无异,仅在严格控制数据读写次序的业务中需注意采用事务封装,避免数据不一致和死锁问题;二是Galera集群不区分主从节点,不需读写分离操作,任何节点的写入都通过同步机制分发到所有节点,保障数据一致性[6]。

针对MariaDB不提供原生中文全文索引的问题,测试结果表明像Mroonga这样的插件在高并发场景下表现不佳,容易导致数据库锁死和宕机。因此,本平台采用 Elasticsearch 提供全文索引支持。Elastic⁃ search支持分布式部署,具备良好的中文分词效果,对包含过亿文档的索引依然能保持良好的检索效率,并提供完善的分类汇总统计功能[7]。

2.4 运维与部署

在设计之初,我们考虑到平台的通用性,即该平台既可以小规模部署,满足较小覆盖范围的需求,在硬件资源有限的情况下也能正常运行;也可以支持大覆盖、高并发的业务需求。平台部署的组件和模块尽可能支持弹性部署和动态扩容,即在出现访问瓶颈时,能够通过简单配置增加运行实例和集群节点,避免出现大规模的数据迁移和系统重建操作。

基于上述要求,平台采用容器化方式进行部署。对于用户覆盖较小、负载较轻的平台可在单节点Docker环境中部署运行;对于覆盖区域较广、并发需求较高的平台,采用Rancher作为Kubernetes管理平台。其优势如下:管理与业务分离,业务的高负载不会影响管理平台的运行;业务节点可动态扩容,当硬件资源不足时,可以非常快捷地增加节点,并将现有的业务实例迁移至新节点;也可通过简单操作增加或减少实例数量,快速响应可能发生的访问量骤增;逻辑简单、操作便捷,容易形成固定模式的运维手册,在发生非程序BUG引起的宕机故障时,按照检查点清单逐一排查即可解决问题[8]。

3 功能模块设计

在业务服务端,平台采用微服务架构设计,将用户认证、课程管理、视频切片预处理、内容检索与呈现等功能模块单独封装,并尽可能支持无状态、多实例运行。所有功能模块采用RESTful风格的Web API提供访问接口,模块间通讯则由MQTT协议通过消息中间件提供实时的信号通知。

3.1 身份认证

平台采用独立封装的OAuth2授权协议模块来提供身份认证功能。当用户访问平台业务时,业务后端接口会读取请求头中的Token令牌,如果令牌无效则将用户重定向到身份认证模块。身份认证模块支持密码验证、短信验证、微信扫码验证等多种方式,并为验证成功的用户颁发新的Token令牌。令牌遵循JWT 标准,其优势在于令牌验证是基于签名算法的,服务端通过计算验证签名有效即可确认用户的合法性,无须到数据库中查询用户信息,也不产生I/O开销,相比传统的基于Session会话的身份验证模式性能更优[9]。

3.2 课程管理

课程管理由三部分组成:

一是课程元数据的增删改查操作,主要包括课程名称、层次、内容摘要、授课教师,课时与章节的描述等内容,其业务逻辑类似于CMS系统。

二是非结构化的课件管理,满足在线备课、课件及文档资料的上传和编辑等需求。我们采用WOPI+ Office Online来支撑,业务端通过WOPI协议创建一个在线文档的句柄,编辑和在线浏览都由受托管的Of⁃ fice Online来完成,文档的内容也全部保存在MinIO 对象存储中。

三是课程视频的管理,这一部分由MinIO提供的PresignedPutObject接口实现,即业务端通过接口获取一个预上传的地址,教师则通过UI直接将视频文件传输至MinIO中保存,存储完成后将结果写回业务数据库。这样可以实现无状态、多实例运行,数据库及I/O 压力降至最低。

3.3 视频切片预处理

由于HLS协议需要对视频进行切片预处理[10],故设计了这一独立模块来实现。具体业务逻辑如下:

在Kubernetes集群中运行一组Agent,这些Agent 接入消息中间件以侦听通知,等待预处理任务。教师上传课程视频后,会创建一个预处理任务,并将其推送至任务队列中。同时通过MQTT协议推送一个广播通知,告知全体Agent有新任务待处理。当前空闲的Agent收到通知后,会向课程管理模块请求执行任务,课程管理模块则从任务队列中取出一个任务进行派发。Agent获得任务后,从MinIO读取完整的视频文件,后端调用ffmpeg工具执行视频切片操作,生成ts 格式的视频序列以及m3u8索引。然后将ts序列和索引回写至MinIO,向课程管理端报告预处理任务已完成。如果任务执行过程中出现异常或超时,课程管理模块会标记任务的异常状态,并重新分配给其他Agent重试。显然,在这种机制下,各Agent均独立运行,支持动态扩容,方便检查与维护。

3.4 前端呈现

在Web浏览器端,平台采用Hls.js脚本来支持课程视频的播放。在手机端或VR终端中,采用支持HLS 协议的VR播放器来支持全景视频的播放。由于前述的ts视频序列和m3u8索引均存放在MinIO中,因此前端呈现之前需要通过PresignedGetObject接口获取对象的下载地址,并采用HTTP重定向的方式将对索引及内容的请求导向MinIO。这样业务端只负责解析地址并重定向,所有的IO和流量负载均由MinIO集群承担,会自动分摊到所有的节点上。因此,当VR远程教育平台需要支持更高的并发访问时,只需对MinIO集群进行扩容即可。另外,当实际情况超出预估时,也可以通过增加一个集群的方式来实现扩容,这需要在业务端启用MinIO多集群的随机分配功能,即在创建课程时,明确此课程对应的MinIO集群。而当单一课程负载超标时,则需要将课件资源在多个MinIO 集群上进行同步。

4 平台架构

根据前述的需求及功能模块设计,在高并发需求下整个平台架构分为业务后端、对象存储、数据湖三个板块。如图1所示,图中右部区域为业务后端板块,oss区域为对象存储板块,左下区域为数据湖板块,各板块的组织结构概述如下:

业务后端是平台的核心板块,其底层支撑为可动态扩容的k3s(一种轻量化的Kubernetes业务集群),另有一个Kubernetes集群作为业务集群的管理端,提供Rancher工具供运维人员使用。中层是按需编排的各类微服务模块,包括身份认证(OAuth2) 、课程管理(CMS) 、视频处理Agent池(VPS) 等。用于支撑各微服务模块调度及通讯的各类协议与组件也可以放在业务集群中运行,包括MQ消息中间件(我们选用的是RabbitMQ,其他支持MQTT协议的中间件亦可)、支持WOPI协议的文档管理组件等。

对象存储板块是存放VR远程教育平台海量音视频数据和课件资料的区域,由一个或多个MinIO集群组成。对象存储板块的具体规划需要对平台的并发访问量和容量需求进行评估,配置足够的节点服务器和硬盘空间。每个节点服务器均需配置双网卡,分别接入互联网和业务内网,并保障充裕的带宽,避免因在线人数过多导致的网速瓶颈。如平台需要覆盖全国且用户量特别巨大(达到国家智慧教育大平台这种量级),还可以考虑引入第三方CDN来进行内容分发。

数据湖板块主要包含一组MariaDB Galera集群和一组Elasticsearch集群。考虑到一些第三方组件在设计时并未考虑支持数据库集群,我们有三种解决方案:

1) 直接指定连接集群中的一台服务器,将集群当作单节点使用。由于Galera集群和Elasticsearch集群都没有主从之分,因此数据将自动在集群中同步,不会影响业务正常运行。这么做的缺点是将会导致各集群节点的负载无法平衡,增加服务停止响应的风险。

2) 在业务内网增加一个用于内部名称解析的DNS服务器,设置一个内部域名指向全部集群节点的IP地址,依靠TCP/IP协议底层的逻辑来实现负载均衡。这种做法通常有效,但在某些组件上依然会指向一个固定的节点,无法完全起到负载均衡的作用。

3) 部署一个Nginx作为负载均衡。这种做法的缺点是牺牲了集群的高可用特性,因为一旦Nginx崩溃,业务也将随之宕机。

5 总结

本文提出了一种VR远程教育平台设计方案。该方案在设计之初充分考虑了高并发与高可用的实际需求,采用了最新的理念和前沿技术进行规划,理论上具备极高的性能与稳定性。部分模块在湖南师范大学进行了生产环境测试。在数据库集群和多实例运行的情况下,响应速度和稳定性相比同类系统有显著提升。在5万并发的压力测试中,访问成功率由18%提升至95%,显示出显著的效果。

【通联编辑:唐一东】

基金项目: 2021 年湖南省普通高等学校教学改革研究项目,基于5G+VR 技术的中小学教师继续教育研学场景构建及其应用研究(项目编号: HNJG-2021-0404)

上一篇 点击页面呼出菜单 下一篇