当前位置: 首页 > news >正文

【视频观看系统】- 技术与架构选型


✅ 项目技术选型方案

🧱 一、整体架构风格

项目层级技术选型说明
架构风格微服务架构(Spring Cloud)独立部署、易扩展、易维护
服务通信HTTP(RestTemplate 或 Feign)+ RocketMQ同步调用 + 异步事件
注册中心Nacos服务注册、发现、配置中心
配置中心Nacos 配置管理多服务统一配置
API网关Spring Cloud Gateway路由转发、权限验证、限流
服务监控Spring Boot Admin + Actuator实时查看服务状态

📦 二、后端技术栈

模块技术说明
微服务框架Spring Boot + Spring Cloud Alibaba轻量、成熟、社区活跃
网关层Spring Cloud Gateway支持路由、限流、鉴权
用户鉴权Spring Security + JWTToken 鉴权,接口保护
消息队列RocketMQ弹幕异步处理、事件解耦
异步任务RocketMQ + @Async用户行为、通知、日志处理
数据访问MyBatis-Plus简洁、高效的数据操作
数据库MySQL主体业务数据持久化
缓存Redis登录态、弹幕热数据、限流
分布式锁Redisson防止重复上传/重复弹幕等问题
对象存储MinIO(可替代阿里OSS)视频、封面图等大文件上传
视频转码FFmpeg(本地调用)mp4/HLS 格式转码
文件上传Multipart 分片上传 + 秒传机制(可选)大文件上传优化方案
异常处理Spring AOP + 全局异常捕获返回标准 JSON 错误响应
日志系统Logback + ELK(可选)可扩展做日志分析
单元测试JUnit5 + Mockito各模块测试覆盖

💻 三、前端技术选型

项目部分技术说明
技术栈原生 HTML + CSS + JavaScript简洁直接,适合后端主导开发
视频播放Video.js强大、免费、兼容性好
弹幕支持WebSocket + Canvas 或 DOM 渲染实现实时弹幕飘屏
弹幕发送原生 AJAX / WebSocket 发送接口与后端集成
页面构建可使用简单模板或静态 HTML 文件可结合 Thymeleaf 做 SSR(可选)

🧰 四、开发与部署工具

工具用途推荐
Git + GitHub / Gitea版本控制必备
Maven构建管理Spring Boot 默认
Docker容器化部署支持微服务拆分部署
Docker Compose / K8s服务编排本地推荐 Compose,上线推荐 K8s
Postman / Swagger接口测试使用 Swagger 自动生成文档
RabbitMQ Console / RocketMQ Console消息调试查看消息队列状态

📺 五、服务模块拆分建议(按微服务分层)

微服务描述
user-service用户注册、登录、认证(JWT)
video-service视频上传、转码、播放、信息管理
comment-service评论、点赞、收藏等用户互动
danmaku-service弹幕接收、过滤、推送(RocketMQ + WebSocket)
file-service文件上传接口、MinIO 存储对接
admin-service后台管理(视频审核、用户管理)
search-service(可选)视频搜索、标签索引(可结合 ElasticSearch)
gateway-service请求入口、路由、鉴权、限流
notification-service(可选)系统通知、用户举报处理、异步发消息

📌 说明

  • 你可以先开发单体版验证功能逻辑,之后再拆服务。
  • 所有服务都可以部署为独立的 Spring Boot 应用。
  • 前期部署环境可以本地运行 + Docker Compose 管理 Redis、MinIO、RocketMQ。
  • 弹幕服务是后期的一个关键亮点,用 WebSocket + RocketMQ 解耦,支撑高并发弹幕实时推送。

http://www.lryc.cn/news/583194.html

相关文章:

  • HashMap源码分析:put与get方法详解
  • 爬楼梯及其进阶
  • Kubernetes 存储入门
  • 由 DB_FILES 参数导致的 dg 服务器无法同步问题
  • 搭建一款结合传统黄历功能的日历小程序
  • 汽车智能化2.0引爆「万亿蛋糕」,谁在改写游戏规则?
  • A1220LUA-T Allegro高精度霍尔效应开关 车规+极致功耗+全极触发 重新定义位置检测标准
  • 【Gin】HTTP 请求调试器
  • 微软官方C++构建工具:历史演变、核心组件与现代实践指南
  • Rust与Cypress应用
  • 在Ubuntu上安装配置 LLaMA-Factory
  • 人工智能-基础篇-27-模型上下文协议--MCP到底怎么理解?对比HTTP的区别?
  • AI应用实践:制作一个支持超长计算公式的计算器,计算内容只包含加减乘除算法,保存在一个HTML文件中
  • Apache Tomcat SessionExample 漏洞分析与防范
  • 【AI大模型】PyTorch Lightning 简化工具
  • Node.js 是什么?npm 是什么? Vue 为什么需要他们?
  • Flutter基础(前端教程⑦-Http和卡片)
  • 【数字后端】- Standard Cell Status
  • SQLZoo 练习与测试答案汇总(复杂题有最优解与其他解法分析、解题技巧)
  • Java 各集合接口常用方法对照表
  • 解决SQL Server SQL语句性能问题(9)——SQL语句改写(7)
  • 如何识别SQL Server中需要添加索引的查询
  • nl2sql的解药pipe syntax
  • Linux入门篇学习——Linux 编写第一个自己的命令
  • 一天一道Sql题(day04)
  • 详解Kafka重平衡机制详解
  • Vue+ElementUI聊天室开发指南
  • Vue3 Element plus table有fixed列时错行
  • 7.神经网络基础
  • 【深度学习】【入门】Sequential的使用和简单神经网络搭建