写点什么

【架构训练营】模块四作业

用户头像
zclau
关注
发布于: 17 小时前

设计千万级学生管理系统的考试试卷存储方案

【作业要求】

基于模块 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 集群的服务器性能要求:存储容量 24GQPS 10 万

因此可使用分片 + 主备架构,两台 redis master(每实例 9G) + 两台 redis slave,另外需要三台 sentinel 服务

用户头像

zclau

关注

还未添加个人签名 2018.03.14 加入

还未添加个人简介

评论

发布
暂无评论
【架构训练营】模块四作业