架构实战营 模块四作业
设计千万级学生管理系统的考试试卷存储方案
一、需求
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:1)完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构
2)设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)
3)对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能
二、性能、容量评估
1) 写入性能:各个老师出试卷时间宽裕,写入性能可以忽略不计;
2)读取性能:据课程上评估为 5 万/秒,单台 redis 可支持(单台机器 redis 为 5 万/秒-10 万/秒);
3)容量:根据各个大学的培养来看,大学大约 40 个学院,每个学院约 20 门课程,1000 万学生假设有 200 所大学,每份试卷按照大小为计算,则对应的试卷的存储量为 5KB:
200(学校数)*40(学院数)*20(专业)*2(考试次数/年)*4(考试年数)*5KB(试卷大小)==10G
三、数据结构
redis String 结构,key 为:学校 ID+试卷 ID,value:试卷内容序列化后的 json 字符串。
(说明:试卷 ID 已根据“学科+时间+序列号”命名,有唯一性)
四、部署架构
redis 采用一主一从三哨兵的部署方式。
五、读写过程
1)写入过程:各位出题老师通过 set 操作将序列化后的试卷内容 value 写入到 key 为“学校 ID+试卷 ID”里。
2)读取操作:各位学生通过“学校 ID+试卷 ID”get 到对应的 value 值,反序列化后获取到对应的试卷内容。
评论