Redis主从同步策略主要有以下几种:
1. 全量复制
全量复制是指从节点(slave)在启动时,会向主节点(master)发送一个SYNC命令,主节点接收到SYNC命令后,会执行BGSAVE操作生成RDB文件,并将当前的偏移量记录下来,然后主节点将RDB文件和偏移量发送给从节点,从节点接收到RDB文件后,会载入到内存中,并从偏移量开始进行增量复制。
优点:实现简单,适用于初次同步或者数据量较小的情况。
缺点:当数据量大时,同步过程较慢,对主节点性能影响较大。
2. 增量复制
增量复制是指在全量复制的基础上,从节点通过发送PING命令给主节点,携带自己当前的偏移量,主节点收到PING命令后,会比较从节点的偏移量和自己的偏移量,如果从节点的偏移量小于自己的偏移量,那么主节点会将从节点的偏移量到自己的偏移量之间的数据发送给从节点,从节点接收到数据后,会将这些数据追加到自己的数据集中。
优点:只同步部分数据,减少了数据传输量,提高了同步速度。
缺点:需要维护偏移量,实现相对复杂。
3. 部分重同步
部分重同步是Redis 2.8版本引入的一种优化策略,它结合了全量复制和增量复制的优点,当从节点启动时,会向主节点发送PSYNC命令,携带自己当前的偏移量和运行ID,主节点收到PSYNC命令后,会比较从节点的运行ID和自己的运行ID,如果相同,则判断从节点的偏移量是否在可接受范围内(可接受范围由replica_offset_tolerance
配置项控制),如果在可接受范围内,则进行部分重同步,主节点会将从节点的偏移量到自己的偏移量之间的数据发送给从节点;如果不在可接受范围内,则进行全量复制。
优点:结合了全量复制和增量复制的优点,提高了同步速度,减少了数据传输量。
缺点:需要维护运行ID和偏移量,实现相对复杂。
策略 | 适用场景 | 优点 | 缺点 |
全量复制 | 初次同步或数据量较小 | 实现简单 | 数据量大时同步慢,对主节点性能影响大 |
增量复制 | 数据量较大 | 同步速度快,数据传输量小 | 需要维护偏移量,实现相对复杂 |
部分重同步 | 数据量较大,且从节点与主节点差距不大 | 结合全量和增量的优点 | 需要维护运行ID和偏移量,实现相对复杂 |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/661459.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复