哨兵机制的7个核心概念:
1、哨兵如何知道redis主从信息
启动时读取指定sentinel.conf 配置文件,记录哨兵的监测结果。配置文件中保存着主从集群中的master的信息,可以通过info命令,进行主从信息自动发现。

2、什么是master主观下线?
单个哨兵自身认为redis实例已经不能提供服务。
检测机制:哨兵向redis发送ping请求,PONG、LOADING、MASTERDON这三种情况视为正常,其他回复均视为无效。

3、什么是客观下线
一定数量值的哨兵认为master已经下线称为客观下线,当哨兵认为master下线后,会通过SENTINEL is master-down-by-addr命令 询问其他哨兵是否认为master已经下线,如果达成共识,就会认为master节点客观下线,开始故障转移流程

4、哨兵之间如何通信
通过redis的发布订阅机制,也可以通过命令进行通信

6、slave选举机制
基于Raft算法实现选举流程如下
1)、拉票阶段每个哨兵节点都希望自己成为领导者
2)、sentinel节点收到拉票命令后,如果没有收到或同意过其他sentinel节点的请求,就同意该sentinel节点的请求
3)、如果sentinel节点发现自己的票数已经超过一半的数值,那么它将成为领导者,去执行故障转移
4)、投票结束后,如果超过failover-timeout的时间内,没进行实际的故障转移操作,则重新拉票选举

7、最终主从切换的过程
针对即将成为master的slave节点,将其撤出主从集群,自动执行:slaveof NO ONE
针对其他slave节点,使他们成为新的master的从属

哨兵机制的核心作用:基于主从复制 为客户端提供主服务器地址发现,实现主从同步机制的主从自动切换。

哨兵的核心运作流程
服务发现和健康检查流程: 客户端通过哨兵发现redis实例信息,哨兵通过连接master发现主从集群内的所有实例信息,哨兵通过ping命令监控redis实例的监控状况 。

故障切换流程:哨兵发现master不能正常提供服务,则通知给其他哨兵,当一定数量的哨兵都认为master挂了,选举一个哨兵作为故障转移的执行者,执行者在slave中选取一个作为新的master,将其他slave重新设定为master的从属