模块 4 作业
数据结构设计
KEY: 考试 id
VALUE:Hash
读写分析/读写流程
写入:
老师通过考试系统出题,会得到一个全局唯一的考试 id
考试 id 作为 key,把试卷内容拆分,使用不同 field:value 存入,如可以按照题目的类型和通用信息用不同 key 存储,通用信息:title:“xxx 考试”,type:“计算机网络试卷”,题目类型和具体内容类型有 a-单选题、b-填空题、c-多选题、d-问答题这里需要根据试卷的不同而设计 value 为 题目内容,如 第一题:xxxxx
读取:
学生通过考试 id,获取试卷基础信息如考试标题,题目类型和数量等
根据题目类型分段获取题目信息
设计关键点:
选择 hash 作为存储类型,避免试卷的反序列化 cpu 消耗
由于考试大家答题的节奏不同,按照题型分批获取试卷可以减少开始考试时同时请求的网络带宽占用
容量估算:
分析:
截至 2020 年 6 月 30 日,教育部统计的全国高等学校共计 3005 所。
假设每个高校每学期组织 200 门科目考试
试卷数量为 3000 * 200 = 600000
假设每门试卷 5000 字 占用空间为 10KB
每个学期约有 6000000KB 约为 6G 大小
试卷只在考试时被频繁读取,考试结束后使用 mysql 持久保持即可
估算结果:
网络带宽使用:5 万/s *10k 约为 500MB/s
存储空间:单机 6G 空间可以满足需求
读性能:单机 redis qps 约 8w/s 可以满足需求
集群数量: 3 台 sentinel 1 台 master(内存 16G) 1 台 slave(16G)
版权声明: 本文为 InfoQ 作者【4anonymous】的原创文章。
原文链接:【http://xie.infoq.cn/article/94e76c267f73f227053f3e7be】。未经作者许可,禁止转载。
评论