写点什么

【模块四】千万级学生管理系统考试试卷存储方案设计

作者:yhjhero
  • 2022 年 3 月 07 日
  • 本文字数:666 字

    阅读完需:约 2 分钟

前言

本文是学生管理系统的考试试卷存储方案架构设计文档,用于指导学生管理系统后续的开发、测试和运维。

1. 业务背景

实现一个可管理千万级别学生的学生管理系统,本文档主要设计考试试卷的存储方案。

假设每门学科每年 2 次考试,每个学生平均一学期 20 门课,考试采取机考的方式,每门考试的答案 20 判断题、20 选择题、4 道大题,假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,考试集中在上午 4 小时和下午 4 小时,且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟。

2. 总体架构

考试试卷的存储需求为:

一张试卷大小约为 5000 字节。

•请求试卷:1000 万* 20(课)/ 20(周末不考试)/ 4(每天 4 堂考试)/ 1 分钟= 250 万请求/分钟≈ 5 万/每秒。

•提交试卷:1000 万* 20(课)/ 20(周末不考试)/ 4(每天 4 堂考试)/ 30 分钟= 1700/每秒。

根据架构选型结果,使用 Redis Sentinel 部署 Redis 集群存储试卷和访问试卷。

3. 方案设计

3.1 Redis 数据结构

数据结构采用 Hashtable,时间复杂度是 O(1)。

Key:学校 ID +学院 ID + 课程 ID +学期 ID +期中/期末

Value:试卷内容

3.2 读写流程

1.老师登录并录入试卷内容,按照 key 存储试卷内容到 redis 集群。

2.系统为学生安排考试科目,考试时学生登录并进入相应科目的考试页面,系统根据 key 读取试卷内容。

3.3 Redis sentinel 集群的服务器数量和性能

Redis 单机 TPS 为 5~10w/s,请求试卷的 TPS 为 5w/s,带宽需要 5 万*5000B=250MB/s。

所以单台 redis,基本可以满足需求。但是为了高可用,引入 redis sentinel,一般最少为 3 节点,这样整个集群的性能可以到 15w/s。

用户头像

yhjhero

关注

还未添加个人签名 2020.09.05 加入

还未添加个人简介

评论

发布
暂无评论
【模块四】千万级学生管理系统考试试卷存储方案设计_#架构训练营_yhjhero_InfoQ写作平台