调研Redis高可用两种方案
副标题[/!--empirenews.page--]
导读:Redis是被广泛使用的基础软件之一。对于工程师和,架构师,运维人员来说,了解Redis的高可用方案和背后的原理,是必备的基础知识。本文作者深入分析了Redis高可用的方方面面,并且做了有效总结,相信对广大读者可以起到很好的领路作用。 作者 codedump codedump.info 博主,多年从事互联网服务器后台开发工作。可访问作者博客阅读 codedump 更多文章。 Redis中为了实现高可用(High Availability,简称HA),采用了如下两个方式:
Redis中主从节点复制数据有全量复制和部分复制之分。 旧版本全量复制功能的实现全量复制使用snyc命令来实现,其流程是:
旧版本全量复制功能,其最大的问题是从服务器断线重连时,即便在从服务器上已经有一部分数据了,也需要进行全量复制,这样做的效率很低,于是新版本的Redis在这部分做了改进。 新版本全量复制功能的实现新版本Redis使用psync命令来代替sync命令,该命令既可以实现完整全同步也可以实现部分同步。 复制偏移量执行复制的双方,主从服务器,分别会维护一个复制偏移量:
主服务器内部维护了一个固定长度的先进先出队列做为复制积压缓冲区,其默认大小为1MB。 在主服务器进行命令传播时,不仅会将写命令同步到从服务器,还会将写命令写入复制积压缓冲区。 每个Redis服务器,都有其运行ID,运行ID由服务器在启动时自动生成,主服务器会将自己的运行ID发送给从服务器,而从服务器会将主服务器的运行ID保存起来。 从服务器Redis断线重连之后进行同步时,就是根据运行ID来判断同步的进度:
有了前面的准备,下面开始分析psync命令的流程:
前面两种情况主服务器收到psync命令之后,会出现以下三种可能:
Redis使用哨兵机制来实现高可用(HA),其大概工作原理是:
以上将Redis节点分为两类:
以上是大体的流程,这个流程需要解决以下几个问题:
以下来逐个回答这些问题。 三个监控任务哨兵节点通过三个定时监控任务监控Redis数据节点的服务可用性。 info命令每隔10秒,每个哨兵节点都会向主、从Redis数据节点发送info命令,获取新的拓扑结构信息。 Redis拓扑结构信息包括了:
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |