标签:info 一个 新版 通信 一段 网络 rop 从服务器 需要
复制是Redis集群的基础,Redis主从节点在复制的时候即使从节点因为网络分区暂时无法继续复制,主节点也会继续工作,因此根据CAP理论Redis的集群符合A可用性,不符合C一致性。当网络分区恢复后从节点会继续复制,从而实现最终一致性。
以2.8版本为分水岭,Redis复制有两种实现。
分为同步(sync)和命令传播(command propagate)两个过程,两个过程以master收到slave的slaveof指令的时间点为分界线。
master继续执行会造成主从不一致,主服务器需要把命令传播给slaver来维护一致性。
旧版的复制分为两种情况,这两种情况的划分不是根据复制的不同阶段,而是根据主从节点的通信状况即是否发生网络分区来的。
当t10091时刻从服务器再次连上主服务器时,会发送一条sync指令,该指令会把t10091时刻之前主服务器所有数据生成RDB文件并传送过来,虽然这个过程并不是必须的,因为从服务器上有t10087前的所有数据。这种一旦断线重连就再次发送sync的策略带来的效率十分低下,因为需要复制的数据仅仅是t10087到t10091之间的数据。
而且sync是一个非常耗费资源的操作,资源耗费体现在三个方面
使用psync代替原有sync,p指的是partial部分。服务器断线后,只复制断线这一阶段没有同步的数据,避免了一旦断线就要全部同步的弊端。
标签:info 一个 新版 通信 一段 网络 rop 从服务器 需要
原文地址:https://www.cnblogs.com/AshOfTime/p/10789960.html