写点什么

Redis Sentinel 初步设计方案

作者:艾瑾行
  • 2023-08-12
    山东
  • 本文字数:764 字

    阅读完需:约 3 分钟

一、  Redis Sentinel 架构

1.1 架构图

1.  性能需求

根据用户量规划,和用户行为模拟推算,Redis 需要适配试卷存储和访问的需求,具体如下:

请求试卷:TPS 50000/s

提交试卷:TPS 1700/s


2.  资源规划:

按照 Redis 单机 5-10wTPS 的性能估算,一个实例即可满足需求,但考虑考试场景的高可用需求,使用三个节点的 Sentinel 部署方案。

如果成本控制比较严格,Sentinel 复用 Redis 机器,即每台机器运行一个 Redis 和一个 Sentinel 实例。


3.  架构图



1.2 数据结构设计

Redis 五种数据结构中,string 最简单,也最契合试卷的存储,所以选择 string 来存储,这里有两种场景的存储,结构设计分别如下

  1. 原始试卷(供学生下载、考试)

key:学科 ID(这里假设所有学校试卷都是统一的,如果每个学校单独命题,可以改为:学校 ID+学科 ID)

value:试卷 info

2.  学生提交的试卷

key:学校 ID+学科 ID+学生 ID

valne:提交试卷 info


二、  读写流程

2.1 写流程



写流程说明

  1. client 通过 Jedis(也可以是 redis-py 等工具)连接 Sentinel 集群,可以录入多个 Sentinel 节点,Jedis 会遍历选择可用的 Sentinel 并发起连接,并开始监听 Sentinel

  2. Jedis 向 Sentinel 请求 Redis master 地址,Sentinel 会即时返回 master 的地址,如果连接过程中 master 发生了切换,Sentinel 会及时通知 Jedis

  3. Jedis 连接到 master,确认其 master 状态后发起试卷的写请求

  4. Redis master 接收试卷上传

  5. 上传完毕,验证上传结果,验证失败则重新上传

2.2 读流程



读流程说明

  1. client 通过 Jedis(也可以是 redis-py 等工具)连接 Sentinel 集群,可以录入多个 Sentinel 节点,Jedis 会遍历选择可用的 Sentinel 并发起连接,并开始监听 Sentinel

  2. Jedis 向 Sentinel 请求可读的 redis 节点地址,Sentinel 会即时返回可读的 master 或者 slave 地址,如果连接过程中有可读节点掉线,Sentinel 会及时通知 Jedis

  3. Jedis 连接到可读节点,发起下载试卷的读请求

  4. Jedis 开始下载试卷


用户头像

艾瑾行

关注

还未添加个人签名 2020-08-12 加入

还未添加个人简介

评论

发布
暂无评论
Redis Sentinel 初步设计方案_架构训练营_艾瑾行_InfoQ写作社区