模块四 - 考试试卷存储方案
数据结构
试卷存储,选择使用 List 结构
key: 学校 id+学院+年级+科目
value:每道题作为 string 存入
选择使用 list,而不用 string 的原因是防止大量请求获取的数据量过大,导致网络带宽成为瓶颈。
不选择 hash 的原因,是因为在计算机上答题,大多数都是按照顺序来的,所以使用 list 比 hash 更合适。
读写流程
读
老师登陆后台考试系统
在考试系统录入题目,每录入一个题目就写到 redis 中(因为录入题目的时间一般都是考试之前,是一个时间段请求的 tps 可以不用考虑)。
写
考试前,学生先登录考试系统
登陆系统后,根据学生信息拉取试卷信息到本地
如果服务器没有试卷信息,则从 redis 读取,读取之后可以缓存到服务器上
集群
现有的 qps 估算:
请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒
根据https://redis.io/topics/benchmarks redis 官方的基准测试来看 LPOP:71994.96 requests per second
一台 master,两台 slave,三台 Sentinel,总共 6 台 redis 服务器。
版权声明: 本文为 InfoQ 作者【Only】的原创文章。
原文链接:【http://xie.infoq.cn/article/5e2f1af7394a1fbba5a46c082】。未经作者许可,禁止转载。
评论