写点什么

架构训练营 - 模块四 - 作业

用户头像
姑射仙人
关注
发布于: 1 小时前

存储选型

  • 根据需求,请求试卷的 QPS 大概在每秒 5 万,延迟也不能太高,业务模型也为读多写少,并且试卷一旦确定好之后,基本上不会修改。

  • 这样的需求用 Reids 来存储是比较合适的,满足查询的性能需求。因为试卷数据量不大,就无需分片集群。采用 Redis Sentinel 主从复制集群就可以满足要求。


Redis 数据结构

方案一

试卷包含多套,包含各个科目,不同学年的。

试卷分不同类型的题目,似乎没必要按照题目存储多条记录,用一个大的 Json 来存储。

Key: 年级:科目


方案二

试卷本身的设计不变,题目安装标题来存储,每个题目存储一个单独的数据结构。采用 Hash 来存储。

Key: 年级:科目

Field:题目 ID

Value:题目


读写流程

写流程

  • 一次写入所有的试卷题目到 String 中

  • 安装题目 ID 存储题目到 Hash 表中


读流程

  • 一次性加载所有题目,反序列化 Json 为试卷

  • 按照标题 ID 读取,或者读取整个 Hash 表,然后分别展示


性能估算

  • 单机的 Redis 能满足 5w 到 10w 的并发请求,Redis Sentinel 集群使用三节点来部署,Sentinel 节点和 Redis 节点共用机器。需物理机部署,不要使用虚拟机。

  • 试卷不会太多,也不会占用太大内存,32G 基本满足需求,查询请求量也不是特别大,16 核基本满足需求。

用户头像

姑射仙人

关注

还未添加个人签名 2017.10.20 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营 - 模块四 - 作业