写点什么

架构实战营 - 模块四作业

作者:满心
  • 2024-04-02
    湖南
  • 本文字数:610 字

    阅读完需:约 2 分钟

一、Redis 数据结构设计

key: 学校 ID+课程 ID+考试时间,例如 1001200120240401,代表学校 ID 为 1001,课程 ID 为 2001,时间为 20240401

value: String,存储 Json 序列化字符串,示例如下


二、读写分析

1、考试前 3 天,教师上传试卷内容和标准答案,key-value 存储即可

2、学生下载试卷,通过 key 获取试卷内容即可

三、服务器数量和性能评估

1、用户量估算

学生 1000 万

2、用户行为建模和性能估算

a. 试卷上传

假设平均一所大学 5 万人,1000 万学生对应的学校数量是:

1000w / 5w = 200


每个学校假设 100 个专业,每个专业假设 20 门课程,则每次考试对应的试卷数量是:

200 × 4(年级) × 100 × 20 = 160w


一个试卷 20 个判断题、20 个选择题、4 个问答题。

假设判断题 50 个汉字、判断题 100 个汉字,问题题 300 个汉字

在编码方式使用 utf-8 情况下,每个汉字占用 3 字节,单试卷的存储量为:

(20 × 50 + 20 × 100 + 4 × 300)× 3 = 12600byte ≈ 13K


单次考试总存储量为:

160w × 13K = 20.8G ≈ 20G


试卷一般在考试前三天录入系统,根据二八法则,假设 80%的试卷在 20%的时间录入系统,TPS 为:

160w × 80% / (3 × 24 × 60 × 60 × 20%) ≈ 25/s


b. 试卷下载

课程已计算出:5w/s


综上所述,单次考试总存储量为 20G,Redis 机器可以使用 32G 内存机器。单机 Redis 机器支持的 TPS 是 5~10w,因此理论上单机的并发就可以支撑业务,考虑到高可用,最终使用一主一从的部署架构,此外还需要 3 台机器部署哨兵节点。所需的服务器数量和性能如下:

  • 4C32G100G 两台

  • 2C4G50G 三台


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

满心

关注

还未添加个人签名 2020-07-22 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 - 模块四作业_架构实战营_满心_InfoQ写作社区