写点什么

模块四作业

作者:HZ
  • 2022 年 4 月 22 日
  • 本文字数:634 字

    阅读完需:约 2 分钟

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

【作业要求】

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

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

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

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


Redis 的数据结构设计

对于试卷本身,采用 Redis 的 set 保存:

Key 为"#Exam-学校 ID+年份+考试 ID"。Value 为试卷内容,以 JSON 格式保存。

采用 Redis 的 set 结构保存学生提交每张试卷的作答内容,其中:

Key 为"学校 ID+年份+学生 ID+考试 ID"的组合,Value 为试卷作答内容,以 JSON string 的格式保存。


具体的读写流程

写入:


  1. 学生提交试卷

  2. Exam Service 根据试卷内容产生相应的 JSON string

  3. Exam Service 保存数据到 Redis,Redis cluster 将数据保存到其中一个 DB shard.

  4. 数据写入 DB shard 的 master node

  5. master node 同步数据到 slave nodes


读取:

从 Redis 读取数据时,可以从 DB shard 的 master 或 slave 中任一 node 中读取。


性能估算

从计算角度:

Peek read QPS: 50K/s

Peek write QPS: 1700/s

由于 Redis 单机性能可达 TPS 50K-100K/s。因此 1 台 redis master 可以应付。由于采用 Redis Sentinel,需要至少 2 台 slave。故而需要至少 3 台机器:1 master + 2 slaves.

从数据存储角度:

每年在校学生试卷结果记录 2.4TB,以及离校学生 0.6TB。每年需保存 3TB。一台机器可以基本满足存储需求。但每年需新增 1 片 DB Shard(即 1 master + 2 slaves).


用户头像

HZ

关注

还未添加个人签名 2022.03.06 加入

还未添加个人简介

评论

发布
暂无评论
模块四作业_架构实战营_HZ_InfoQ写作社区