千万级学生管理系统的考试试卷存储方案
(一) 数据结构设计
试卷数据结构:,采用 Hash 数据结构,存储的目录结构为"com:paper:"
主 key: 试卷的 ID(日期+考试类型+科目 ID)
子 key:question, 子 Value: 试卷的具体内容【数据结构为 JSON 数据】
子 key: answer, 子 Value: 试卷的标准答案【数据结构为 JSON 数据】
学生提交试卷答案数据结构:采用 String 数据结构,存储的目录结构为"com:student:answer:日期:"
Key: 学生试卷答案 ID(试卷 ID+学生 ID),
vlalue: 对应的学生试卷答案【json 的数据结构】
(二) 数据的读写分析
学生在进行试卷请求时【即读取数据】,按照轮询的机制访问从库数据,进行读取试卷的数据。学生在提交试卷时采用在主库中进行写入数据。整体的采用主库写入数据,从库读取数据。
(三) 数据库分析
采用 redis+sentinel 模式,主要为 1 主两从和 3 哨兵的模式,
选用 3 台主机【虚拟服务器】分别部署数据节点和 sentinel 节点[每台机器上即部署数据节点也部署哨兵节点,这样即节省资源也确保了数据的高可用]。
按照最低的计算单台机器支持 QPS:3W、TPS:3000/S,考试应用在从机上进行数据读取【请求试卷】,在主机上进行写操作【提交试卷】。
版权声明: 本文为 InfoQ 作者【joak】的原创文章。
原文链接:【http://xie.infoq.cn/article/b6b285dbd80aebd00aee70550】。文章转载请联系作者。
评论