之前我们已经对Redis的集群复制和故障转移做了基本的讲解,而遇到故障状况,Redis怎么去处理,以达到尽量减少故障所带来的损失呢,其中的故障自动恢复也值得深入探讨一下。今天的大数据学习分享,我们就主要来讲讲Redis如何实现故障自动恢复?
为了在故障发生时,尽可能地降低故障带来的影响,Redis提供了完善的故障恢复机制:哨兵。
Redis部署模式
Redis在部署时,可以采用多种方式部署,每种部署方式对应不同的可用级别。
单节点部署:只有一个节点提供服务,读写均在此节点,此节点宕机则数据全部丢失,直接影响业务。
master-slave方式部署:两个节点组成master-slave模式,在master上写入,slave上读取,读写分离提高访问性能,master宕机后,需要手动把slave提升为master,业务影响程度取决于手动提升master的延迟。
master-slave+哨兵方式部署:master-slave与上述相同,不同的是增加一组哨兵节点,用于实时检查master的健康状态,在master宕机后自动提升slave为新的master,最大程度降低不可用的时间,对业务影响时间较短。
从上面几种部署模式可以看出,提高Redis可用性的关键是:多副本部署+自动故障恢复,而多副本正是依赖主从复制。
Redis高可用做法
Redis原生提供master-slave数据复制,保证slave永远与master数据保持一致。
在master发生问题时,我们需要把slave提升为master,继续提供服务。而这个提升新master的操作,如果是人工处理,必然无法保证及时性,所以Redis提供了哨兵节点,用来管理master-slave节点,并在master发生问题时,能够自动进行故障恢复操作。
整个故障恢复的工作,正是Redis哨兵自动完成的。
Redis哨兵模式
哨兵是Redis高可用的解决方案,它是一个管理多个Redis实例的服务工具,可以实现对Redis实例的监控、通知、自动故障转移。
在部署哨兵时,我们只需要在配置文件中配置需要管理的master节点,哨兵节点就可以根据配置,对Redis节点进行管理,实现高可用。
一般我们需要部署多个哨兵节点,这是因为在分布式场景下,要想确定某个机器的某个节点上否发生故障,只用一台机器去检测可能是不准确的,很有可能这两台机器的网络发生了故障,而节点本身并没有问题。
所以对于节点健康检测的场景,一般都会采用多个节点同时去检测,且多个节点分布在不同机器上,节点数量为奇数个,避免因为网络分区导致哨兵决策错误。这样多个哨兵节点互相交换检测信息,最终决策才能确认某个节点上否真正发生了问题。
哨兵节点部署并配置完成后,哨兵就会自动地对配置的master-slave进行管理,在master发生故障时,及时地提升slave为新的master,保证可用性。
关于大数据学习,Redis如何实现故障自动恢复,以上就为大家做了基本的入门讲解了。关于Redis的哨兵模式,其中涉及到的细节其实非常多,多多进行练习才能理解得更加深刻。成都加米谷大数据,专业
大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频可联系客服获取!