数据复制(副本或者分片)

从 Redis 的多服务节点来考虑,比如 Redis 的主从复制、哨兵模式,以及 Redis 集群。

主从同步 (主从复制),无法自动恢复,难在线扩容

这是 Redis 高可用服务的最基础的保证,实现方案就是将从前的一台 Redis 服务器,同步数据到多台从 Redis 服务器上,即一主多从的模式,这样我们就可以对 Redis 做读写分离了,来承载更多的并发操作,这里和 MySQL 的主从复制原理上是一样的。
缺点:

  1. 自动容错和恢复功能.需要人工介入
  2. 难维护,无法在线扩容

Sentinel(哨兵模式)自动版主从复制。副本存储

在使用 Redis 主从服务的时候,会有一个问题,就是当 Redis 的主从服务器出现故障宕机时,需要手动进行恢复,为了解决这个问题,Redis 增加了哨兵模式(因为哨兵模式做到了可以监控主从服务器,并且提供自动容灾恢复的功能)

master选举过程:
哨兵watch监控,标记 主观下线,然后进行投票。投票超过半数才算通过客观下线。

http://image.clickear.top/20211222185049.png

哨兵选举与Raft相似之处

image.png

redis需要额外引入一个哨兵集群,进行监控,选主,通知redis主从节点。而raft一般是同一个服务器的不同角色进行切换。由集群内进行投票选举,定时通信,判断每个节点的存活。

  1. 监控,都是根据心跳来监控服务的存活。redis哨兵模式是判断,没有大部分节点的心跳,则认为已经下线(客观下线)。进而重新选举。而Raft是从节点,没接受到主节点的心跳,超时了,自动触发选举。
  2. 选举。谁能作为主节点。 redis是通用打分权重进行选择。而Raft是根据日志最新的follower竞选成功。 redis不需要大部分节点同意,由哨兵节点进行打分给出。而Raft是大部分节点投票同意了,才能竞选成功。
  3. 通知。选出新主库后,通知从库和客户端。Raft心跳节点,就已经附带信息告知了谁是主节点。从节点要从主节点去同步日志。

资料

07 哨兵机制:主库挂了,如何不间断服务?