架构实战营 - 模块四作业
一、存储性能需求汇总
试卷请求 QPS:5W/s(从课程中来,这里不重复分析)
试卷存储:3000(高校) * 100(专业) * 4(年级) * 2(学期) * 2(A/B 卷) * 5KB(单张试卷大小) = 23G
单子试卷大小计算规则:20(判断题) * 50 + 20(选择题) * 100 + 4(大题) * 500 = 4000 * 2 = 8000 字(5KB)
二、存储方案设计
基于前面的性能需求分析,我们知道单机能存储所有数据,并且能满足读写性能;同时考虑到试卷请求的 QPS 有 5W/s,我们的存储架构最好是能做到高可用和高性能,这里我们选择 Redis Sentinel。
写入流程:
试卷的维护是由教师来做的,原始信息会存储在关系型数据库(这里我们用 MySQL)中,试卷经过审核,会写入到 Redis。
试卷的读写不需要特别的逻辑,这里我们使用数据结构 String 即可,简单。
写入 redis 的试卷 key 定义:学校 ID:年级 ID:学期 ID:课程 ID:试卷 ID。
写入 redis 的试卷 value(试卷内容)定义:使用 JSON 格式的字符串。
读取流程:
学生考试的时候,会根据每个学生的学校、年级、学期、课程信息组装 key,去 reids 获取试卷信息。
三、集群的服务器数量以及性能
服务器数量:3 台(哨兵集群高可用) + 2 台(主从)
服务器性能:3 台哨兵用的服务器选择 8G 或者 16G;存储试卷的服务器选择 32G 或者 64G。具体选择哪一个配置,还需要结合成本来做取舍。
版权声明: 本文为 InfoQ 作者【🐢先生】的原创文章。
原文链接:【http://xie.infoq.cn/article/7c71b4a6873213281f6ca7f2a】。文章转载请联系作者。
评论