写点什么

模块四 - 千万级学生管理系统考试试卷存储方案

作者:圈圈gor
  • 2022 年 1 月 09 日
  • 本文字数:662 字

    阅读完需:约 2 分钟

【要求】

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

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

  • 设计具体的读写流程;

  • 对照模块四第六课的性能估算结果,计算 Redis Sentinel 集群的服务器数量和性能;

【参考文档】

https://redis.io/topics/sentinel


业务场景

  • 学生预估为 1000w,假设平均分布在 4000 个学校中,每个学生平均一学期 20 门课,每门学科每年 2 次考试;

  • 考试采取机考的方式 ,每门考试的为 20 判断题,20 选择题,4 道大题(答案 200 字以内),试卷查询 QPS 为 5w/s;

  • 考试结果永久保存,在校学生能够看到自己以往的考试结果;

试卷数据结构

key:由学校 id+年份+学科 id 组成;

value: 题目 JSON 格式的集合;

题目:主要字段包括学科 id,题号,类型,题目,选项,参考答案;


读写流程

写流程

  1. 学校教师登录系统管理后台,后台列举当前教师所有可编辑录入考试试卷列表;

  2. 教师在更新考试试卷内容并提交;

  3. 系统后台获取当前学校 id,年份及学科 id,以及题目内容保存/更新到 redis 中;

  4. Redis 定期将考试内容持久化到本地中;

读流程

  1. 学生登录考试系统,请求获取当前考试内容;

  2. 后台根据当前学校 id,年份,学科 id,查找试卷内容,去除答案后返回前端给学生;


性能需求

假设每年每个学校的同一科上试卷均不相同,redis 中只保存一学期试卷,其中:

平均每份试卷内容为 30KB,每年试卷总数=4000(学校)*20(科)*30KB≈2.3GB,考虑一定的冗余,则服务器内存设计为 4GB。

根据官网参考资料https://redis.io/topics/benchmarks ,单机即可满足 5w/s 的 QPS,则可设计为 3 台 Redis 服务器组成集群即可。


发布于: 刚刚阅读数: 2
用户头像

圈圈gor

关注

还未添加个人签名 2018.07.03 加入

还未添加个人简介

评论

发布
暂无评论
模块四 - 千万级学生管理系统考试试卷存储方案