大发幸运飞艇_大发幸运飞艇官网

深入理解redis复制原理

时间:2020-01-25 07:05:05 出处:大发幸运飞艇_大发幸运飞艇官网

  offset:当前从节点已克隆技术的数据偏移量

2.数据间的同步

底下说的克隆技术过程,其含有5个 步骤是“同步数据集”,你这个就是现在讲的“数据间的同步”。

发送 psync 命令(spync ? -1)

主节点根据命令返回 FULLRESYNC

从节点记录主节点 ID 和 offset

主节点 bgsave 并保存 RDB 到本地

主节点发送 RBD 文件到从节点

从节点收到 RDB 文件并加载到内存中

主节点在从节点接受数据的期间,将新数据保存到“克隆技术客户端缓冲区”,当从节点加载 RDB 完毕,再发送过去。(怎么让 从节点花费时间过长,将意味缓冲区溢出,最后全量同步失败)

从节点清空数据后加载 RDB 文件,怎么让 RDB 文件很大,你这个步操作仍然耗时,怎么让 此时客户端访问,将意味数据不一致,可不都可不上能使用配置slave-server-stale-data 关闭.

从节点成功加载完 RBD 后,怎么让 开启了 AOF,会立刻做 bgrewriteaof。

以上加粗的每段是整个全量同步耗时的地方。

为了降低主从延迟,一般把 redis 主从节点部署在相同的机房/同城机房,出理 网络延迟带来的网络分区造成的心跳中断等清况 。

redis 同步有 2 个命令:sync 和 psync,前者是 redis 2.8 就是的同步命令,后者是 redis 2.8 为了优化 sync 新设计的命令。亲戚亲戚个人会重点关注 2.8 的 psync 命令。

怎么让 回复 +FULLRESYNC {runId} {offset} ,这麼从节点将触发全量克隆技术流程。

怎么让 回复 +CONTINUE,从节点将触发每段克隆技术。

怎么让 回复 +ERR,说明主节点不支持 2.8 的 psync 命令,将使用 sync 执行全量克隆技术。

到这里,数据之间的同步就讲的差太久了,篇幅还是比较长的。主就是针对 psync 命令相关之间的介绍。

流程说明:

主节点会根据 runid 和 offset 决定返回结果:

注意:

注意:

总结

本文主要分析了 Redis 的克隆技术原理,包括克隆技术过程,数据之间的同步,全量克隆技术的流程,每段克隆技术的流程,心跳设计,异步克隆技术流程。其中,可不都可不上能看出,RDB 数据之间的同步非常耗时。就是 ,Redis 在 2.8 版本退出了类似增量克隆技术的 psync 命令,当 Redis 主从直接指在了网络中断,不需要进行全量克隆技术,就是将数据装到 缓冲区(默认 1MB)里,在通过主从之间个人维护克隆技术 offset 来判断缓存区的数据算是溢出,怎么让 这麼溢出,只须要发送缓冲区数据即可,成本很小,反之,则要进行全量克隆技术,怎么让 ,控制缓冲区大小非常的重要。

3.全量克隆技术

全量克隆技术是 Redis 最早支持的克隆技术最好的方式,也是主从第一次建立克隆技术时须要经历的的阶段。触发全量克隆技术的命令是 sync 和 psync。就是说过,这5个 命令的分水岭版本是 2.8,redis 2.8 就是使用 sync 非要执行全量不同,2.8 就是并肩支持全量同步和每段同步。

主节点接受出理 命令。

主节点出理 就是返回响应结果 。

对于修改命令,异步发送给从节点,从节点在主应用线程池池中执行克隆技术的命令。

流程如下:

psync 命令须要 3 个组件支持:

主从节点个人克隆技术偏移量

主节点克隆技术积压缓冲区

主节点运行 ID

主从节点个人克隆技术偏移量:

参与克隆技术的主从节点时会维护自身的克隆技术偏移量。

主节点在出理 完写入命令后,会把命令的字节长度做累加记录,统计信息在 info replication 中的 masterreploffset 指标中。

从节点每秒钟上报自身的的克隆技术偏移量给主节点,怎么让 主节点也会保存从节点的克隆技术偏移量。

从节点在接收到主节点发送的命令后,也会累加自身的偏移量,统计信息在 info replication 中。

通过对比主从节点的克隆技术偏移量,可不都可不上能判断主从节点数据算是一致。

主节点克隆技术积压缓冲区:

克隆技术积压缓冲区是5个 保指在主节点的5个 固定长度的先进先出的队列,默认大小 1MB。

你这个队列在 slave 连接是创建。这时主节点响应写命令时,不怎么让 把命令发送给从节点,也会写入克隆技术缓冲区。

