Redis的三种集群模式

2 篇文章 0 订阅
1 篇文章 0 订阅

Redis 的常用的集群方式主要有以下三种,分别是主从复制模式哨兵模式Redis-Cluster集群模式

主从复制模式

主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(Master),后者称为从节点(Slave),数据的复制是单向的,只能由主节点到从节点。Redis 的主从复制模式一般是由一主一从(一个主节点+一个从节点)或一主多从(一个主节点+多个从节点)的形式来构成。主节点负责写操作,从节点负责读操作,从节点从主节点复制数据,通过这种方式也可以实现读写分离。

主从复制的原理
  • 从服务器连接主服务器,发送 SYNC 命令(即 sync command 命令),请求同步链接
  • 主服务器接收到 SYNC 命名后,开始执行 BGSAVE 命令生成 RDB 文件并使用缓冲区记录此后执行的所有写命令
  • 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令
  • 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照
  • 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  • 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;(从服务器初始化完成)
  • 主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令(从服务器初始化完成后的操作)
主从复制模式的优缺点:

优点
1、支持主从复制,主机会自动将数据同步到从机,可以进行读写分离,同时缓解了主库的压力。
2、Master Server 是以非阻塞的方式为 Slaves 提供服务。所以在 Master-Slave 同步期间,客户端仍然可以提交查询或修改请求;Slave Server 同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
缺点
1、由于 Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致部分读写请求失败,需要等待机器重启或者手动将某台从节点升级为主节点才能解决。而且在主机宕机时,宕机前部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。

总结
主从复制模式下,当主节点宕机后,需要手动将某台从节点切换为主节点,这需要人工干预,不仅费时费力,而且还会造成一段时间内服务不可用

哨兵模式

Redis 2.8 中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。其实哨兵模式也是一种主从复制模式,只不过增加了哨兵的功能,哨兵的功能主要有两点:第一是监控主服务器和从服务器是否正常运行;第二是当主节点出现故障时自动将从节点转换为主节点。

哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的 Redis 工作节点是否正常,当 Master (主节点)出现问题的时候,因为其他节点与主节点失去联系,因此会进行投票,投票过半就认为这个 Master (主节点)的确出现问题,然后会通知其他哨兵,并从 Slaves (从节点)中选取一个作为新的 Master(主节点)。既然涉及到了投票过半的要求,那么参与投票的哨兵就必须为单数,即整个运行哨兵的集群的数量​不得少于3个节点​。在选取新的主节点的过程中,我们又可以将整个过程细分为两步,分别为“选哨兵领导”和“由哨兵领导推举主节点”。

哨兵的下线分为两种,分别是主观下线(我认为你掉线了)和客观下线(我们认为你掉线了)。每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次 ping 命令做一次心跳检测。如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的)。当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。

总结
哨兵模式是基于主从模式的,所有主从的优点,哨兵模式都具有,同时使用哨兵模式后主从节点可以自动切换,可以让系统更健壮,可用性更高。

Redis-Cluster集群模式

Redis 的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台 Redis 服务器都存储相同的数据,很浪费内存,所以在 Redis3.0 上加入了 Cluster 模式,实现的 Redis 的分布式存储,即每台 Redis 节点(Node)上存储不同的内容,很大程度上节约了内容。需要注意的是,集群中的节点也是分为主节点和从节点的,只有主节点负责读写请求和集群信息的维护,而从节点只进行主节点数据和状态信息的复制。Redis-Cluster采用无中心结构。
三个特点
① 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
②节点的失效(下线)是通过集群中超过半数的节点检测失效时才生效。
③ 客户端与 Redis 节点直连,不需要中间代理层,客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值