(mode4)千万级学生管理系统考试试卷存储方案
概述
学生管理系统中试卷的存储设计方案
需求汇总
试卷请求 QPS: 5w/s, 提交试卷 1700/s
试卷基本信息 CRUD 忽略不计
假设题库共 2w 道试题
方案设计
1)redis 缓存试卷信息,可考虑管理端开发手动预热功能,将各科目考试前预热加载到缓存 redis,提高读性能。
2)试卷读取
读操作先读 redis,redis 未命中情况下,查 mysql 并追加到 redis 缓存内,并返回(这里去数据库 load 数据环节可做为优化点,防止 redis 穿透到 mysql 造成 mysql 压力骤增,一期视工期时长而定)
redis 中试卷数据结构
复制代码
3)落库时先落 mysql,再落 redis,如 redis 落库异常则 mysql 回滚
4)使用浏览器缓存考生考试中间结果,防止考生未提交或误操作或电脑断电等造成已答题目丢失
4、集群服务器数量
根据性能需求分析得最高 5w/s,redis 单机 10w,由于使用 sentinel 的方案,1 主两从,3 个 setinel 保证高可用,所以性能方面 3 个节点足够使用了。
所有年级学科共 20000 道考题 * 12k(假设题目 500 字所占存储大小) = 240M
其它业务缓存信息,读多写少,redis 建议 3 台 4C16G
版权声明: 本文为 InfoQ 作者【消失的子弹】的原创文章。
原文链接:【http://xie.infoq.cn/article/a02c4cccf445d753637d63b1e】。文章转载请联系作者。
评论