预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN112422628A(43)申请公布日2021.02.26(21)申请号202011120648.4(22)申请日2020.10.19(71)申请人天翼电子商务有限公司地址102200北京市昌平区未来科技城南区中国电信集团公司院内(72)发明人钱宇炜马颂华陈裕頲黄峤睿任龄明毛震鹏吴振严永峰(51)Int.Cl.H04L29/08(2006.01)权利要求书2页说明书9页附图5页(54)发明名称Redis-canal跨机房缓存同步系统(57)摘要本发明公开了Redis‑canal跨机房缓存同步系统,基于Redis的复制协议实现,使用PSYNC命令实时获取Redis主节点所产生的写命令,并通过同步系统将命令在目标端机房进行重放,整个系统分为三层:控制台Apollo、节点发现和数据保留层ZK、数据同步层Redis‑canal。本发明基于Redis的复制协议实现,使用PSYNC命令实时获取Redis主节点所产生的写命令,并通过同步系统将命令在目标端机房进行重放;基于Redis复制协议方案,进行改进和优化,解决以下3个问题:1.支持双向同步;2.支持集群模式同步;3.支持同步系统的容灾能力。CN112422628ACN112422628A权利要求书1/2页1.Redis-canal跨机房缓存同步系统,其特征在于,基于Redis的复制协议实现,使用PSYNC命令实时获取Redis主节点所产生的写命令,并通过同步系统将命令在目标端机房进行重放,整个系统分为三层:控制台Apollo、节点发现和数据保留层ZK、数据同步层Redis-canal,其中,控制台Apollo负责任务配置、启动及关闭任务,跨机房集群部署;ZK为各机房独立部署,负责Redis-Canal节点的注册发现、任务调度及同步任务数据收集;Redis-Canal是Redis同步任务的最终执行者,包括canal和sync两个模块;Canal负责监听及解析redis节点命令;Sync负责redis命令跨机房写入,并处理循环复制问题;所述Redis-canal是基于Redis的复制协议PSYNC命令进行开发的,通过将自己伪装成Redis的一个SLAVE节点,从而监听并获得本机房中MASTER节点的Redis的所有操作命令,最后把这些监听到的命令在异地机房的Redis中进行重放,从而完成同步任务;并且通过优化重放算法,避免机房间出现循环复制的情况;PSYNC命令具有完整重同步和部分重同步两种模式:完整重同步用于处理初次复制情况:完整重同步的执行步骤和SYNC命令的执行步骤基本一样,它们都是通过让主服务器创建并发送RDB文件,以及向从服务器发送保存在缓冲区里面的写命令来进行同步;部分重同步则用于处理断线后重复制情况:当从服务器在断线后重新连接主服务器时,如果条件允许,主服务器可以将主从服务器连接断开期间执行的写命令发送给从服务器,从服务器只要接收并执行这些写命令,就可以将数据库更新至主服务器当前所处的状态;所述部分重同步功能由以下三个部分构成:主服务器的复制偏移量和从服务器的复制偏移量;主服务器的复制积压缓冲区;服务器的运行ID;部分重同步功能中执行复制的双方为主服务器和从服务器会分别维护一个复制偏移量:主服务器每次向从服务器传播N个字节的数据时,就将自己的复制偏移量的值加上N;从服务器每次收到主服务器传播来的N个字节的数据时,就将自己的复制偏移量的值加上N;通过对比主从服务器的复制偏移量,程序可以很容易地知道主从服务器是否处于一致状态;如果主从服务器处于一致状态,那么主从服务器两者的偏移量总是相同的;相反,如果主从服务器两者的偏移量并不相同,那么说明主从服务器并未处于一致状态。2.根据权利要求1所述的Redis-canal跨机房缓存同步系统,其特征在于,所述复制积压缓冲区是由主服务器维护的一个固定长度先进先出队列,默认大小为1MB;和普通先进先出队列随着元素的增加和减少而动态调整长度不同,固定长度先进先出队列的长度是固定的,当入队元素的数量大于队列长度时,最先入队的元素会被弹出,而新元素会被放入队列;当主服务器进行命令传播时,它不仅会将写命令发送给所有从服务器,还会将写命令入队到复制积压缓冲区里面;因此,主服务器的复制积压缓冲区里面会保存着一部分最近传播的写命令,并且复制积压缓冲区会为队列中的每个字节记录相应的复制偏移量;当从服务器重新连上主服务器时,从服务器会通过PSYNC命令将自己的复制偏移量offset发送给主服务器,主服务器会根据这个复制偏移量来决定对从服务器执行何种同步操作,如下所2CN112422628A权利要求书2/2页示:如果offset偏移量之后的数据仍然存在于复制积压缓冲区里面,那么主服务器将