高并发选课系统设计
简述
学生选课系统类似于秒杀系统,都是要在一个时间段内抗住高并发。因此我们的学生选课系统可以按照秒杀系统来设计。
学生选课系统的QPS其实远远不及秒杀系统,毕竟一个学校最多也就同时几千个人选课,因此在架构上可以不用设计的太麻烦,只要能抗住高并发,让学生都有操作空间就可。但本文想抛开现实,按照秒杀系统来好好设计一下选课系统。
开发技术
SpringCloud,Mybatis-plus,MySQL,Redis,redisson,RabbitMQ,Quartz
数据表设计
teacher(教师)表
- id
- 其他信息…
course(课程)表
- id
- course_type:课程状态。1-公共任选,2-专业限选
- 其他信息…
student(学生)表
- id
- 其他信息…
courseclass(课程班)表
- id
- course_id:外键,课程id
- teacher_id:外键,教师id
- limit_number:限选人数
- is_confirm:课程班状态。0-未确定(加入选课),1-已确定(不加入选课)
- 其他信息…
courseclass_student(课程班-学生)表
- id
- student_id:外键,学生id
- courseclass_id:外键,课程班id
- state:选课状态。0-退选,1-已选
总结:学生和课程班是n-n关系,课程班和(教师,课程)是n-1关系。
系统流程
-
教师管理员在课程班列表中将想加入选课的课程班的状态修改为“未确定”,在之后的选课中,状态为“未确定”的课程班会参与选课
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cZpxBLtD-1614411263619)(C:\Users\49787\AppData\Roaming\Typora\typora-user-images\image-20210226160206786.png)]](https://i-blog.csdnimg.cn/blog_migrate/d365f239d4d53215812a84d7cdbddaf1.png)
-
教师管理员选择选课时间,开启选课
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3zeNvAbL-1614411263622)(C:\Users\49787\AppData\Roaming\Typora\typora-user-images\image-20210226160332693.png)]](https://i-blog.csdnimg.cn/blog_migrate/fe33e831f1d51cac8d1b13eb7024b42c.png)
-
学生进入选课页面,等待选课
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-elaYe00M-1614411263625)(C:\Users\49787\AppData\Roaming\Typora\typora-user-images\image-20210226160434355.png)]](https://i-blog.csdnimg.cn/blog_migrate/e39a5bcef6ffdd20615818c238d91308.png)
-
选课开始,展示所有参与选课的课程班
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5hQivg2-1614411263628)(C:\Users\49787\AppData\Roaming\Typora\typora-user-images\image-20210226160506328.png)]](https://i-blog.csdnimg.cn/blog_migrate/bdbbf80a664c47fe8221f5dbf2580958.png)
-
点击“选课”,进入课程班详情展示页面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R2Q19tsX-1614411263630)(C:\Users\49787\AppData\Roaming\Typora\typora-user-images\image-20210226160555400.png)]](https://i-blog.csdnimg.cn/blog_migrate/95477dbbb0da6627ee006ffa87533937.png)
-
学生完成选课,状态更新为"已选",已选人数+1,未选人数-1
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MmUz2ISK-1614411263633)(C:\Users\49787\AppData\Roaming\Typora\typora-user-images\image-20210226160607476.png)]](https://i-blog.csdnimg.cn/blog_migrate/92598bd6c8ad9e8d1cd7b4efd441b44f.png)
-
学生可以当即查看任选结果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7uvK58p-1614411263635)(C:\Users\49787\AppData\Roaming\Typora\typora-user-images\image-20210226160618799.png)]](https://i-blog.csdnimg.cn/blog_migrate/c5b17de427cc3c7d8d3af4b971f5c4c7.png)
-
学生可以选择退选已选课程
<

本文介绍了高并发学生选课系统的设计,包括使用SpringCloud、Mybatis-plus、MySQL、Redis、Redisson和RabbitMQ等技术。系统流程涵盖选课前的定时任务开启、缓存预热和限流措施,选课时的SQL分析、Redis操作和消息队列应用。文章还讨论了系统存在的问题和解决方案。
最低0.47元/天 解锁文章
692

被折叠的 条评论
为什么被折叠?



