基于LWW原则的Redis双向同步系统及实现方法技术方案

技术编号:38347732 阅读:10 留言:0更新日期:2023-08-02 09:27
本发明专利技术公开了基于LWW原则的Redis双向同步系统及实现方法,属于互联网系统中数据实时双向同步技术领域,本发明专利技术要解决的技术问题为双端业务同时操作同一key数据造成数据不一致,采用的技术方案为:该系统包括Redis

【技术实现步骤摘要】
基于LWW原则的Redis双向同步系统及实现方法


[0001]本专利技术涉及互联网系统中数据实时双向同步
,具体地说是一种基于LWW原则的Redis双向同步系统及实现方法。

技术介绍

[0002]Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key

Value数据库,并提供多种语言的API。
[0003]LWW(Last Write Wins,最后写入为准),假设两个Redis分别收到了对于同一个Key的设值需求,那么就可以简单地根据这个原则来判定,以最后一次写入为准。
[0004]专利号为CN112422628A专利文献公开了一种Redis

canal跨机房缓存同步系统,基于Redis的复制协议实现,使用PSYNC命令实时获取Redis主节点所产生的写命令,并通过同步系统将命令在目标端机房进行重放,整个系统分为三层:控制台Apollo、节点发现和数据保留层ZK、数据同步层Redis

canal。该技术方案是基于Redis的复制协议实现,使用PSYNC命令实时获取Redis主节点所产生的写命令,并通过同步系统将命令在目标端机房进行重放;但是该技术方案存在增加辅助key破坏数据循环的方式无法处理两端同时写入同一个key的场景,具体说明如下:
[0005]同一时间:一端set a 1;另一端set a 0;经数据冲销后,双端数据有[0,0],[0,1],[1,0],[1,1]几种情况。
[0006]故如何避免双端业务同时操作同一key数据造成数据不一致是目前亟待解决的技术问题。

技术实现思路

[0007]本专利技术的技术任务是提供一种基于LWW原则的Redis双向同步系统及实现方法,来解决双端业务同时操作同一key数据造成数据不一致的问题。
[0008]本专利技术的技术任务是按以下方式实现的,一种基于LWW原则的Redis双向同步系统,该系统包括Redis

A、Redis

B、Redis中间件、正向采集模块、正向入库模块、逆向采集模块及逆向入库模块,Redis中间件作为连接Redis

A及Redis

B双端进程的连接桥梁,接收正向采集模块和逆向采集模块写入的数据,并为正向入库模块和逆向入库模块提供入库数据,同时还用于实现LWW原则,在产生数据冲突时保证数据最终的一致性;
[0009]其中,正向数据传输通道为:Redis

A

正向采集模块

Redis中间件

正向入库模块

Redis

B;
[0010]逆向数据传输通道为:Redis

B

逆向采集模块

Redis中间件

逆向入库模块

Redis

A。
[0011]作为优选,所述正向采集模块用于基于PSYNC主从复制机制模拟成Redis

A的伪从机,实现Redis数据库全量数据及增量数据的采集及处理任务,最终写入到Redis中间件供
正向入库模块消费。
[0012]作为优选,所述正向入库模块用于基于PSYNC主从复制机制模拟成Redis中间件的伪从机,消费Redis中间件中的数据,并将数据写入到Redis

B。
[0013]作为优选,所述逆向采集模块用于基于PSYNC主从复制机制模拟成Redis

B的伪从机,实现Redis数据库增量数据的采集处理,最终写入到Redis中间件供逆向入库模块消费;逆向采集模块仅采集增量数据。
[0014]更优地,所述逆向入库模块用于基于PSYNC主从复制机制模拟成Redis中间件的伪从机,消费Redis中间件中的数据,并将数据写入到Redis

A。
[0015]一种基于LWW原则的Redis双向同步实现方法,该实现方法是基于Redis RDB持久化机制与PSYNC主从复制机制实现Redis数据库间的双向数据迁移同步任务,并引入Redis消息中间件实现中间数据存储,同时引入LWW原则解决原有方案双端业务同时操作同一key数据造成的数据不一致问题,保证双端数据库数据最终一致性;
[0016]其中,Redis中间件作为连接Redis

