写点什么

架构实战营模块 4 课后作业

作者:胡颖
  • 2021 年 11 月 12 日
  • 本文字数:525 字

    阅读完需:约 2 分钟

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

 

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

数据结构可以是 Hash。 Key 是学生 ID+ 学期 ID。 Value 是 20 * 2 个考试的 List。

之所以 Value 可以是 List 是因为 List 总大小也只有 40K,可以一次读取。

 

2.  设计具体的读写流程

写流程:

学生上交考试后,服务器把考试变成一个 List Node, 找到学生 ID+ 学期 ID 为 Key 的这一栏,把这次考试加到 到 List 头。

老师批改考试后并提交后, 服务器找到学生 ID+ 学期 ID 为 Key 的这一栏,逐个搜索 List 每个考试,找到相应考试后,更新一下。

 

读流程:

查看学生某学期所有考试:

服务器找到学生 ID+ 学期 ID 为 Key 的这一栏, 返回整个 List.

查看学生某学期某科目考试:

服务器找到学生 ID+ 学期 ID 为 Key 的这一栏, 遍历 List, 找到这门科目的考试。

查看学生所有考试:

服务器实现找到这名学生所有学期,对每一个学生 ID+ 学期 ID 为 Key,找到考试 List,把所有 List 链接起来。

 

3.  计算 Redis sentinel 集群的服务器数量和性能

性能估算:

在校学生:2.4T

离校学生: 0.6T

请求试卷:5 万/每秒

提交试卷:1700/每秒。

事后查找试卷,假设不会集中一起查找,<1700/每秒。

Redis 一个 Node 可以接近 50-100K/s,所以部署一个 Node + 2 个 Slave 完全 就够了。

 

用户头像

胡颖

关注

还未添加个人签名 2019.01.06 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营模块4课后作业