<antirez>
2 days ago
- 在第一次Redis开发者会议上,无盘复制被确定为高优先级功能,以避免从节点同步期间使用磁盘。
- 在传统复制中,完全重新同步需要在磁盘上创建RDB文件并发送给从节点,导致磁盘压力和延迟问题。
- 无盘复制允许主节点的子进程直接将RDB数据写入从节点套接字,无需中间磁盘写入,从而解决慢速磁盘或缓存环境的使用场景。
- 该实现使用rio抽象写入文件描述符,使用随机EOF标记指示传输完成,并使用SO_SNDTIMEO处理超时。
- 多个从节点可以同时服务,通过等待几秒钟以收集新从节点,然后循环将数据以小块写入每个文件描述符。
- 部分失败通过标记失败的文件描述符并附上错误码,以及使用管道向父进程报告从节点传输状态来管理。
- 无盘复制实现了完全无磁盘的Redis设置,从而计划改进对无持久化复制的支持。