A及Redis

B双端进程的连接桥梁,接收正向采集模块和逆向采集模块写入的数据,并为正向入库模块和逆向入库模块提供入库数据,同时还用于实现LWW原则,在产生数据冲突时保证数据最终的一致性。
[0017]作为优选,该实现方法具体如下:
[0018]正向全量阶段:基于PSYNC主从复制及RDB持久化机制;
[0019]正向增量阶段:基于PSYNC主从复制机制;
[0020]逆向增量阶段:基于PSYNC主从复制机制。
[0021]作为优选,正向全量阶段具体如下:
[0022]正向采集模块与Redis

A建立连接,并执行PSYNC?

1命令,模拟成Redis

A的伪从机;
[0023]正向采集模块处理Redis

A返回的RDB数据,并将处理后数据写入Redis中间件;
[0024]Redis中间件存储正向采集模块写入的数据包;
[0025]正向入库模块与Redis

B建立连接,并消费Redis中间件的数据包;
[0026]正向入库模块将数据写入Redis

B,完成全量数据入库。
[0027]作为优选,正向增量阶段具体如下:
[0028]正向采集模块处理Redis

A返回的增量数据,并将处理后数据写入Redis中间件;
[0029]Redis中间件存储正向采集模块写入的数据包;
[0030]正向入库模块与Redis

B建立连接,并消费Redis中间件数据;
[0031]正向入库模块将数据写入Redis

B,完成增量数据入库。
[0032]更优地,逆向增量阶段具体如下:
[0033]逆向采集模块与Redis

B建立连接,并执行PSYNC?

1命令,模拟成Redis

B的伪从机;
[0034]逆向采集模块跳过逆向全量采集阶段,处理Redis

B返回的增量数据;
[0035]逆向采集模块将处理后数据写入Redis中间件;
[0036]Red本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于LWW原则的Redis双向同步系统,其特征在于,该系统包括Redis

A、Redis

B、Redis中间件、正向采集模块、正向入库模块、逆向采集模块及逆向入库模块,Redis中间件作为连接Redis

A及Redis

B双端进程的连接桥梁,接收正向采集模块和逆向采集模块写入的数据,并为正向入库模块和逆向入库模块提供入库数据,同时还用于实现LWW原则,在产生数据冲突时保证数据最终的一致性;其中,正向数据传输通道为:Redis

A

正向采集模块

Redis中间件

正向入库模块

Redis

B;逆向数据传输通道为:Redis

B

逆向采集模块

Redis中间件

逆向入库模块

Redis

A。2.根据权利要求1所述的基于LWW原则的Redis双向同步系统,其特征在于,所述正向采集模块用于基于PSYNC主从复制机制模拟成Redis

A的伪从机,实现Redis数据库全量数据及增量数据的采集及处理任务,最终写入到Redis中间件供正向入库模块消费。3.根据权利要求1所述的基于LWW原则的Redis双向同步系统,其特征在于,所述正向入库模块用于基于PSYNC主从复制机制模拟成Redis中间件的伪从机,消费Redis中间件中的数据,并将数据写入到Redis

B。4.根据权利要求1所述的基于LWW原则的Redis双向同步系统,其特征在于,所述逆向采集模块用于基于PSYNC主从复制机制模拟成Redis

B的伪从机,实现Redis数据库增量数据的采集处理,最终写入到Redis中间件供逆向入库模块消费;逆向采集模块仅采集增量数据。5.根据权利要求1

4中任一项所述的基于LWW原则的Redis双向同步系统,其特征在于,所述逆向入库模块用于基于PSYNC主从复制机制模拟成Redis中间件的伪从机,消费Redis中间件中的数据,并将数据写入到Redis

A。6.一种基于LWW原则的Redis双向同步实现方法,其特征在于,该实现方法是基于Redis RDB持久化机制与PSYNC主从复制机制实现Redis数据库间的双向数据迁移同步任务,并引入Redis消息中间件实现中间数据存储,同时引...

【专利技术属性】
技术研发人员:洪传玉邓光超方建勋
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1