ITOO---选课里的“秒杀”业务设计
来源:互联网 发布:化工过程优化 微盘 编辑:程序博客网 时间:2024/06/05 04:04
1.1 我的选课
背景介绍:
在项目的选课功能中碰到一个难题,是高校内的选课业务,有个难题的就是会出现高并发的现象,比如多个学生通过移动端或者pc端进行选课操作,多对一,进行数据库操作时难免出现脏读或幻读的现象;还有就是选课涉及的事务的隔离级别,不同线程对共享资源的访问需要隔离或者锁,需要保证资源的非共享性。每一门课的容量都如抢购一般,需要进行秒杀操作,保证每一门课都不能多“售出”。经过讨论初步决定使用redis进行线程的单操作,通过MQ才避免操作数据库时出现的并发现象。
1.1.1 原型图
1.1.2 功能描述
这个界面分为两个小界面,一个是公选课程,一个专选课程。若要选课,只需要点击选课,即可完成选课的操作,而且,被选的课程会置顶。而且剩余容量是跟着选课的动作依次减少的,所以实时刷新。若要退选课程,则只需要点击退选即可完成退选操作。
1.1.3 业务规则
随着学生的所选课程,要根据一定的业务规则显示该学生可选的课程(例如,加入这次的选课可以选取3门,都是来自外学院的,且该学生已经选取了周二晚上的课程,那么接下来显示的可选课程就应该是排除了周二晚上跟它冲突的课程,而且一旦学生已经选取了三门课程,那么接下来就不能再进行选课操作了。)
2.1设计接口
queryCoursePage : 按条件模糊查询;限制学院;
addCourse: 是否可选?课程冲突;时间冲突;数量冲突;
deleteCourse:删除对应选课信息;
刷新问题:不刷新?定时刷新?
3.1 实现思路
4.1 表关系
专业选修、
根据培养计划的course_type_id加载
公选
专选
课程名称
上课时间
上课节次
授课老师
剩余容量
学分
课程性质
t_training_programs
Course_id
t_courseinfo
Course_name
Classpoint
Coursenature_id
t_teachclass
Teachclass_id
Teacher_id
capacity
t_curriculum_schedule
Week_di
cellTime_id
T_user
user_real_name
字典表
公共选修(3B6FE3BAB12E3BA8AFE36D)
根据课程池的course_type_id加载
公选
专选
课程名称
上课时间
上课节次
授课老师
剩余容量
学分
课程性质
T_course
course_name(id)
class_point
course_nature_id
t_teachclass
Teachclass_id
Teacher_id
capacity
t_curriculum_schedule
Week_di
cellTime_id
T_user
user_real_name
字典表
- ITOO---选课里的“秒杀”业务设计
- ITOO---选课里的“秒杀”业务实现(一)
- ITOO---选课里的Spring-RabbitMq
- ITOO---“秒杀”选课之Redis序列化
- 秒杀业务场景设计
- ITOO项目选课系统的问题小结
- ITOO---选课之RabbitMQ搭建
- 关于秒杀业务的相关处理
- 秒杀业务分析
- 互联网秒杀业务架构设计 / 秒杀系统架构分析与实战
- 秒杀业务分析架构
- 秒杀系统的设计
- 秒杀的设计流程
- 秒杀的设计原理
- 秒杀设计的小结
- 秒杀,推送,广告,推荐,计数-互联网非典型业务系统架构设计
- 秒杀业务架构优化之路
- 秒杀业务架构优化之路
- redis+mysql
- 浅析Java抽象类和接口的比较
- 图片鼠标悬停放大
- 算术游戏 easyMath.py
- 关于Oracle 12.2 中system密码过期(expire)问题的研究
- ITOO---选课里的“秒杀”业务设计
- 乐观锁和悲观锁
- java MD5加密算法
- Kruskal(克鲁斯卡尔) 最小生成树 算法详解+模板
- 算法基础-分治法求解最大子数组(Java)
- 日常学习篇-Linux应用程序文件I/O编程
- 特殊求和,专治各种不服
- 把十进制转为二进制到16进制
- 十大经典算法排序总结对比