写点什么

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

作者:tom
  • 2022 年 3 月 06 日
  • 本文字数:556 字

    阅读完需:约 2 分钟

要求:

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

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

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

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

数据结构设计:

使用 String 这种数据结构,key 就是试卷的 id,value 就是试题序列化后的 JSON 字符串

  • key:collegeId:#{collegeId}:courseId:#{courseId}:term:#{term}:midtermOrFinal:#{midtermOrFinal}

  • value:#{testPaperContent}

读写流程分析:

  1. 老师在考试前录入试卷内容,系统拼接 key 存储为 String 类型。

  2. 学生登录并进入相应科目考试页面,系统根据 key 读取试卷内容。


存储系统设计:

存储架构逻辑


千万级学生管理系统规模,按照 1000 万在校学生峰值计算出请求试卷的 QPS 为 5 万,同时认为 5 万即是有一定冗余量的均值 QPS。考虑开卷前 1 秒的“秒杀效应”,峰值按 3 倍估算,即 15 万 QPS。

存储架构设计:



主要的压力来自读请求,考试开始时所有学生读取的是同一份试卷。

服务器数量及性能需求:对于 5w/s 的 QPS 请求,需要 4 核 8G 的 5 台服务器,3 台搭建 Sentinel 集群,2 台 redis 服务器一主两从,客户端对读请求通过轮询、加权轮询等算法实现负载均衡。


用户头像

tom

关注

还未添加个人签名 2019.02.13 加入

还未添加个人简介

评论

发布
暂无评论
千万级学生管理系统考试试卷存储方案设计_tom_InfoQ写作平台