写点什么

GK 架构营模 4 作业

用户头像
Ping
关注
发布于: 刚刚

考试试卷存储架构


模块 4 第 6 课的估算结果

【考试】

假设每门学科每年 2 次考试,每个学生平均一学期 20 门课,考试采取机考的方式,每门考试的答案 20 判断题、20 选择题、4 道大题(答案 200 字以内),考试结果永久保存,在校学生能够看到自己曾经的考试结果,则考试结果记录的存储量为:

• 在校学生:1000 万*20(课)*2(考试次数) *1000(答案)*2(学期) *3(只前三年考试)=2.4T。

• 离校学生:每年 250 万,存储量为 0.6T。

假设学校的考试都安排在某一个月内,考试的时候请求试卷,提交答案,中间答题过程浏览器本地完成,由于考试集中在上午 4 小时和下午 4 小时,且请求试卷集中在考试开始的前 1 分钟,提交答案集中在考试结束前的 30 分钟,因此估算如下:

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

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


Redis sentinel 的方案设计

我们使用 Redis sentinel 来实现试卷存储和访问。

Redis 使用 sentinel 集群来解决“决策者”单点问题,sentinel 又是通过 Raft 算法进行选举的。

技术本质:1)主从复制,读写分离;2)master 故障时 sentinel 自动切换

数据结构设计

作为试卷存储,key 是 string:可以为“课程名+学年+学期+第几次”;value 是 linked list:可以为有序的 string 的题目内容。

设计具体的读写流程

读请求:可以随机分给从机处理。


写请求:主机处理;试卷一般确定就不用再改了,临时改动可以分别通知来分流。

Redis sentinel 集群

根据性能估算结果,一个“1 主,2 从”的集群结构即可。主机主要处理写服务,两从机处理读服务。

用户头像

Ping

关注

还未添加个人签名 2020.01.19 加入

还未添加个人简介

评论

发布
暂无评论
GK架构营模4作业