redis主从复制、哨兵、集群讲解

redis高可用

谈到redis的高可用,如何保证备份机器是原始服务器的完整备份呢,需要使用哨兵和复制

  1. 哨兵(sentinel):可以管理多个redis服务器,它提供了监控、提醒、故障转移的功能
  2. 复制(replication):则是负责让一个redis服务器可以配备多个备份服务器
  • redis正是利用这两个功能来保证redis的高可用

哨兵-sentinel

哨兵是redis集群架构中非常重要的一个组件,哨兵的出现主要解决了主从复制出现故障时需要人为干预的问题
redis哨兵的主要功能:

  1. 集群监控:负责监控redis master和slaver进程是否正常工作
  2. 消息通知:如果某个redis实例有故障,哨兵会发送消息作为报警通知给管理员
  3. 故障转移:如果master node挂掉了,会自动转移到slaver node
  4. 配置中心:如果故障转移发生了,通知client客户端新的master地址
    原理:当主节点出现故障时,由redis sentinel自动完成故障发现和转移,并通知应用方,实现高可用

复制-replication

redis为了解决单点数据库问题,会把数据复制多个副本部署到其它节点上,通过复制,实现redis的高可用性
通过数据的冗余备份,保证数据和服务的高度可靠性
数据复制原理,执行步骤

  1. 从数据库向主数据库发送sync(数据同步)命令
  2. 主数据库接收到同步命令后,会保存快照,创建一个RDB文件
  3. 主数据库保存完快照后,向从数据发送RDB文件,而从数据接收并载入该文件
  4. 主数据库将缓冲区的所有写命令发送给服务器执行
  5. 以上处理完后,主数据库每执行一次写命令,都会将被执行的写命令发送给从数据库
    注意在redis2.8之后,主从断开重连后会根据断开之前最新的命令偏移量进行增量复制

redis主从复制、哨兵和集群这三个有啥区别?

主从复制是为了数据备份,哨兵是为了高可用,redis主服务挂了哨兵可以进行切换,
集群则是因为单个redis实例能力有限,搞多个分散压力
一句话:主从负责数据备份,sentinel负责高可用,cluster解决了单机redis容量有限问题,将数据按照一定规则分配到多台机器
sentinel着眼与高可用,cluster提高并发量

  1. 主从模式:读写分离,备份,一个master可以有多个slavers
  2. 哨兵:用来监控、提醒、故障转移,哨兵发现主服务器挂掉后,通过raft算法重新选取一个slaver当做主服务器
  3. 集群:为了解决单机redis容量有限问题,按照一定的规则将数据分配到多态服务器,内存/QPS不受限于单机,可受益于分布式集群

参考文档

posted @ 2022-03-31 13:44  专职  阅读(87)  评论(0编辑  收藏  举报