System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据处理领域,尤其涉及一种跨数据中心的应用数据实时同步方法、装置和系统。
技术介绍
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异地时序队本文档来自技高网...
【技术保护点】
1.一种跨数据中心的应用数据实时同步方法,其特征在于,应用于发送端数据中心,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述的按照应用操作数据类型将所述同步请求写入对应的Redis中,具体包括:
3.根据权利要求1所述的方法,其特征在于,所述的按照所述应用操作数据类型对所述Redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心,具体包括:
4.根据权利要求1所述的方法,其特征在于,所述的按照所述应用操作数据类型对所述Redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心,具体包括:
5.一种跨数据中心的应用数据实时同步方法,其特征在于,应用于接收端数据中心,所述方法包括:
6.根据权利要求5所述的方法,其特征在于,所述的按照所述同步报文中的连续序号对所述同步请求的报文进行重排序后写入Redis异地时序队列,具体包括:
7.根据权利要求6所述的方法,其特征在于,所述的通过异地数据提交的Lua脚本按照
8.一种跨数据中心的应用数据实时同步装置,其特征在于,应用于发送端数据中心,所述装置包括:
9.一种跨数据中心的应用数据实时同步装置,其特征在于,应用于接收端数据中心,所述装置包括:
10.一种跨数据中心异构数据实时同步系统,其特征在于,所述系统包括发送端数据中心和接收端数据中心;
...【技术特征摘要】
1.一种跨数据中心的应用数据实时同步方法,其特征在于,应用于发送端数据中心,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述的按照应用操作数据类型将所述同步请求写入对应的redis中,具体包括:
3.根据权利要求1所述的方法,其特征在于,所述的按照所述应用操作数据类型对所述redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心,具体包括:
4.根据权利要求1所述的方法,其特征在于,所述的按照所述应用操作数据类型对所述redis操作指令进行相应的过滤处理,获取过滤处理结果,并将所述过滤处理结果发送至待同步的接收端数据中心,具体包括:
5.一种跨数据中心的应用数据实时同步方法,其特征在于,...
【专利技术属性】
技术研发人员:李峰,肖姝,王虓,
申请(专利权)人:杭州宇信数字科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。