前言
- 最近在做
音视频会议系统服务
搭建的工作任务,因为内容过多,我会逐篇分享相关的设计方案、开发思路、编程语言、使用的组件集合等等。- 如果你也有大型音视频会议系统搭建架构的需求,希望这些可以对你有所帮助。
EchoMeet 音视频会议系统架构设计
🎯 项目概述
EchoMeet是基于WebRTC技术的企业级音视频会议解决方案,采用三层音视频架构和Go+Node.js双后端微服务设计,实现了高并发、低延迟、可扩展的视频会议系统。
核心特性
- 🚀 高并发支持:10,000+ WebSocket并发连接
- 🎥 多人视频会议:单房间支持50人同时在线
- 🌐 双系统架构:管理端+客户端独立系统
- 🔒 企业级安全:JWT认证、数据加密、权限控制
- 📱 跨平台支持:Web、移动端、桌面端
- ⚡ 低延迟传输:基于mediasoup的SFU架构
🏗️ 系统架构设计
三层音视频架构
技术栈明细
层次 | 技术栈 | 说明 |
---|---|---|
前端层 | Vue3 + TypeScript + Vite | 现代化Web应用,支持双系统独立构建 |
信令层 | Go 1.19 + Gin + WebSocket | 高并发信令处理,JWT认证,会议管理 |
媒体层 | Node.js + mediasoup v3 | SFU媒体服务器,处理音视频转发 |
数据层 | MySQL 8.0 + Redis 6.0 | 关系型数据存储 + 高性能缓存 |
部署层 | Docker + docker-compose | 容器化部署,一键启动 |
📊 数据库设计
8张核心业务表(已补充-点击跳转
)
-- 核心业务表结构
users -- 用户基础信息表
user_meeting_configs -- 用户会议配置表
meeting_rooms -- 会议室表(临时/固定/个人)
meetings -- 会议表(会议会话记录)
meeting_participants -- 会议参与者表
meeting_invitations -- 会议邀请表
meeting_messages -- 会议消息表(实时聊天)
meeting_recordings -- 会议录制表
meeting_templates -- 会议模板表
meeting_statistics -- 会议统计表
设计特点
- ✅ 高并发优化:合理索引设计,支持大量并发用户
- ✅ 数据一致性:外键约束、软删除、事务处理
- ✅ 扩展性设计:JSON字段存储、预留扩展字段
- ✅ 性能优化:分表策略、Redis缓存设计
详细设计参考:数据库设计文档-点击跳转查看
🌐 WebSocket信令协议
信令消息类型
消息类型 | 方向 | 说明 |
---|---|---|
auth | C→S | JWT用户认证 |
join-room | C→S | 加入会议室 |
leave-room | C→S | 离开会议室 |
get-router-rtp-capabilities | C→S | 获取Router能力 |
create-send-transport | C→S | 创建发送传输 |
create-recv-transport | C→S | 创建接收传输 |
connect-transport | C→S | 连接传输通道 |
produce | C→S | 生产媒体流 |
consume | C→S | 消费媒体流 |
WebSocket端点
ws://localhost:8081/api/v1/ws
- WebSocket连接端点GET /api/v1/ws/stats
- 连接统计信息GET /api/v1/ws/rooms
- 会议室信息查询GET /api/v1/ws/health
- 服务健康检查
详细协议参考:信令协议规范(待追加
)
🚀 性能指标
系统性能
- WebSocket并发连接:10,000+ 连接
- 数据库连接池:100个连接,10个空闲
- Redis连接池:100个连接,10个空闲
- 协程池大小:10000个工作协程
会议能力
- 单房间最大人数:50人
- 系统总房间数:1000+ 房间
- 音视频编码:VP8/VP9 + Opus
- 网络自适应:RTT监控、丢包率统计
延迟指标
- 信令延迟:< 50ms
- 音视频延迟:< 200ms
- 端到端延迟:< 500ms
🔐 安全设计
认证机制
- JWT认证:Bearer Token,支持实时状态检查
- 密码加密:bcrypt加密存储,强密码策略
- 会话管理:Token过期、刷新、多端登录控制
数据安全
- 传输加密:HTTPS/WSS安全传输
- 数据加密:敏感字段加密存储
- 软删除机制:数据安全可恢复
- 链路追踪:完整的请求追踪和审计
权限控制
- 角色权限:super_admin、admin、user三级权限
- 会议权限:主持人、协作主持人、参与者角色
- 功能权限:发言、共享、录制等细粒度控制
📱 前端双系统架构
独立构建系统
# 客户端系统开发
npm run dev:client # 端口3000# 管理系统开发
npm run dev:admin # 端口3001# 独立构建
npm run build:client # 输出到 dist/client
npm run build:admin # 输出到 dist/admin
技术特点
- ✅ 完全独立:两套系统无共享依赖
- ✅ 独立主题:各自的CSS主题文件
- ✅ 独立路由:独立的路由配置和守卫
- ✅ 独立部署:可以独立部署和更新
详细架构参考:架构对比分析(待追加
)
🐳 Docker部署
服务架构
services:mysql: # MySQL 8.0 数据库redis: # Redis 6.0 缓存admin-system: # 管理系统后端client-system: # 客户端系统后端frontend: # 前端静态资源# mediasoup: # Node.js媒体服务器(开发中)
快速启动
# 克隆项目
git clone https://github.com/your-org/echomeet.git
cd echomeet# 启动所有服务
docker-compose up -d# 查看服务状态
docker-compose ps# 查看日志
docker-compose logs -f
访问地址
- 客户端系统:http://localhost:3000
- 管理系统:http://localhost:3001
- 客户端API:http://localhost:8081
- 管理端API:http://localhost:8001
🔧 开发指南
本地开发环境
后端开发
# 启动管理系统
cd backend/admin-system
go run main.go# 启动客户端系统
cd backend/client-system
go run main.go
前端开发
cd frontend# 安装依赖
npm install# 启动客户端系统
npm run dev:client# 启动管理系统
npm run dev:admin
API文档
- 客户端API:backend/client-system/API.md(
待追加
) - 管理端API:backend/admin-system/api_doc/(
待追加
)
📈 当前开发进度
已完成模块 (85%)
- ✅ 数据库设计:8张核心业务表 (100%) 点击跳转查看
- ✅ Go后端服务:双系统微服务架构 (50%)
- ✅ WebSocket信令:完整的信令管理器 (30%)
- ✅ 前端基础架构:双系统独立构建 (80%)
- ✅ 部署基础设施:Docker容器化部署 (50%)
开发中模块 (0%)
- 🔄 Mediasoup媒体服务器:Node.js SFU服务器
- 🔄 mediasoup-client集成:前端WebRTC客户端
- 🔄 业务API实现:DAO/Service/Controller层
- 🔄 前端UI完善:会议室界面和控制功能
下一阶段重点
- Mediasoup媒体服务器实现 (2周)
- 前后端联调测试 (1周)
- 业务功能完善 (2周)
🤝 贡献指南
代码规范
- Go代码:遵循Go官方代码规范
- 前端代码:ESLint + Prettier格式化
- 数据库:统一的表命名和字段规范
- API设计:RESTful API设计原则
提交规范
feat: 新增功能
fix: 修复bug
docs: 文档更新
style: 代码格式调整
refactor: 代码重构
test: 测试相关
chore: 构建配置等
分支管理
main
:生产环境分支dev
:开发分支feature/*
:功能开发分支hotfix/*
:紧急修复分支
📄 相关文档
文档 | 说明 |
---|---|
数据库设计 | 详细的数据库表结构设计 |
信令协议 | WebSocket信令协议规范(待追加 ) |
Redis分析 | Redis使用场景和优化建议(待追加 ) |
架构对比 | 不同架构方案的对比分析(待追加 ) |
数据流转 | 详细的数据流转架构说明(待追加 ) |
开发总结 | 当前开发进度和下一步计划 (待追加 ) |
📞 联系
- 项目地址:半成品–开发中,就不献丑了
EchoMeet - 让每一次会议都精彩! 🎉