架构训练营 模块四
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
1)完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构
2)设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)
2)对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能
性能估算
每门考试 20 判断题、20 选择题、4 道大题;
请求量: 试卷请求 QPS:5 万/s,提交试卷 QPS:1700/s;
演算:
假设有 1000 个学校,每个学校每学期每次有 100 门课程需要考试;
假设每次试卷大小为 10kb;
由此可估算出:
试卷数量:1000(学校)* 100(课)= 10 万;
试卷所需存储空间:10 万 * 10KB ≈ 1GB。
数据结构
考试试卷分为题目及答案,学生先获取到题目,然后进行答题,答题完成后提交作答,返回答案比对。因此题目和答案分开存储
针对考试题目存储,使用 hash 数据结构。
key 为学校 id+课程 id+试卷 id
hash 结构中的 key 为 题目编号
hash 结构中的 value 为 题目文本
针对考试答案存储,使用 hash 数据结构。
key 为学校 id+课程 id+试卷 id
hash 结构中的 key 为 题目编号
hash 结构中的 value 为 题目正确答案
读写流程
【写】(老师)
老师做好试卷后,提交试卷,按照学校、课程、数据生成 hash key, 题目编号为 key。
【读】(学生)
学生进行考试时,选择试卷 key 找到对应的 hash 结构,读取题目 ,进行查看。
四、Redis sentinel 服务器数量及性能
redis 单机读写性能可达 10W/S,根据需求,读在 5W/S,写在 1700/S,根据 Redis sentinel 的高性能部署架构,一台主、两台从,三台 sentinel 即可。
评论