写点什么

模块四作业 - 考试试卷存储方案

作者:CH
  • 2022 年 1 月 09 日
  • 本文字数:631 字

    阅读完需:约 2 分钟

要求

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

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

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

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

数据结构设计

  • 采用 String 类型

  • key:课程 id+考试 id

  • value:用 json 保存试卷内容

读写流程

  1. 教师-录入试卷:选择课程和考试,录入试卷

  2. 学生-考试读取试卷:选择课程,系统根据考试时间自动匹配当前考试 id,读取试卷

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

学生总量约 1000 万,假设每门学科每年 2 次考试,每个学生平均一学期 20 门课,一个课程同意学期有 200 个学生,同一个学校,一个课程通常使用同一个试卷,因此,试卷数量=课程数量;考试采取机考的方式,每门考试的答案 20 判断题、20 选择题、4 道大题(答案 200 字以内);假设教师在考试前一个周内提交试卷,提交时间集中在工作日工作时间的 8 小时;假设每份试卷 20k;

1.试卷数量=课程数量=1000w*20*2/200=200w

2.每年试卷存储量:200w*20k=40G

3.写-教师录入试卷:50w/(5*8*3600)=3/s,可以忽略不计

4.读-学生考试读取试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/s


单台 redis 性能为 5w-10w(QPS),单台 64G 存储即可,需要在故障时自动切换,采用一主一备,另外需要两个 sentinel 进行监控和自动切换

因此,需要 4 台 64G Redis sentinel 集群服务器。


用户头像

CH

关注

还未添加个人签名 2019.04.26 加入

还未添加个人简介

评论

发布
暂无评论
模块四作业-考试试卷存储方案