写点什么

架构作业 4- 千万级学生管理系统的考试试卷存储方案

作者:梁山伯
  • 2023-01-15
    四川
  • 本文字数:701 字

    阅读完需:约 2 分钟

作业内容

【作业要求】

基于模块 4 第 6 课的估算结果和 Redis sentinel 的初步方案设计,完善考试试卷存储方案,具体包括:

• 完善 Redis 的数据结构设计,明确具体使用哪种 Redis 数据结构。

• 设计具体的读写流程(可以文字描述也可以序列图描述,序列图要有文字辅助说明)。

• 对照模块 4 第 6 课的性能估算结果,计算 Redis sentinel 集群的服务器数量和性能。

【提示】

1. 性能可以有一定冗余。

2. 如果对 Redis sentinel 不熟悉,请参考官方文档:https://redis.io/topics/sentinel

存储总体方案

试卷存储方案设计(Redis Sentinel)

存储结构设计

【需求分析】

试卷场景可能存在两种情况:

一种是固定试卷,由教师编写好题目。再有学生获取试卷内容进行答题。

一种是随机试卷,由系统根据针对每个学生在题库中抽取题目,生成试卷。

由于试卷的题目一般都是有顺序的,且学生在答题过程中,可能会回到之前答过的题目进行回答。所以考虑使用 Sorted Set 结构对试卷题目进行存储。

Sorted Set 结构,内部的元素会按照权重 score 进行排序,可以得到每个元素的名次,还可以通过 score 的范围来获取元素的列表。

学生试卷后可能存在,根据题库随机出题的情况。

【数据结构设计】

Key :学校 ID + 学科 ID。

value:{ 题目 json,题目 json,题目 json,...}

权重:{1,2,3,...}

【读取写流程】

  1. 学生根据学校 ID 和学科 ID 查询该学科的考试题目

  2. 学生可更具学校 ID,学科 ID,权重(题目序号)查询单个题目的信息。

服务器数量

性能需求

1. 试卷请求 QPS:5 万/s;

2. 提交试卷 TPS:1700/s。

Redis 性能参考

Redis 的单机性能达到 10 万 QPS

设计

采用 Redis Sentinel 架构。使用三台 ECS 服务器,以保证 Redis 服务的可用性。

发布于: 刚刚阅读数: 5
用户头像

梁山伯

关注

还未添加个人签名 2019-07-16 加入

还未添加个人简介

评论

发布
暂无评论
架构作业4-千万级学生管理系统的考试试卷存储方案_梁山伯_InfoQ写作社区