写点什么

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

作者:
  • 2022-11-07
    江苏
  • 本文字数:527 字

    阅读完需:约 2 分钟

性能估算

  • 在校学生考试结果存储:2.4T

  • 离校学生考试结果存储:每年增长 0.6T

  • 试卷请求 QPS:5 万/s

  • 提交试卷 TPS:1700/s

数据存储和访问 Redis 数据结构设计

  • 何种数据类型存储?

redis 数据存储结构可以使用 string 类型的数据存储。虽然 string 类型的数据存储占用的内存大小比其他类型的要大,但是考虑到试卷不会很多,而且一套数据的大小也不会很大。所以考虑用 string 类型做存储。

  • 数据结构设计

redis 的 key 设计如下:

试卷的 key:"学校 id+学年 id+课程 id+试卷 id"

考试试卷相关数据的读写流程

  • 读取试卷流程

1、用户登陆

2、从 MySQL 读取学生信息,拼凑成如上设计的 key("学校 id+学年 id+课程 id+试卷 id")尝试从 redis 读取数据

3、redis 没有数据,则从数据库读取,如果存在,则更新到缓存,如果不存在,则加载失败


  • 学生答题提交试卷

1、学生根据自己的信息,拼凑成 key("学校 id+学年 id+课程 id+试卷 id")获取试卷

2、学生答题完成后,将答题结果存储到 Hbase

redis 集群的服务器数量和性能

前提:redis 单节点的 TPS 在 5~10W

对于读取试卷的业务场景(试卷请求 QPS:5 万/s)单节点的 redis 完全可以承载。所以我会规划三个节点的 sentinel 集群(sentinel 可以不高可用),其中一台服务器(2C/4G,可以是虚拟机)给 sentinel 节点,另外两台服务器(8C/32G)给 redis 主从节点。


用户头像

关注

还未添加个人签名 2018-08-13 加入

还未添加个人简介

评论

发布
暂无评论
设计千万级学生管理系统的考试试卷存储方案_帅_InfoQ写作社区