写点什么

基于 Redis sentinel 的千万级学生管理系统的考试试卷存储方案

作者:Geek_e8bfe4
  • 2022 年 6 月 19 日
  • 本文字数:519 字

    阅读完需:约 2 分钟

存储性能需求汇总

​ 假设每门学科每年 2 次考试,每个学生平均一学期 20 门课,考试采取机考的方式,每门考试的答案 20 判断题、20 选择题、4 道大题(答案 200 字以内),则需求估算如下:

【考试】

  1. 试卷存储:200 KB * 1(仅记录最近一次考试的题) * 20 (课) * 3(只有前三年考试)** 500 (假设 500 所学校) ≈ 6G ;

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

具体方案

【数据结构设计】

  1. Key:学校 ID+课程 ID+考试 ID;

  2. Value:题目以 json 的形式进行存储,类型为 string;

【具体流程】

  1. 老师:

  2. 登录系统

  3. 创建试卷

  4. 选择每个科目对应的试卷

  5. 将试卷信息存储进 redis(写)

  6. 学生:

  7. 登录系统

  8. 选择对应考试科目

  9. 加载试卷题目(从 redis 获取试卷形象)(读)

  10. 填写试卷

  11. 提交试卷

【部署方案】

  1. Redis 单机 TPS 为 5~10w,请求试卷的 QPS 为 5w/s。同时考虑到高可用和自动切换,使用 Sentinel 进行部署(1 Master + 2 Slave)

  2. 为保障 Sentinel 本身的高可用,部署 3 台 Sentinel

  3. 由于试卷总大小为 6G 上下,同时可能存在历史试卷数据遗留以及主从复制需求,故至少使用 16GB 的内存。同时哨兵服务器只做监控用,内存需求稍低。最终服务器配置为:

  4. Master:1 台,Slave:2 台。均为 2 核 32G。

  5. Sentinel:3 台。均为 2 核 4G。

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

Geek_e8bfe4

关注

还未添加个人签名 2022.01.25 加入

还未添加个人简介

评论

发布
暂无评论
基于Redis sentinel的千万级学生管理系统的考试试卷存储方案_Geek_e8bfe4_InfoQ写作社区