我们之前在哨兵机制中讲过了(如果没有看过这篇文章的,必须先看这篇文章之后再来看本篇),哨兵可以实现主从库的自动切换。通过部署多个实例,就形成了一个哨兵集群,哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。 但是你有没有想过这样一个问题:如果有哨兵实例在运行时发生了故障,主库还能正常切换吗?
所以,如果有个哨兵挂掉了,那么,此时的集群是无法进行主从库切换的。 因此,通常我们至少会配置3个哨兵实例。 这一点很重要,你在实际应用时可不能忽略了。 通常,我们在解决一个系统问题的时候,会引入一个新机制,或者设计一层新功能,就像我们在这两节课学习的内容:为了实现主从切换,我们引入了哨兵; 为了避免单个哨兵...
实际上,一旦多个实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了,其他哨兵还能继续协作完成主从库切换的工作,包括判定主库是不是处于下线状态,选择新主库,以及通知从库和客户端。 基于pub/sub 机制的哨兵集群组成 哨兵之间的相互发现 哨兵实例之间可以相互发现,要归功于 Redis 提供的 pub/sub 机制,也就是发布 / ...
所以,如果有个哨兵挂掉了,那么,此时的集群是无法进行主从库切换的。因此,通常我们至少会配置 3 个哨兵实例。这一点很重要,你在实际应用时可不能忽略了。 总结 支持哨兵集群的这些关键机制: 基于pub/sub 机制的哨兵集群组成过程; 基于INFO 命令的从库列表,这可以帮助哨兵和从库建立连接; 基于哨兵自身的 pub/sub ...
上节课,我们学习了哨兵机制,它可以实现主从库的自动切换。通过部署多个实例,就形成了一个哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。 但是,我们还是要考虑一个问题:如果有哨兵实例在运行时发生了故障,主从库还能正常切换吗? 实际上,一旦多个实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了...
实际上,一旦多个实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了,其他哨兵还能继续协作完成主从库切换的工作,包括判定主库是不是处于下线状态,选择新主库,以及通知从库和客户端。 1基于 pub/sub 机制的哨兵集群组成 哨兵之间的相互发现 哨兵实例之间可以相互发现,要归功于Redis提供的 pub/sub 机制,也就是发布 /...
哨兵机制,它可以实现主从库的自动切换。通过部署多个实例,就形成了一个哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。 但是,我们还是要考虑一个问题:如果有哨兵实例在运行时发生了故障,主从库还能正常切换吗? 实际上,一旦多个实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了,其他哨兵还能继续...
哨兵就可以根据从库列表中的连接信息,和每个从库建立连接,并在这个连接上持续地对从库进行监控。 基于pub/sub 机制的客户端事件通知 每个哨兵实例也提供 pub/sub 机制,客户端可以从哨兵订阅消息。 哨兵提供的消息订阅频道有很多,不同频道包含了主从库切换过程中的不同关键事件。
这是由哨兵向主库发送 INFO 命令来完成的。 哨兵也和客户端连接: 主从库切换后,客户端也需要知道新主库的连接信息,才能向新主库发送请求操作。所以,哨兵还需要完成把新主库的信息告诉客户端这个任务。 实际使用哨兵时要求,客户端能够获取到哨兵集群在监控、选主、切换这个过程中发生的各种事件。