写点什么

[架构实战营] 模块四作业

作者:Geek_0ed632
  • 2022 年 1 月 03 日
  • 本文字数:430 字

    阅读完需:约 1 分钟

Redis 数据结构设计

需求

  1. 存储试卷;

  2. 使用 redis sentinel;

  3. 学生拉取试卷 QPS = 5w/s;

考虑

  1. 若已试卷的题目为键去存储,会导致 QPS 增长到单个复制集群无法承载的程度,所以以试卷为粒度存储;

  2. 此时一次试卷内容会过长,导致 redis 读取性能下降,所以复制集群需要多台设备支持对应的读性能;

  3. 试卷形式不同:一题一展示,整张考卷全部展示,分页展示;

实现

  1. 使用 list 的存储方式;

  2. key:学校 ID + 学期 ID + 学科 ID + 试卷 ID;

  3. value:list,list 内为 json 格式题目内容;

读写流程

  1. 学生发起读试卷请求;

  2. 经由应用将不同份试卷的请求分布到不同 redis 节点上;

  3. 使用 LRANGE key 0 -1 就可以获取对应试卷内容;

  4. 考生完成考卷上传至 HBASE;

计算 Redis sentinel 集群的服务器数量和性能

  1. 学生拉取试卷 QPS = 5w/s;

  2. 单台 redis 标准读 QPS = 5w/s;

  3. 若全量读取考虑读取内容的大小影响单线程的工作内容,单台 redis 标准读 QPS = 2w/s;

  4. 若考虑冗余及单台设备故障时的影响,即 n+1 冗余;

  5. redis 集群由 1 台写入节点 + 3 台备份节点组成;

  6. 单台失效时 3 台设备提供 QPS = 6w/s;


发布于: 3 小时前
用户头像

Geek_0ed632

关注

还未添加个人签名 2019.08.26 加入

还未添加个人简介

评论

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