7. Redis如何支持高并发和高可用

Redis如何支持高并发

Redis 主从架构(master-slave) + Redis 读写分离

Redis 集群架构做成主从架构,一主多从。主负责写,并负责将数据同步到其他的salve 节点上,从负责读,所有的读请求走从节点

这样不仅能支持高并发还能很轻易的进行水平扩容,只需要在扩容 slave 节点就好了

Redis replication 主从同步基本原理

  1. redis 采用异步复制的方法进行复制,现在好像是 slave node 会周期性的确认一下自己每次复制的数据量
  2. 一个master node 可以有多个 salve node
  3. slave node 可以链接其他的 slave node
  4. slave node 做复制的时候不会阻塞 master的工作
  5. slave node 进行复制的时候不会阻塞自己的读操作,会使用旧数据,等同步完成删除旧数据,在使用新数据
  6. slave node 可以做水平扩容进而支持高并发

为什么主从架构必须要开启持久化机制

当master 宕机之后,如果没=没有开启持久化,那么master上的数据是空的,如果在经过复制之后 slave 节点的数据也全部为空

就算是哨兵自主选择了 master,在启动之后原 master节点也会丢失部分数据,即便是这样,还是会存在哨兵还没有检测到 master failure,master 自己重启了,还是会导致所有的数据清空

Redis 如何将 master 数据复制到 slave 上

master 将数据复制到 slave 上一般有全量复制和增量复制两种操作

全量复制一般出现在 slave 初始化节点
增量复制一般是 slave 中已经有了 master 的部分数据,但是因为某种原因和master 断开了链接,之后又重连上了

主从复制原理:

  1. 一个slave 链接到 master 的时候会给 master 发送一个 sync 命令
  2. master 接收到命令之后就会将数据生成快照文件,并且在缓冲区记录之后的写操作
  3. master 将生成的快照文件发送给所有的从节点
  4. 从节点接收到新的快照文件之后丢弃旧数据,载入新数据
  5. 主节点快照发送完成之后就会将之后的写操作发送给从服务器
  6. 从服务器执行主节点发送过来的写命令

在这里插入图片描述

主从复制的断点续传

中途断网导致没有一次性传输完成,在连接之后还会在断点处继续传输

原理: master 节点会在内存中创建一个 backlog 的日志文件,backlog 文件中会有一个 raplica offset 来记录传输到哪里,当链接之后,salve 就会要求 master 从 replica offset 出传输

过期 key 的处理

slave 不会过期 key,只有当 master 过期 key 之后,master 会模拟一条del命令发送给slave

Redis 如何实现高可用

通过哨兵 + Redis 主从架构 进行故障转移


参考博客:https://www.cnblogs.com/daofaziran/p/10978628.html

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页