写点什么

架构实战营 - 模块四作业

作者:木几丶
  • 2022 年 1 月 09 日
  • 本文字数:601 字

    阅读完需:约 2 分钟

Redis 数据结构设计

采用 string 类型:

  • Key:学校 ID + 专业 ID + 考试 ID

  • Value:题目内容,采用 JSON 格式

  • 过期时间为考试结束后 1 周

读写流程

写流程

  • 考试题录入提前几天写入 Redis 即可,没有太多的性能要求,复杂度较低

  • 考试结果写入即写入 HBase

读流程

  • 获取试卷即从 Redis 读取即可

  • 考试结果从 HBase 获取

整体流程

注:查询考试结果不是此设计的重点,此处没有画出

集群设计

存储量级估算

  • 假设每门考试的题型是 20 判断题、20 选择题、4 道大题。假设每道判断题题干 100 字以内,每道选择题题干 400 字以内,每道大题题干 800 字以内。

每份试卷存储字节=20*100*2 + 20*400*2 + 4*800*2 = 26400 字节≈26KB,以 50KB 计算

  • 假设全国 2000 所学校,每个学校 50 个专业,每个专业 10 张试卷

总计试卷存储占用=50KB*2000*500=50_000_000KB≈50GB

请求量级估算

请求试卷:(课上已作出估算,直接作为参考)

1000 万* 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟= 250 万请求/分钟≈ 5 万/每秒

服务器规划

  • 3 台 Redis,主-从-从

  • 3 台 sentinel

  • 每台服务器 128G 内存

Redis 部署设计

  • 3 台 Redis 均提供读服务。根据估算,Redis 预计有 5wQPS,而实际生产环境中,单台 Redis 的读写性能接近 5w,3 台 Redis 共同提供读服务足以满足读写性能需求。由于考试期间不会有写入,因此所有主库从库都能读取,无需考虑一致性问题

  • 采用 redis-sentinel 模式

其他说明

如果没有 128G 内存的机器,或者考虑到 Redis 实例太大有风险,那么可以将 Redis-sentinel 架构改为集群架构

用户头像

木几丶

关注

还未添加个人签名 2021.01.20 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-模块四作业