架构实战营模块四作业
【作业要求】
基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:
• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。
• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。
• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。
数据结构设计
试卷使用 hash 类型存储
key:学校 ID+学院 ID+专业 ID+科目 ID+学期 ID
value:试卷内容
设计说明:学校 ID 是为了方便后续学校扩展,学期 ID 是因为一个科目有可能有多个学期
考试结果也采用 hash 类型存储
key:学校 ID+学院 ID+专业 ID+科目 ID+学期 ID+学生 ID
value:试卷内容
设计说明:key 的规则增加了学生 ID
读写流程设计
由于是千万级学生系统,因此必须要使用存储缓存:
【写】老师设计试卷,上传至试卷系统,系统根据 key 的组成规则生成试卷记录。系统根据老师设计的考试时间,提前半小时将试卷加载到 redis 缓存中,缓存有效期为 2 小时。
【读】学生考试,登录试卷系统,根据 key 原则自动获取对应试卷。
【写】学生考试结束,上传试卷,系统根据考试结果 key 生成规则,生成 key 并记录在 redis,然后持久化
服务器数量和性能
使用主从架构,一台主,两台从,三台 sentinel,满足 QPS=5W 的要求
评论