Redis跨机房双向同步实践
关键词:Rotter,Redis,多活,跨机房,同步 一、项目介绍 Rotter是禧云自主研发的跨机房Redis双向同步解决方案(下文简称为方案),具有零侵入、高吞吐量、低延时、高堆积能力等特点。当前版本支持Sentinel模式和单点模式Redis架构。从2019年Q2上线至今,服务于三个独立业务线,线上运行稳定,同步延时基本在50ms以内。 1.1 系统架构 整个Redis跨机房双向同步系统分为三层: 控制台Manager 节点发现和数据传输层(ZK+Redis) 数据同步层Rotter 系统架构如图1-1 其中, Manager负责任务配置、数据展示、监控报警等,各机房独立部署; ZK为跨机房集群,A机房为Leader节点,B机房为Follow节点。ZK在方案中负责Rotter节点的注册发现和任务调度。 多活Redis在方案中扮演数据队列的角色,降低了Manager和Rotter节点之间的耦合度。 Rotter是Redis同步任务的执行者,包含replicator和sync两个角色。 replicator是国人开源的基于java语言的redis主从协议实现者redis-replicator,负责解析redis节点指令。 sync负责redis指令跨机房写入,处理同步回环,同步指令监控等。 1.2 同步流程 Rotter中采用链式处理同步数据,任何一个Filter返回失败