技术新讯 > 电子通信装置的制造及其应用技术 > 一种跨数据中心的应用数据实时同步方法、装置和系统与流程  >  正文

一种跨数据中心的应用数据实时同步方法、装置和系统与流程

  • 国知局
  • 2024-08-02 14:03:30

本发明涉及数据处理领域,尤其涉及一种跨数据中心的应用数据实时同步方法、装置和系统。

背景技术:

1、由于现有技术在多个数据中心进行同步的过程中存在主-从同步关系,所以对于运维来说,操作切换存在繁琐的确认步骤,切换时间长,一旦发生单一机房不可用或网络延迟过高时,其整个系统的不可用时间变长,无法实现远距离应用数据实现秒级同步。另外由于不同数据中心没有使用同一套代码,不能支持跨越防火墙和跨越上千公里距离的数据同步,所以会因为网络延迟影响正常应用的运行。

技术实现思路

1、有鉴于此,本发明实施例的目的在于提供一种跨数据中心的应用数据实时同步方法、装置和系统,可用于远距离应用数据实现秒级同步。

2、为达到上述目的,第一方面,本发明实施例提供了一种跨数据中心的应用数据实时同步方法,应用于发送端数据中心,所述方法包括:

3、当有待同步的数据写入时,接收所述待同步数据的同步请求;

4、按照应用操作数据类型将所述同步请求写入对应的redis中,其中,所述应用操作数据类型包括redis数据和数据库数据;

5、根据所述同步请求通过伪从节点模拟redis的从节点从对应的redis中获取redis操作指令;按照所述应用操作数据类型对所述redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心。

6、在一些可能的实施方式中,所述的按照应用操作数据类型将所述同步请求写入对应的redis中,具体包括:

7、当所述应用操作数据类型为redis数据时,直接将所述同步请求写入redis缓存中;

8、当所述应用操作数据类型为数据库数据时,通过自定义的jdbc驱动从数据库中读取数据,并以事务提交为触发,将所述事务作为单条消息写入redis本地时序队列。

9、在一些可能的实施方式中,所述的按照所述应用操作数据类型对所述redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心,具体包括:

10、通过所述伪从节点对从所述redis缓存中获取的redis操作指令进行过滤,保留不会引起数据循环复制的redis操作指令,直接将保留的redis操作指令发送至待同步的数据中心。

11、在一些可能的实施方式中,所述的按照所述应用操作数据类型对所述redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心,具体包括:

12、通过伪从节点对从所述redis本地时序队列获取redis操作指令进行过滤,保留所述redis操作指令中包含特定前缀的xadd指令,并生成所述redis本地时序队列的连续序号;

13、将过滤后的redis操作指令和所述连续序号打包成同步报文;

14、通过tcp连接将所述同步报文发送到待同步的数据中心。

15、第二方面,本发明实施例提供了一种跨数据中心的应用数据实时同步方法,应用于接收端数据中心,所述方法包括:

16、接收发送端数据中心发送的同步请求;

17、按照接收的同步请求类型将所述同步请求写入对应的redis,所述同步请求类型包括redis操作指令和同步报文;

18、当所述同步请求类型为redis操作指令时,将所述同步请求直接写入redis缓存;

19、当所述同步请求类型为同步报文时,按照所述同步报文中的连续序号对所述同步请求的报文进行重排序后写入redis异地时序队列。

20、在一些可能的实施方式中,所述的按照所述同步报文中的连续序号对所述同步请求进行重排序后写入redis异地时序队列,具体包括:

21、通过异地数据落地的lua脚本将所述同步请求写入redis缓存时序队列;

22、根据所述连续序号建立所述redis缓存时序队列的连续序号索引;

23、通过异地数据提交的lua脚本按照所述连续序号索引将所述redis缓存时序队列中的同步请求写入redis异地时序队列。

24、在一些可能的实施方式中,所述的通过异地数据提交的lua脚本按照所述连续序号索引将所述redis缓存时序队列中的同步请求写入redis异地时序队列,具体包括:

25、获取连续序号索引的消息序号和本地应写入的序号,将所述连续序号索引的消息序号与所述本地应写入的序号进行比较;

26、判断所述消息序号的最小值是否大于所述本地应写入的序号,如果所述消息序号的最小值大于本地应写入的序号,则继续判断所述连续序号索引对应的时间戳加上预设时间阈值是否大于当前时间;

