写点什么

第四周作业 - 千万级学生系统课程存储设计

  • 2023-01-13
    北京
  • 本文字数:873 字

    阅读完需:约 3 分钟

【作业要求】

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

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

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

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

约束限制

  1. 学校学生人数按千万人计算

  2. 在校学生考试结果存储:1000 万 * 20(课)* 2(考试次数) * 1000(答案)* 2(学期) * 3(学年)= 2.4T

  3. 离校学生考试结果存储: 2.4T / 4 = 每年增长 0.6T

  4. 试卷请求 QPS:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 5 万/s

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

存储架构图


Redis 数据结构

  • 试卷

数据结构: String

key : EXAM_学校 ID_学科 ID_学期 ID_考试 ID value:试卷内容(json)

key:EXAM_QH001_MATH001_01_01value:{"title":"XXX考试试卷","count":30,"item":{   "No1":{"type":1,"content":{"item":"1+1=2?","T":0,"F":0}},   "No2":{"type":2,"content":{"item":"1+1=()","A":0,"B":1,"C":2,"D":3}},   "No3":{"type":3,"content":{"item":"请简单阐述你对架构的理解","desc":""}} }}
复制代码
  • 答卷

数据结构: String

key : ANSWER_学校 ID_学科 ID_学期 ID_学生 ID value:试卷答案(json)

key:ANSWER_QH001_MATH001_01_0056value:{    "id":"试卷id",    "score":98,    "timestamp":1673613379000,    "result":[        {            "key":"No1",            "value":true        },        {            "key":"No2",            "value":"C"        },        {            "key":"No3",            "value":"华仔的架构课程YYDS"        }    ]}
复制代码

交互流程


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

三台 redis 服务(1 主 2 从) + 三台 sentinel(防止脑列)

试卷请求 TPS:5 万/s、提交试卷 TPS:1700/s、Redis 单机 TPS 5-10w

服务器数量 为 3 台服务器组成集群,性能能到 15~20w+ TPS


用户头像

还未添加个人签名 2020-11-15 加入

还未添加个人简介

评论

发布
暂无评论
第四周作业-千万级学生系统课程存储设计_不爱学习的程序猿_InfoQ写作社区