1. 立项背景和目标
随着 K12 在线教育行业爆发式增长,东方优播原有分散的直播、录播系统已无法支撑业务快速扩张。不同学科、不同班型使用独立技术栈,导致维护成本高、数据不互通、高峰时段系统频繁崩溃。本项目旨在打造统一的乐播课堂直录播中台,整合 AI 录播、大班直播(1v1000+)、小班直播(1v16)等多种业务形态,覆盖数学、英语、物理等全学科教学场景。核心目标是保障高峰时段(晚 19:00-21:00)系统稳定运行,支持 2 万 + QPS 并发,实现 99.99% 的服务可用性,同时提升师生互动体验和教学效率。
2. 软件功能、核心功能模块介绍
平台采用模块化设计,核心功能模块包括:
直播中台:支持实时音视频传输、屏幕共享、白板互动、举手发言、抢答选人等核心教学功能
录播中台:提供 AI 自动录课、视频剪辑、智能字幕生成、知识点切片等功能
约课系统:实现课程排期、学生选课、教师排班、冲突检测等全流程管理
互动答题系统:支持选择题、填空题、主观题等多种题型,实时统计答题结果并生成学情报告
数据分析系统:多维度统计上课时长、参与率、答题正确率等教学数据,为教学优化提供支撑
3. 业务流程、功能路径描述
完整教学业务流程如下:
教师端:创建课程→上传课件→设置互动环节→开启直播 / 录播
学生端:浏览课程→预约课程→进入教室→参与互动答题→查看回放和学情报告
平台端:实时监控系统状态→处理异常情况→生成教学数据报表
本项目采用分布式微服务架构,基于 Spring Cloud Alibaba 构建,将核心服务(直播、约课、答题)与非核心服务(数据分析、消息通知)进行物理隔离,确保核心链路稳定。整体采用前后端分离设计,后端使用 Spring Boot开发,前端采用 Vue.js。
各模块技术栈如下:
服务治理:Nacos 服务注册与发现、Sentinel 流量控制
数据存储:MySQL 主从复制实现读写分离,Redis 作为分布式缓存和分布式锁
消息队列:RocketMQ 用于异步解耦和流量削峰
搜索引擎:ElasticSearch 提供答题记录和课程内容的多维查询
定时任务:Spring + Quartz 实现去中心化分布式定时任务
监控告警:Prometheus + Grafana 实时监控系统指标,ELK 收集日志
2. 我负责模块和结果
我主要负责直播互动模块、约课系统和数据缓存层的设计与开发,核心成果如下:
设计并实现了基于 Redis 的抢答选人功能,支持 1000 人同时抢答,响应时间控制在 50ms 以内
优化约课系统,引入分布式锁解决并发约课冲突问题,将约课成功率从 92% 提升至 99.9%
搭建 Redis 缓存集群,将学生基础信息、课程信息等热点数据缓存,使接口平均响应时间从 200ms 降低至 30ms
集成 RocketMQ 实现约课通知、答题心跳、激励发放等非核心业务的异步处理,系统吞吐量提升 3 倍
参与系统压测和性能优化,使平台成功支撑 2.3 万 QPS 的高峰流量,服务可用性达到 99.99%
3. 遇到的难点、坑,和解决方案
难点 1:高并发下抢答选人数据不一致问题:多个学生同时抢答时,数据库出现超卖现象,导致多个学生显示抢答成功解决方案:使用 Redis实现分布式锁,将抢答操作全部在 Redis 中完成,最终异步同步到数据库
难点 2:分布式定时任务重复执行问题:Quartz 集群部署时,部分定时任务在多个节点同时执行,导致重复发送通知解决方案:使用数据库行级锁实现任务调度的互斥性,确保每个任务在同一时间只在一个节点执行