登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 计算机类 > 计算机科学与技术 > 正文

基于异步架构的视频管理系统后端设计和实现毕业论文

 2021-11-17 11:11  

论文总字数:40866字

摘 要

随着互联网视频产业的发展,视频上传、转码、播放、下载等视频管理操作在许多视频网站上随处可见。传统同步架构的视频管理操作具有可扩展性差、容易引发超时、CPU/GPU资源利用不均衡等缺点。

因此,本课题主要开发一个基于异步架构的视频管理系统来尝试解决这些问题。本系统总体采用Spring Boot框架进行Web后端程序开发。为避免超时,使用异步线程来实现IO密集型程序的异步化,使用消息中间件RabbitMQ来实现CPU/GPU密集型程序的异步化,并且使用WebSocket实现后端异步消息返回。为解决资源利用不均衡的问题,Web处理程序和视频处理程序划分为不同的微服务,可以进行分布式多节点部署。为了提高系统的可扩展性,还采用分布式文件系统FastDFS存储视频文件。在视频处理方面,本系统使用FFmpeg进行视频的转码、加水印等操作,使用HLS协议进行流媒体视频播放。

本论文主要论述该系统的设计与实现过程,为互联网视频行业提供一种可行的解决方案和技术参考。

关键词:视频管理系统;异步架构;异步线程;消息中间件;分布式存储

Abstract

With the development of the Internet video industry, video management operations such as video uploading, transcoding, playing, and downloading can be seen everywhere on many video websites. The video management operation of the traditional synchronous architecture has the disadvantages of poor scalability, easy timeout, and unbalanced CPU / GPU resource utilization.

Therefore, this subject mainly develops a video management system based on asynchronous architecture to try to solve these problems. This system generally adopts Spring Boot framework for Web back-end program development. In order to avoid timeouts, asynchronous threads are used to achieve asynchronous IO-intensive programs, message middleware RabbitMQ is used to achieve asynchronous CPU/GPU-intensive programs, and WebSocket is used to achieve back-end asynchronous message return. In order to solve the problem of unbalanced resource utilization, Web processing programs and video processing programs are divided into different microservices, and distributed multi-node deployment can be performed. In order to improve the scalability of the system, the distributed file system FastDFS is also used to store video files. In terms of video processing, this system uses FFmpeg for video transcoding, watermarking and other operations, and uses HLS protocol for streaming video playback.

This paper mainly discusses the design and implementation process of the system, and provides a feasible solution and technical reference for the Internet video industry.

Key Words:video management system; asynchronous architecture; asynchronous thread; message middleware; distributed storage

目 录

第1章 绪论 1

1.1 研究背景 1

1.2 研究目的及意义 1

1.3 国内外研究现状 2

1.4 研究内容 2

第2章 相关理论及技术介绍 4

2.1 开发环境及工具 4

2.1.1 IntelliJ IDEA 4

2.1.2 MySQL Workbench 4

2.1.3 WSL 4

2.2 开发技术 4

2.2.1 技术框架概述 4

2.2.2 Spring Boot、Spring Security和Spring MVC 5

2.2.3 MySQL及MyBatis 6

2.2.4 AMQP及RabbitMQ 6

2.2.5 WebSocket及STOMP 6

2.2.6 FastDFS 6

2.2.7 Eureka及Feign 6

2.2.8 HLS及FFmpeg 7

2.3 异步架构基本原理 7

2.3.1 前端异步 7

2.3.2 后端异步消息返回 7

2.3.3 后端IO密集型程序异步 7

2.3.4 后端CPU/GPU密集型程序异步 8

第3章 系统分析 9

3.1 可行性研究 9

3.1.1 现有系统分析 9

3.1.2 技术可行性分析 9

3.1.3 操作可行性分析 9

3.1.4 法律可行性分析 10

3.2 功能性需求分析 10

3.2.1 需求描述 10

3.2.2 用例分析 13

3.2.3 状态分析 16

3.3 非功能性需求分析 18

3.3.1 运行环境 18

3.3.2 性能 19

3.3.3 可靠性 19

3.3.4 安全性 19

3.3.5 可扩展性 19

第4章 系统设计 20

4.1 系统总体设计 20

4.2 系统工程结构设计 20

4.3 数据库设计 22

4.3.1 数据库概念模型设计 22

4.3.2 数据库逻辑模型设计 25

4.3.3 数据库物理模型设计 31

4.4 主要功能模块设计 32

