Redis哨兵机制原理 总结

1、监控。
a)每10秒 对 master和slave 发送info命令获取最新拓扑结构图。
b)每个哨兵节点每隔2秒会向master节点的指定频道上发送该哨兵节点对于master和slave的判断以及当前哨兵节点的信息,同时每个哨兵节点也会订阅该频道,来了解其它哨兵节点的信息及对主节点的判断,其实就是通过消息publish和subscribe来完成的。
c)每隔1秒每个哨兵会向主节点、从节点及其余哨兵节点发送一次ping命令做一次心跳检测,这个也是哨兵用来判断节点是否正常的重要依据。
主观下线,客观下线。

2、哨兵leader选举
a)每个在线的哨兵节点都可以成为领导者,当它确认(比如哨兵3)主节点下线时,会向其它哨兵发is-master-down-by-addr命令,征求判断并要求将自己设置为领导者,由领导者处理故障转移;
b)当其它哨兵收到此命令时,可以同意或者拒绝它成为领导者;
c)如果哨兵3发现自己在选举的票数大于等于num(sentinels)/2+1时,将成为领导者,如果没有超过,继续选举…………

3、自动故障转移。
a)过滤掉主观下线的节点 。
b)选择slave-priority最高的节点,如果由则返回没有就继续选择。
c)选择出复制偏移量最大的系节点,因为复制偏移量越大则数据复制的越完整,如果由就返回了,没有就继续。
d)选择run_id最小的节点。

posted @ 2020-03-25 13:27  liuxinyu123  阅读(82)  评论(0)    收藏  举报