加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

调研Redis高可用两种方案

发布时间:2019-05-16 03:30:34 所属栏目:移动互联 来源:高可用架构
导读:导读:Redis是被普及行使的基本软件之一。对付工程师和,架构师,运维职员来说,相识Redis的高可用方案和背后的道理,是必备的基本常识。本文作者深入说明白Redis高可用的方方面面,而且做了有用总结,信托对宽大读者可以起到很好的领路浸染。 作者 codedum
副问题[/!--empirenews.page--]

导读:Redis是被普及行使的基本软件之一。对付工程师和,架构师,运维职员来说,相识Redis的高可用方案和背后的道理,是必备的基本常识。本文作者深入说明白Redis高可用的方方面面,而且做了有用总结,信托对宽大读者可以起到很好的领路浸染。

作者 codedump codedump.info 博主,多年从事互联网处事器靠山开拓事变。可会见作者博客阅读 codedump 更多文章。

Redis中为了实现高可用(High Availability,简称HA),回收了如下两个方法:

  • 主从复制数据。

  • 回收哨兵监控数据节点的运行环境,一旦主节点呈现题目由从节点顶上继承举办处事。

主从复制

Redis中主从节点复制数据有全量复制和部门复制之分。

旧版本全量复制成果的实现

全量复制行使snyc呼吁来实现,其流程是:

  • 从处事器向主处事器发送sync呼吁。

  • 主处事器在收到sync呼吁之后,挪用bgsave呼吁天生最新的rdb文件,将这个文件同步给从处事器,这样从处事器载入这个rdb文件之后,状态就会和主处事器执行bgsave呼吁时辰的同等。

  • 主处事器将生涯在呼吁缓冲区中的写呼吁同步给从处事器,从处事器执行这些呼吁,这样从处事器的状态就跟主处事器当前状态同等了。

调研Redis高可用两种方案

旧版本全量复制成果,其最大的题目是从处事器断线重连时,即便在从处事器上已经有一部门数据了,也必要举办全量复制,这样做的服从很低,于是新版本的Redis在这部门做了改造。

新版本全量复制成果的实现

新版本Redis行使psync呼吁来取代sync呼吁,该呼吁既可以实现完备全同步也可以实现部门同步。

复制偏移量

执行复制的两边,主从处事器,别离会维护一个复制偏移量:

  • 主处事器每次向从处事器同步了N字节数据之后,将修改本身的复制偏移量+N。

  • 从处事器每次从主处事器同步了N字节数据之后,将修改本身的复制偏移量+N。

复制积存缓冲区

主处事器内部维护了一个牢靠长度的先辈先出行列做为复制积存缓冲区,其默认巨细为1MB。

在主处事器举办呼吁撒播时,不只会将写呼吁同步到从处事器,还会将写呼吁写入复制积存缓冲区。

调研Redis高可用两种方案

处事器运行ID

每个Redis处事器,都有其运行ID,运行ID由处事器在启动时自动天生,主处事器会将本身的运行ID发送给从处事器,而从处事器会将主处事器的运行ID生涯起来。

从处事器Redis断线重连之后举办同步时,就是按照运行ID来判定同步的进度:

  • 假如从处事器上面生涯的主处事器运行ID与当前主处事器运行ID同等,则以为这一次断线重连毗连的是之前复制的主处事器,主处事器可以继承实行部门同步操纵。

  • 不然,假如前后两次主处事器运行ID不沟通,则以为是完玉成同步流程。

psync呼吁流程

有了前面的筹备,下面开始说明psync呼吁的流程:

  • 假如从处事器之前没有复制过任何主处事器,可能之前执行过slaveof no one呼吁,那么从处事器就会向主处事器发送psync ? -1呼吁,哀求主处事器举办数据的全量同步。

  • 不然,假如前面从处事器已经同步过部门数据,那么从处事器向主处事器发送psync <runid> <offset>呼吁,个中runid是上一次主处事器的运行id,offset是当前从处事器的复制偏移量。

前面两种环境主处事器收到psync呼吁之后,会呈现以下三种也许:

  • 主处事器返回+fullresync <runid> <offset>回覆,暗示主处事器要求与从处事器举办完备的数据全量同步操纵。个中,runid是当前主处事器运行id,而offset是当前主处事器的复制偏移量。

  • 假如主处事器应答+continue,那么暗示主处事器与从处事器举办部门数据同步操纵,将从处事器缺失的数据同步过来即可。

  • 假如主处事器应答-err,那么暗示主处事器版本低于2.8,辨认不了psync呼吁,此时从处事器将向主处事器发送sync呼吁,执行完备的全量数据同步。

调研Redis高可用两种方案

哨兵机制概述

Redis行使哨兵机制来实现高可用(HA),其或许事变道理是:

  • Redis行使一组哨兵(sentinel)节点来监控主从redis处事的可用性。

  • 一旦发明Redis主节点失效,将推举出一个哨兵节点作为率领者(leader)。

  • 哨兵率领者再从剩余的从Redis节点中选出一个Redis节点作为新的主Redis节点对外处事。

以大将Redis节点分为两类:

  • 哨兵节点(sentinel):认真监控节点的运行环境。

  • 数据节点:即正常处事客户端哀求的Redis节点,有主从之分。

以上是概略的流程,这个流程必要办理以下几个题目:

  • 怎样对Redis数据节点举办监控?

  • 怎样确定一个Redis数据节点失效?

  • 怎样选择出一个哨兵率领者节点?

  • 哨兵节点选择新的主Redis节点的依据是什么?

以下来逐个答复这些题目。

三个监控使命

哨兵节点通过三个按时监控使命监控Redis数据节点的处事可用性。

info呼吁

每隔10秒,每个哨兵节点城市向主、从Redis数据节点发送info呼吁,获取新的拓扑布局信息。

Redis拓扑布局信息包罗了:

  • 本节点脚色:主或从。

  • 主从节点的地点、端口信息。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读