[架构实战营] 模块四作业
学生管理系统的考试试卷存储方案分析
根据资料描述:中国大学共有 13 个学科,61 个大学专业类,506 个大学专业;
假设每个专业平均考核 20 门课,且基本提前一个月出好题并上传系统,我们计算其 TPS:506*20/30 天 ≈0.012TPS, 压力不大;
存储要求:, 其中假设每门课程考试内容平均占据 100kb 的存储空间,则缓存设备选型可以考虑 4G 及以上内存设备,考虑到经济性,选择 4G 内存即可。
完善 Redis 的数据结构设计
Key: 学校 ID + 专业 ID + 课程 ID + 学年
Value: 考卷内容经 json 格式化后使用 string 存储;
设计具体的读写流程
学生请求试卷:学生登录考试系统之后,将自动获取到学校 ID、专业 ID 及当前学年信息,用户只要选择好课程 ID, 几个获取到对应的考试试卷内容;
老师设置及设置考试试卷:老师登录到考试系统之后,获取到设置考卷的权限,老师在编辑器中编辑完试卷之后即可上传试卷内容;当然在上传之前需要老师选择好学校 ID、专业 ID、课程 ID 及学年信息;在上传过程中会再次校验老师权限,确保其有对该课程试卷的设置权限;
计算 Redis sentinel 集群的服务器数量和性能
根据之前估算,考试请求数量为:50000 QPS; 每台 Redis 服务器的性能在 5 万 ~ 10 万之间;
为了确保试卷请求服务的可用性,使用 redis 哨兵模式进行部署;
使用 sentinel 和 Redis 一同部署的主从自动切换架构,部署设备在三台以上,由于数据量不大,三台即可,如此可以提供 15 万 ~ 30 万 QPS 的读取性能。
版权声明: 本文为 InfoQ 作者【xyu】的原创文章。
原文链接:【http://xie.infoq.cn/article/39fcab42020db74c37dd98b76】。文章转载请联系作者。
评论