27、如果所述连续序号索引对应的时间戳加上预设时间阈值大于当前时间,表明消息已过期,则将同步请求的消息写入失败时序队列,并删除连续序号索引;

28、如果所述连续序号索引对应的时间戳加上预设时间阈值不大于当前时间,表明消息在有效期内,则结束本次提交,等待所述发送端数据中心补发;

29、如果所述消息序号的最小值不大于本地应写入的序号,则判断所述消息序号的最小值是否小于本地应写入的序号;

30、如果所述消息序号的最小值小于本地应写入的序号,表明消息已过期,则将所述同步请求写入失败时序队列,并删除所述连续序号索引;

31、如果所述消息序号的最小值不小于本地应写入的序号,表明是当前消息,则将同步请求写入所述异地时序队列,并删除所述连续序号索引,同时更新所述本地应写入的序号的值。

32、第三方面,本发明实施例提供了一种跨数据中心的应用数据实时同步装置,应用于发送端数据中心,所述装置包括:

33、接收单元,用于当有待同步的数据写入时,接收所述待同步数据的同步请求;

34、写入单元,用于按照应用操作数据类型将所述同步请求写入对应的redis中,其中,所述应用操作数据类型包括redis数据和数据库数据;

35、同步代理组件,用于根据所述同步请求通过伪从节点模拟redis的从节点从对应的redis中获取redis操作指令,按照所述应用操作数据类型对所述redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心。

36、第四方面,本发明实施例提供了一种跨数据中心的应用数据实时同步装置,应用于接收端数据中心,所述装置包括:

37、同步代理组件,用于接收发送端数据中心发送的同步请求;按照接收的同步请求类型将所述同步请求写入对应的redis,所述同步请求类型包括redis操作指令和同步报文;

38、缓存单元,用于当所述同步请求类型为redis操作指令时,将所述同步请求直接写入redis缓存;

39、时序队列存储单元,用于当所述同步请求类型为同步报文时,按照所述同步报文中的连续序号对所述同步请求的报文进行重排序后写入redis异地时序队列。

40、第五方面,本发明实施例提供了一种跨数据中心异构数据实时同步系统,所述系统包括发送端数据中心和接收端数据中心;

41、所述发送端数据中心,用于当有待同步的数据写入时,接收所述待同步数据的同步请求;按照应用操作数据类型将所述同步请求写入对应的redis中,其中,所述应用操作数据类型包括redis数据和数据库数据;根据所述同步请求通过伪从节点模拟redis的从节点从对应的redis中获取redis操作指令,按照所述应用操作数据类型对所述redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心;

42、所述接收端数据中心,用于接收发送端数据中心发送的同步请求;按照接收的同步请求类型将所述同步请求写入对应的redis,所述同步请求类型包括redis操作指令和同步报文;当所述同步请求类型为redis操作指令时,将所述同步请求直接写入redis缓存;当所述同步请求类型为同步报文时,按照所述同步报文中的连续序号对所述同步请求的报文进行重排序后写入redis异地时序队列。

43、第六方面,本发明实施例提供了一种电子设备,包括:

44、一个或多个处理器;

45、存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面或第二方面任意一种所述的一种跨数据中心的应用数据实时同步方法。

46、第七方面,本发明实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面或第二方面任意一种所述的一种跨数据中心的应用数据实时同步方法。

47、上述技术方案具有如下有益效果:

48、本发明提供了一种跨数据中心的应用数据实时同步方法、装置和系统,该系统包括:发送端数据中心接收数据同步请求后,按照应用操作数据类型将同步请求写入对应的redis中;同步代理组件根据同步请求通过伪从节点从对应的redis中获取redis操作指令,并按照应用操作数据类型对redis操作指令进行相应的处理,获取处理结果,并将处理结果发送至待同步的接收端数据中心;接收端数据中心的同步代理组件接收发送端数据中心发送的同步请求,并按照应用数据操作类型将同步请求写入redis;本发明实施例可用于远距离、实现秒级应用数据同步。本实施例中,数据中心的同步代理组件通过伪从节点从redis进行数据同步,伪从节点可以更灵活地在同构应用系统之间实现数据同步,由于不存在主-从同步关系,对于运维来说,操作切换没有繁琐的确认步骤,可以达到秒级切换,同时不同数据中心可以使用同一套代码,本实施例可以支持跨越防火墙和跨越上千公里距离的数据同步,而不会因为网络延迟影响正常应用的运行。

本文地址:https://www.jishuxx.com/zhuanli/20240801/241571.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。