写点什么

千万级学生管理系统试卷存储方案(架构实战营 模块四作业)

作者:Gor
  • 2022 年 6 月 19 日
  • 本文字数:650 字

    阅读完需:约 2 分钟

数据结构设计

考虑到试卷有不同类型的题目,如选择题、单选题、填空题、判断题、简答题和问答题,因此使用 Redis 的哈希类型存储更为合适。

key: 学校 ID : 课程 ID:学期编码

value:题目类型作为哈希的 key,具体题目以 json 格式存储在哈希的 value 上。

读写流程设计

写流程:

老师提交试卷,试卷先存储在 mysql 上,再保存在 redis 上。

读流程:

考试开始,学生请求试卷,通过学校、课程、学期组合成 key 查询 redis 中的试卷信息。

Redis sentinel 集群预估

业务性能要求:

  1. 请求试卷 QPS:5 万/每秒

  2. 提交试卷 TPS:1700/每秒

  3. 假设使用该系统的高校有 500 所,每所每学年平均有 200 门课程,共计 10 万份试题。试题主要以文字为主,不需要太多的存储空间,因此上限设置为 200k,共计需要 19G 左右的存储空间。

服务器预估:

Redis 单机 TPS 5-10 万,基本能够满足业务的性能要求。但是为了保证存储高可用一集冗余一部分性能,考虑使用 3 台 Redis Sentinel 集群 + 3 台一主两从的 Redis 架构方式。Redis 为单线程模式,往往需要绑定一个物理核来保证 Redis 的性能,因此对多核要求不高,另外预留一部分 CPU 给操作系统,2 核足够。内存要覆盖到业务需要(19G),因此内存配置推荐 24G 以上。网络带宽要支持 5 万/每秒的传输速率,200k*50000/s 约为 10Gbps 左右。

服务器最终方案:

3 台 Redis Sentinel 集群 + 3 台一主两从,如果使用云服务平台,可以为 sentinel 与数据节点分别申请一个云服务器,共六个,其中 sentinel 为 1C2G*3,数据节点为 2C24G*3。如果不是使用云服务,可使用 3 台虚拟机 3C25G,每个虚拟机可以部署一个 sentinel 实例和数据实例。

发布于: 2022 年 06 月 19 日阅读数: 10
用户头像

Gor

关注

还未添加个人签名 2020.05.05 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统试卷存储方案(架构实战营 模块四作业)_Gor_InfoQ写作社区