架构实战营模块 4 作业
1. 设计千万级学生管理系统的考试试卷存储方案
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
1)完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构
2)设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)
2)对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能
性能估算
在这里用户量预估为 1000 万
考试试卷存储方案的 TPS/QPS 估算如下:
请求试卷:1000 万* 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟= 250 万请求/分钟≈ 5 万/每秒
提交试卷: 1000 万* 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 30 分钟= 1700/每秒
存储架构分析
数据结构设计:
Key:学校编号+课程编号+考试编号
Value:采用 Json 字符串
读写分析
老师选择学校、课程、考试,生成 key
按题号录入考试内容
按题号排序存储考试问题内容,每个题目内容通过序列化为 JSON 格式
通过学校编号+课程编号+考试编号,读取整个考试试卷内容
服务器数量分析
由于读性能需要 5 万/秒,而单台 Redis 性能为 5-10 万,因此至少需要 2 台 Redis,为保障可靠性,因此需要 3 台 Redis 实现 1 主 2 从模式。同时引入 sentinal 需要 3 台 Redis。但是可以把 sentinel 和 redis 部署在同一台机器上,因此最后需要 3 台服务器。
评论