写点什么

模块 4 作业

用户头像
4anonymous
关注
发布于: 刚刚
数据结构设计

KEY: 考试 id

VALUE:Hash

读写分析/读写流程

写入:

  1. 老师通过考试系统出题,会得到一个全局唯一的考试 id

  2. 考试 id 作为 key,把试卷内容拆分,使用不同 field:value 存入,如可以按照题目的类型和通用信息用不同 key 存储,通用信息:title:“xxx 考试”,type:“计算机网络试卷”,题目类型和具体内容类型有 a-单选题、b-填空题、c-多选题、d-问答题这里需要根据试卷的不同而设计 value 为 题目内容,如 第一题:xxxxx

读取:

  1. 学生通过考试 id,获取试卷基础信息如考试标题,题目类型和数量等

  2. 根据题目类型分段获取题目信息

设计关键点:

  • 选择 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)

发布于: 刚刚阅读数: 2
用户头像

4anonymous

关注

还未添加个人签名 2017.10.19 加入

还未添加个人简介

评论

发布
暂无评论
模块4作业