发布时间: 2023-04-19 16:10:49
Redis哨兵机制自动化了以下三个主要功能,实现了主从故障自动切换,可以减少Redis集群的运营和维护开销:
监控主存储库的运行状态,确定主库何时客观上处于离线状态;
在主库客观上脱机后,选择一个新的主库;
一旦选择了新的主库,就会通知从库和客户端。
主从模式下,如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。
而且,如果客户端发送的都是读操作请求,那还可以由从库继续提供服务,这在纯读的业务场景下还能被接受。但是,一旦有写操作请求了,按照主从库模式下的读写分离要求,需要由主库来完成写操作。
无论是写服务中断,还是从库无法进行数据同步,都是不能接受的。所以,如果主库挂了,我们就需要运行一个新主库,比如说把一个从库切换为主库,把它当成主库。
哨兵其实就是一个运行在特殊模式下的 Redis 进程,主从库实例运行的同时,它也在运行。
哨兵主要负责的就是三个任务:监控、选主(选择主库)和通知。
1、监控
监控是指哨兵进程在运行时,周期性地给所有的主从库发送 PING 命令,检测它们是否仍然在线运行。
如果从库没有在规定时间内响应哨兵的 PING 命令,哨兵就会把它标记为“下线状态”;同样,如果主库也没有在规定时间内响应哨兵的 PING 命令,哨兵就会判定主库下线,然后开始自动切换主库的流程。
2、选主
这个流程首先是执行哨兵的第二个任务,选主。
主库挂了以后,哨兵就需要从很多个从库里,按照一定的规则选择一个从库实例,把它作为新的主库。这一步完成后,现在的集群里就有了新主库。
3、通知
然后,哨兵会执行最后一个任务:通知。
在执行通知任务时,哨兵会把新主库的连接信息发给其他从库,让它们执行 replicaof 命令,和新主库建立连接,并进行数据复制。同时,哨兵会把新主库的连接信息通知给客户端,让它们把请求操作发到新主库上。
上一篇: 云计算和大数据有哪些区别
下一篇: Redis内存碎片是什么