【Redis】-- 哨兵
2026/7/24 20:56:13 网站建设 项目流程

文章目录

  • 1. 哨兵
    • 1.1 基本概念
    • 1.2 选举原理

1. 哨兵

1.1 基本概念

Redis 的哨兵机制是通过独立的进程来实现的,和 redis-server 是不同的进程。

哨兵节点不负责存储数据,只是对其他的 redis 服务节点起到监控的作用。

如果是从节点挂了,没有关系~

1.2 选举原理

  1. 主观下线:
    哨兵节点通过心跳包,判断 Redis 服务器是否正在正常工作,如果心跳包没有如期而至,就认为该 Redis 服务节点主观下线了。

    此时如果只有一个哨兵节点收不到 Redis 服务器的心跳包,有可能是网络波动的原因,并不能直接断定这个Redis服务节点挂了。

  2. 客观下线:
    多个哨兵进行投票,一个哨兵节点一票,当多个 哨兵节点 都认为这个 Redis 服务节点挂了(达到了法定票数),就认为这个 Redis 服务节点真滴挂了。

  3. 然后多个哨兵节点选出一个leader节点。

    leader选举:
    1. 假设现在有三个哨兵1、2、3.。
    2. 假设哨兵1最先发现主节点是客观下线之后,立即给自己投了一票,并且向2、3节点发送了投票请求。
    3. 哨兵2、3比1慢了半拍,当他们还没有投出自己手中的票时,收到了拉票请求就会立即投出去。
    4. 如果哨兵节点收到了多个拉票请求,就会投给最先到达的。

    看谁反应快,看谁网络时延小。

  4. 由这个被选举出来的leader节点负责在所有的从服务节点中选出一个从节点作为新的主节点。

    选举新的master的标准:
    1. 比较优先级:每个Redis数据节点,都会在配置文件中有优先级的设置(slave-priority),优先级高的从节点,就会胜出。
    2. 比较 offset:offset数值越大,说明从节点的数据和主节点越接近。
    3. 比较 runid:每个 redis节点 启动的时候都会随机生成一串数字(比较大小,大小全凭缘分)。

  5. 新的主节点指定好之后,leader就会控制这个节点,执行slave no one,成为master;再控制其他节点,执行slave of,让这些其他节点,作为新主节点的从节点。

  6. 哨兵节点会自动的通知客户端程序,告知新的主节点是谁,并且后续客户端再进行写操作,就会针对新的主节点来进行操作。

注意事项:
1. 哨兵节点不能只有一个,否则哨兵节点挂了会影响系统的可用性。
8. 哨兵节点最好是奇数个(大部分情况3个就够了),方便选取leader,得票容易超出半数。
9. 哨兵节点不负责存储数据。
10. 哨兵+主从复制提高了可用性,但是,不能解决数据极端情况下丢失的问题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询