Redis哨兵、复制、集群的设计原理与区别

发布时间 2023-12-03 00:20:28作者: 防守三巨臀

本篇主要谈Redis的高可用

谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢? 这时候就需要哨兵和复制

1.哨兵(Sentinel): 可以管理多个Redis服务器,它提供了监控,提醒以及自动的故转移的功能

2.复制(Replication): 则是负责让一个Redis服务器可以配备多个备份的服务器

Redis正是利用这两个功能来保证Redis的高可用

哨兵 (sentinal)
哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题.
1.Redis哨兵主要功能
(1)集群监控:负责监控Redis master和slave进程是否正常工作
(2)消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
(3)故障转移: 如果master node挂掉了,会自动转移到slave node上
(4)配置中心:如果故障转移发生了,通知client客户端新的master地址

2.Redis哨兵的高可用
原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性.

1.哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况
2.同时哨兵节点之间也互相通信,交换对主从节点的监控状况
3每隔1秒每个哨兵会向整个集群: Master主服务器+Slave从服务器+其他Sentinel (哨)进程,发送一次ping命令做一次心跳检测。
这个就是哨兵用来判断节点是否正常的重要依据,涉及两个新的概念:主观下线和客观下线。
1.主观下线:一个哨兵节点判定主节点down掉是主观下线
2.客观下线:只有半数兵节点都主观判定主节点down掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线
3原理:基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵节点中发起投票机制Raf算法(选举算法),最终被投为领导者的哨兵节点完成主从自动化切换的过程