本文介绍: 通过 Redis 深入理解可以从总体上了解到 Redis 单体架构下,server 端是如何运行起来的,以及他是如何客户端建立连接并且接收客户端时间进行处理这样一个流程以及在 Redis 集群模式下,Redis 主从节点内核数据结构怎样的,集群之间槽位的转移,集群节点之间通信集群故障探测原理主从同步数据原理以及主节点选举原理Redis 内核数据结构持久机制pub/sub事务lua、慢查询

Redis 主从挂载后的内核数据结构分析

下图颜色的为主从架构中的内核数据结构

在这里插入图片描述

Redis SYNC 主从复制原理以及缺陷

Redis 的主从复制是在不断演进过程中的,那么主从复制的目的也就是将主节点上的数据传输给从节点

那么这个演进过程中的目的就是尽量加快主节点数据向从节点的同步速度

首先,需要考虑当从节点第一次连接上主节点后,如何同步主节点的数据呢?

其次要考虑如果从节点宕机或者重启之后,重新连接上主节点,此时又该如何同步主节点的数据呢?

从节点第一次连接上主节点,我们可以通过生成 RDB 快照,将数据全量同步给从节点,并将之后的命令通过缓冲区不断同步给从节点

如果从节点断线之后重连主节点,那么我们就要合理设置缓冲区大小,来保证尽量进行增量同步,而不是全量同步

因此主从复制演进过程中的目标就是能增量同步就增量同步,尽量避免全量同步

关于主从复制原理的演进过程以及百度智能云在主从复制上的优化实践可以参考文章Redis 主从复制原理以及痛点

Redis 定时 PING 与疑似下线分析

接下来我们来了解一下在 Redis 主从架构下,如何进行故障探测

每个 redis 节点,都会定时发送 ping 消息给其他所有节点,探测其他节点是否存活,如果节点存活,则会返回 pong 消息,在规定时没有收到 pong 消息的话,发送 ping 消息的节点就会将该节点标记pfail(疑似下线)

如果在集群中有半数以上的节点认为一个节点疑似下线,那么此时就可以将该节点标记fail(正式下线)

那么这就是故障探测的原理,就是通过 ping+pong 消息进行探测,当集群半数以上节点认为某个节点疑似下线,那么就将该节点标记正式下线,并且将该节点正式下线的消息同步给其他所有节点

Redis 主节点选举算法以及故障转移

在 Redis 主从架构中,master 挂掉之后,该 master 下的 slave感知到主节点的下线状态,就会尝试向其他主节点发送投票请求表示自己想要当 master 节点,那么其他 master投票收到第一个请求slave 节点

如果一个 slave 收到了半数以上 master投票,那么该 slave 就被选举成为了新的 master,他再去通知所有的节点,并且将之前下线的 master 的槽位转移到自己这里,之后所有的 slave 都从新的主节点中同步数

那么这个主节点选举的流程原理可以参考文章Redis切片集群以及主节点选举机制

总结

通过 Redis 深入理解,可以从总体上了解到 Redis 单体架构下,server 端是如何运行起来的,以及他是如何客户端建立连接并且接收客户端时间进行处理这样一个流程

以及在 Redis 集群模式下,Redis 主从节点的内核数据结构怎样的,集群之间槽位的转移,集群节点之间通信,集群故障探测原理,主从步数据原理以及主节点选举原理

如果需要一步了解 Redis 内核,可以从以下几个方面入手:

原文地址:https://blog.csdn.net/qq_45260619/article/details/134667501

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44416.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注