写点什么

千万级学生管理系统考试试卷存储方案设计

用户头像
eoeoeo
关注
发布于: 2021 年 05 月 17 日

作业要求

设计千万级学生管理系统的考试试卷存储方案


【作业要求】


基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:


1)完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构


2)设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)


3)对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能


【提示】


  1. 性能可以有一定冗余

  2. 如果对 Redis sentinel 不熟悉,请参考官方文档:https://redis.io/topics/sentinel

答卷

估算性能需求

  • 用户量估算

  • 1000 万

  • 用户行为

  • 考试

  • 性能需求计算

  • 截至 2020 年 6 月 30 日,全国高等学校共计 3005 所,2019 年录取人数 835 万,目标用户 250 万,预计接入系统的大学为 1000 所。

  • 截至 2019 年中国大学共有 13 个学科,61 个大学专业类,506 个大学专业,预计平均每个学校有 300 个专业,每门专业 20 门课,每门课每年考 2 次

  • 每年需要存储的试卷为:1000 * 300 * 20 * 2 = 1200 万份,每份试卷按 20 判断题、20 选择题、4 道大题,每份试卷的存储字节 20 * 4 + 20 * 4 + 4 * 200 = 1760 字节,每年考试存储下来,需要存储 1200 万 * 1760 字节 = 21GB

选择存储系统

  • 单机能否存储所有数据?

  • 可以

  • 单机能否支撑写性能?

  • 考试前试卷是由科任老师提交,1000 * 300 = 3 万次,但并不是在 1 秒内提交,因此可以支撑

  • 单机能否支撑读性能?

  • 请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒,单机无法支持

  • 是否需要自动切换

  • 考试时,不能允许出现无法访问,因此需要自动切换

  • 方案结果,主从切换或者集群选举,考虑读性能需要较高的 QPS,因此选择集群选举方案

设计存储方案

  • 存储方案选择 Redis sentinel 方案

  • 数据结构,考试试卷的内容是从第 1 题到最后 1 题,要求试卷内容和出题顺序是完全一致的,因此,可以需要选择由排序功能的数据结构,可选的数据结构为 Linked List 和 Sorted Set。

  • 方案 1:

  • Key: 学校 ID + 课程 ID + 学期(202001)

  • value:选择 Linked List,有序,可重复

  • 具体方案

  • 新增,和提交的数据顺序一致,尾部添加,不需要判断重复性。

  • 删除,扫描 List 找到问题 ID 然后删除

  • 修改,扫描 List 找到问题 ID 然后更新

  • 方案分析

  • 删除和修改需要扫描整个 List,效率较低

  • 方案 2

  • Key:学校 ID + 课程 ID + 学期(202001)

  • value: 选择 Sorted Set,有序,不可重复

  • 具体方案

  • 新增,使用题号作为 score,无需扫描,Redis 会判断是否重复

  • 删除,直接删除

  • 修改,和删除一样,直接更新

  • 方案分析

  • 无论是性能还是实现复杂度,都比 Linked List 要更优

读写分析

  1. 老师选择学校、课程、学期,生成 key

  2. 按题号录入考试内容

  3. 按题号排序存储考试问题内容,每个题目内容通过序列化为 JSON 格式

  4. 修改或者删除时,按题号重新保存内容或者删除

  5. 读取时,通过学校 ID+课程 ID+学期,读取整个考试试卷内容

服务器数量分析

由于读性能需要 5 万/秒,而单台 Redis 性能为 5-10 万,因此至少需要 2 台 Redis,为保障可靠性,因此需要 3 台 Redis 实现 1 主 2 从模式。


同时引入 sentinal 需要 3 台 Redis。但是可以把 sentinel 和 redis 部署在同一台机器上,因此最后需要 3 台服务器。

服务器性能

64G内存,1TB硬盘

发布于: 2021 年 05 月 17 日阅读数: 35
用户头像

eoeoeo

关注

还未添加个人签名 2019.04.03 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统考试试卷存储方案设计