他的作用就是用于每段克隆技术和克隆技术命令丢失的数据出理 。通过 info replication 可不都可不上能看后相关信息。

主节点运行 ID:

每个 redis 启动的就是,时会生成5个 40 位的运行 ID。

运行 ID 的主要作用是用来识别 Redis 节点。怎么让 使用 ip+port 的最好的方式,这麼怎么让 主节点重启修改了 RDB/AOF 数据,从节点再基于偏移量进行克隆技术将是不安全的。就是 ,当运行 id 变化后,从节点将进行全量克隆技术。也就是说,redis 重启后,默认从节点会进行全量克隆技术。

怎么让 在重启时不改变运行 ID 呢?

可不都可不上能通过 debug reload 命令重新加载 RDB 并保持运行 ID 不变,从而有效的出理 并并不的全量克隆技术。

缺点是:debug reload 命令会阻塞当前 Redis 节点主应用线程池池,怎么让 对于大数据量的主节点怎么让 无法容忍阻塞的节点,须要谨慎使用。一般通过故障转移机制可不都可不上能出理 你这个问題。

psync 命令的使用最好的方式:

  命令格式为 psync{runId}{offset}

从节点发送 psync 命令给主节点,runId 就是目标主节点的 ID,怎么让 这麼默认为 -1,offset 是从节点保存的克隆技术偏移量,怎么让 是第一次克隆技术则为 -1.

原文地址https://www.cnblogs.com/luao/p/106828500.html

psync 执行流程:

如过 RDB 文件大于 6GB,怎么让 是千兆网卡,Redis 的默认超时机制(500 秒),会意味全量克隆技术失败。可不都可不上能通过调大 repl-timeout 参数来出理 此问題。

Redis 我我觉得支持无盘克隆技术,即直接通过网络发送给从节点,但功能时会很完善,生产环境慎用。

4.每段克隆技术

当从节点正在克隆技术主节点时,怎么让 突然出现网络闪断和其他异常,从节点会让主节点补发丢失的命令数据,主节点只须要将克隆技术缓冲区的数据发送到从节点就要能保证数据的一致性,相比较全量克隆技术,成本小就是 。

6.异步克隆技术

主节点不但负责数据读写,还负责把写命令同步给从节点,写命令的发送过程是异步完成,也就是说主节点出理 完写命令后立即返回客户度,并不等待的图片 从节点克隆技术完成。

心跳的关键机制如下:

异步克隆技术的步骤很简单,如下:

中从时会心跳检测机制,个人模拟成对方的客户端进行通信,通过 client list 命令查看克隆技术相关客户端信息,主节点的连接清况 为 flags = M,从节点的连接清况 是 flags = S。

主节点默认每隔 10 秒对从节点发送 ping 命令,可修改配置 repl-ping-slave-period 控制发送频率。

从节点在主应用线程池池每隔一秒发送 replconf ack{offset} 命令,给主节点上报自身当前的克隆技术偏移量。

主节点收到 replconf 信息后,判断从节点超时时间,怎么让 超过 repl-timeout 500 秒,则判断节点下线。

  runId:从节点所克隆技术主节点的运行 id

当从节点突然出现网络中断,超过了 repl-timeout 时间,主节点就会中断克隆技术连接。

主节点会将请求的数据写入到“克隆技术积压缓冲区”,默认 1MB。

当从节点恢复,重新连接上主节点,从节点会将 offset 和主节点 id 发送到主节点。

主节点校验后,怎么让 偏移量的数后的数据在缓冲区中,就发送 cuntinue 响应 —— 表示可不都可不上能进行每段克隆技术。

主节点将缓冲区的数据发送到从节点,保证主从克隆技术进行正常清况 。

5.心跳

主从节点在建立克隆技术后,亲戚亲戚个人之间维护着长连接并彼此发送心跳命令。

深入理解redis克隆技术原理

1.克隆技术过程

2.数据间的同步

3.全量克隆技术

4.每段克隆技术

5.心跳

6.异步克隆技术

1.克隆技术过程

从节点执行 slaveof 命令。

从节点就是保存了 slaveof 命令中主节点的信息,并这麼立即发起克隆技术。

从节点内控 的定时任务发现有主节点的信息,结束了了使用 socket 连接主节点。

连接建立成功后,发送 ping 命令,希望得到 pong 命令响应,怎么让 会进行重连。

怎么让 主节点设置了权限,这麼就须要进行权限验证,怎么让 验证失败,克隆技术终止。

权限验证通就是,进行数据同步,这是耗时最长的操作,主节点将把所有的数据完全发送给从节点。

当主节点把当前的数据同步给从节点后,便完成了克隆技术的建立流程。接下来,主节点就会持续的把写命令发送给从节点,保证主从数据一致性。

热门

热门标签