【架构训练营】模块四作业
设计千万级学生管理系统的考试试卷存储方案
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。
一、数据结构设计
采用 Redis Hash 结构存储
Key:学校 ID
Field:年级 ID + 学科 ID
Value:试卷内容,JSON 格式
二、读写流程分析
1、老师在考试后台编辑好试卷题目后提交,试卷内容按照学校 ID 作为 key,对应年级 + 学科 ID 作为 field 保存进 Redis 中
2、学生考试时,根据学校 ID 和年级、以及对应考试学科 ID 从 Redis 中读取试卷内容
三、Redis Sentinel 集群服务器数量和性能
Redis 的请求压力主要来自当前学期考试的试卷请求,所以 redis 主要存储当前学期需要考试的试卷即可
按照估算,每个学生平均一学期 20 门课,即一间学校一个年级一学期 20 门课,一学校只有前三年考试,所以一间学校的考试试卷数量为 = 20 * 3 = 60
假设平均一学校 5 万在校生,1000 万学生共 200 间学校。 所以试卷总数量 = 200 * 60 = 12000
假设一张试卷 1M 大小。即内存总数量 = 12000M = 12G,预留 2 倍 buffer。
根据估算,请求试卷 QPS 约 5 万,预留 2 倍 buffer。
综上所述,对于 Redis sentinel 集群的服务器性能要求:存储容量 24G,QPS 10 万
因此可使用分片 + 主备架构,两台 redis master(每实例 9G) + 两台 redis slave,另外需要三台 sentinel 服务
评论