4.4.1 视频上传和转码模块设计 32

4.4.2 视频播放模块设计 33

4.4.3 视频下载模块设计 34

4.5 数据传输对象设计 35

4.6 HTTP接口设计 36

第5章 系统实现 37

5.1 视频上传模块实现 37

5.2 视频转码模块实现 38

5.3 视频播放模块实现 40

5.4 视频下载模块实现 42

第6章 系统测试与部署 43

6.1 系统测试 43

6.2 系统部署 46

6.2.1 项目打包 46

6.2.2 运行程序 46

6.3 部分运行效果 48

第7章 总结与展望 51

7.1 研究总结 51

7.2 研究展望 51

参考文献 53

附录A SQL脚本 54

致谢 59

绪论

研究背景

近年来,随着互联网的大幅度普及和提速降费等政策的落实,互联网视频产业蓬勃发展。首先,视频内容分发模式不断革新。传统模式是视频节目出品方先将视频放到电视或者电影院线进行首播,再到互联网视频网站上进行播放。后来又发展了互联网模式,出品方直接将作品放到视频网站上进行播放,于是涌现了很多网络电视剧和网络电影。而现在又有了C2C模式,用户自己创作视频作品,并将视频放到互联网上。抖音和快手等短视频APP都是采用这种模式。其次,网络视频播放设备也变得多种多样。在互联网网速还不发达的时期,只能通过电脑观看互联网视频。后来移动互联网技术不断升级,高带宽和低延时为移动端播放网络视频提供了可能。还有各种嵌入式设备,如互联网电视等,也逐渐加入到播放网络视频的行列。再次,网络视频用户呈指数增长。从各种视频网站的一些视频的播放量、评论量可见一斑。另外,网络视频用户的消费也不断增长。视频网站推出了各种收费项目,如付费电影、VIP点播、付费超前点播等。最后,网络视频平台监管体系不断完善,许多视频网站都具有视频审核和各种举报策略。也推出了很多DRM措施,如向视频加水印或者限制视频下载等。

研究目的及意义

互联网视频产业的蓬勃发展丰富了人们的日常精神文化生活,但也提出了许多新的技术挑战。首先,对于C2C模式的兴起,越来越多的用户都趋向于创作视频。这也意味着上传视频量也在不断增长。这可以通过增加网络带宽来解决这个问题。但是由于上传的视频需要转码和加水印等操作。这是一个CPU/GPU密集型过程,需要大量CPU或GPU资源和处理时间。如果视频处理程序阻塞了Web程序,就不能及时对现有请求做出响应。如果视频处理程序占用了大量的算力,Web程序也不能处理新的请求。这样视频网站基本就崩溃了。再次,用户的上传视频量不断增长,视频文件的存储也变为一个难题。传统的视频文件直接存储到磁盘上,难以实现动态扩容。最后,用户需求不断增长,业务逻辑也变得更加复杂。如各种社交系统,包括视频收藏、评分、评论等,还有各种收费系统和监管系统。

使用一些新的开发技术可以很好地解决问题。首先,使用消息中间件可以对一些具有性能瓶颈的系统进行解耦,让具有不同性能需求的程序相对地隔离开,然后协调工作。使用异步架构既可以让Web程序及时响应前端请求,也可以让耗时程序能正常执行。其次,使用分布式文件存储系统,既可以满足动态扩容的需求,也可以进行负载均衡。最后,针对复杂业务逻辑,Spring Boo[1]的AOP、IoC和各种框架可以在一定程度上减轻开发者的工作量。因此,利用这些新技术设计并实现基于异步架构且具有基本实用功能的视频管理系统很有必要。

国内外研究现状

在2015发表的《Design and Implementation of a Multi Video Transcoding Queue Based on MySQL and FFMPEG》[2]中,介绍到了使用任务队列进行Web后端视频处理。文中介绍的任务队列是使用MySQL实现的。数据库中的每一条记录表示一个任务。将MySQL数据库中的一个字段设置为一个状态标志。使用这个状态标志来表示任务的状态。通过MySQL的事务机制来实现队列操作的互斥。由于MySQL支持多用户网络访问,因此实现了耗时任务与其它任务的解耦,也是一种异步架构。但是这种方法有一些缺点,比如,需要对数据库进行轮询来获得当前正在执行的任务数,保证数据一致性需要使用事务机制,而反复的轮询必定会降低数据库访问效率。

请支付后下载全文,论文总字数:40866字

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图