CN110198331A - 一种同步数据的方法及系统 - Google Patents
一种同步数据的方法及系统 Download PDFInfo
- Publication number
- CN110198331A CN110198331A CN201810264907.7A CN201810264907A CN110198331A CN 110198331 A CN110198331 A CN 110198331A CN 201810264907 A CN201810264907 A CN 201810264907A CN 110198331 A CN110198331 A CN 110198331A
- Authority
- CN
- China
- Prior art keywords
- memory block
- address
- memory
- data
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种同步数据的方法及系统,属于存储技术领域。该方法包括:接收主用服务器发送的数据同步请求;解析数据同步请求,获取第一内存块标识信息和待同步的数据,该第一内存块为主用服务器的内存池中发生数据变更的内存块;获取本地内存池中与第一内存块标识信息相对应的第二内存块首地址;同步所述待同步的数据到本地内存池与第二内存块首地址相对应的第二内存块中。本发明通过对应主用服务器和备用服务器内存池中内存块的地址一致,实现了将主用服务器发生数据变更的内存块中的数据直接复制到备用服务器中的对应内存块中,同步数据的过程对主用服务器上层逻辑透明,不用破坏原有功能逻辑的代码,通用性强。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种同步数据的方法及系统。
背景技术
计算机容灾系统是一个能应付各种灾难的环境。当计算机系统在遭受如火灾、水灾、地震、战争等不可抗拒的自然灾难以及计算机犯罪、计算机病毒、掉电、网络/通信失败、硬件/软件错误和人为操作错误等人为灾难时,容灾系统将保证用户数据的安全性,也称数据容灾。
目前针对数据容灾的方案主要为主从热备机制,即正常情况下由主用服务器提供服务,从用服务器(也叫备用服务器)不提供服务,当主用服务器发生故障时,切换至从用服务器来提供服务。可见,主从热备机制实现的关键在于主用服务器与从用服务器的数据同步。
现有技术中常用的主用服务器与从用服务器的数据同步过程为:主用服务器上层逻辑处理本地数据时,本地数据发生变更,封装协议进行发送变更内容,从用服务器接收协议并进行解析处理,根据解析结果同步数据。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
相关技术中,同步数据的方案与主用服务器上层逻辑耦合,无法通用化。主用服务器需要针对每个协议进行封装对应的变更数据,从用服务器在处理同步协议时,也需要关注对应的功能块逻辑实现,处理过程复杂,而且需人为按步骤拆分子协程,将每个子协程拆分为两种模式,由于各个子协程间相对独立,因此使用上较难,对原有逻辑功能的代码破坏性大。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种同步数据的方法、备用服务器、系统及存储介质。所述技术方案如下:
一方面,本发明实施例提供了一种同步数据的方法,所述方法包括:
接收主用服务器发送的数据同步请求;
解析所述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;
获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址;
同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中。
另一方面,本发明实施例提供了一种备用服务器,包括:
接收模块,用于接收主用服务器发送的数据同步请求;
第一解析模块,用于解析所述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;
第一获取模块,用于获取本地内存池中与所述第一内存块标识信息相对应的第二内存块地址;
数据同步模块,用于同步所述待同步的数据到本地内存池中与所述第二内存块地址相对应的第二内存块中。
再一方面,本发明实施例还提供了一种服务器,包括:处理器和存储装置;
所述存储装置,用于存储计算机程序指令;
所述处理器,调用所述计算机程序指令,用于接收主用服务器发送的数据同步请求;
解析所述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;
获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址;
同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中。
再一方面,本发明实施例还提供了一种同步数据的系统,包括主用服务器和备用服务器,所述主用服务器和备用服务器之间以可通信方式连接;
所述主用服务器,用于向备用服务器发送数据同步请求,所述数据同步请求包含第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;
所述备用服务器,用于接收主用服务器发送的数据同步请求;解析所述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址;同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中。
本发明实施例还提供了一种计算机存储介质,该计算机存储介质存储有计算机程序指令,该计算机程序指令被执行时,实现上述同步数据的方法。
本发明实施例提供的技术方案带来的有益效果如下:
通过接收主用服务器发送的数据同步请求,解析该数据同步请求获取第一内存块标识信息和待同步的数据,然后获取本地内存池中与上述第一内存块标识信息相对应的第二内存块首地址,再将待同步的数据同步到与第二内存块首地址对应的第二内存块中。可见,通过对应主用服务器和备用服务器内存池中内存块的地址一致,实现了将主用服务器发生数据变更的内存块中的数据直接复制到备用服务器中的对应内存块中,同步数据的过程对主用服务器上层逻辑透明,不用破坏原有功能逻辑的代码,通用性强。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种同步数据的方法的流程图;
图2是本发明实施例提供的一种获取备用服务器内存池中与第一内存块标识信息相对应的第二内存块首地址的方法流程图;
图3是本发明实施例提供的一种根据第一内存块的地址偏移值获取备用服务器内存池中的第二内存块的方法流程图;
图4是本发明实施例提供的向备用服务器内存池的第二内存块中同步待同步的数据的方法流程图;
图5是本发明实施例提供的另一种同步数据的方法的流程图;
图6是本发明实施例提供的对第二内存块中的指针进行重置的方法流程图;
图7是本发明实施例提供的一种备用服务器的结构示意图;
图8是本发明实施例提供的第一获取模块的结构示意图;
图9是本发明实施例提供的数据同步模块的结构示意图;
图10是本发明实施例提供的另一种备用服务器的结构示意图;
图11是本发明实施例提供的一种服务器的结构示意图;
图12是本发明实施例提供的一种同步数据的系统的结构示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参阅图1,其所示为本发明实施例提供一种同步数据的方法,该同步数据的方法可用于主从热备机制中,主用服务器与备用服务器间的数据同步。需要说明的是,本发明实施例中的同步数据的方法基于主用服务器和备用服务器的内存池实现。
在本发明实施例中,主用服务器和备用服务器可以在各自的内存中建立内存池,内存池可以是位于服务器内存中的预先划分的内存空间。
在本发明实施例中,内存池结构体中包括内存池首地址和至少一个内存块,当整个内存池中的内存块为多个时,内存块之间形成内存块链表。每个内存块均包括数据头和数据存储区,其中数据存储区用于存储数据信息,数据头用于存储内存块的标识信息。内存块的标识信息包括内存块首地址、内存块大小、内存块类型以及内存块的地址偏移值等,其中内存块首地址可以存储内存块的物理地址信息,比如当前内存块的首地址为“0X8049320”,内存块的大小可以为预设值,比如10k、1M等,内存块的地址偏移值为当前内存块首地址相对于内存池首地址的偏移值。
需要说明的是,在本发明实施例中,内存池首地址是指内存池的起始地址,内存块首地址是指内存池中内存块的起始地址。
如图1所示,该同步数据的方法可以包括:
101、接收主用服务器发送的数据同步请求;
举例来说,备用服务器可以通过同步传输方式或异步传输方式或其他传输方式来接收主用服务器发送的数据同步请求。
102、解析上述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块。
具体来说,当主用服务器的内存池中某一内存块存储的数据发生变更,则主用服务器获取内存池中发生数据变更的内存块的内存块标识信息以及该内存块中所存储的变更后的全部数据,并将该内存块中所存储的变更后的全部数据作为待同步的数据。
主用服务器将发生数据变更的内存块的内存块标识信息即为第一内存块标识信息和待同步的数据随同数据同步请求一起发送给备用服务器。具体的,主用服务器可以根据备用服务器的IP地址发送数据同步请求。
备用服务器接收主用服务器发送的数据同步请求后,解析接收的数据同步请求,获取随该数据同步请求一起发送过来的第一内存块标识信息和待同步的数据。
103、获取本地内存池中与上述第一内存块标识信息相对应的第二内存块首地址;
在本发明实施例中,主用服务器和备用服务器的初始化流程一样,因此,备用服务器内存池中的内存块与主用服务器内存池中内存块相对应。
备用服务器在获取到第一内存块标识信息和待同步的数据之后,根据第一内存块标识信息去查找本地内存池中与该第一内存块标识信息相对应的内存块首地址,并在查找到相对应的内存块首地址之后获取该内存块首地址作为第二内存块首地址。
举例来说,上述获取本地内存池中与第一内存块标识信息相对应的第二内存块首地址可以采用图2所示的方法。图2为本发明实施例中提供的一种获取备用服务器内存池中与第一内存块标识信息相对应的第二内存块首地址的方法流程图。如图2所示,该方法包括:
1031、解析第一内存块标识信息,获取该第一内存块的地址偏移值。
需要说明的是,上述第一内存块的地址偏移值为第一内存块首地址相对于主用服务器的内存池首地址的偏移值。上述第一内存标识信息中记录有该第一内存块的地址偏移值,备用服务器通过解析第一内存块标识信息,可以获取到第一内存块标识信息中记录的该第一内存块的地址偏移值。
1032、获取本地内存池中与上述第一内存块的地址偏移值相对应的第二内存块首地址。
本发明实施例中,备用服务器通过解析第一内存块标识信息,获取到第一内存块的地址偏移值,然后根据该第一内存块的地址偏移值获取本地内存池中与该第一内存块的地址偏移值相对应的第二内存块首地址。
本发明实施例中,主用服务器和备用服务器的初始化流程一样,因此,每个内存块首地址相对于内存池首地址的偏移值是固定的,即主用服务器内存池中的内存块和备用服务器内存池中的内存块的相对地址相同,同一个地址偏移值可以在主用服务器内存池和备用服务器内存池中获取到相对应位置的内存块。
举例来说,主用服务器内存池首地址为X,该内存池中设有三个内存块,各内存块首地址分别为A,B,C,且A,B,C内存块首地址相对于X的地址偏移值分别为1,2,3。备用服务器内存池首地址为Y,该内存池中也设有三个内存块,各内存块首地址分别为a,b,c,且这三个内存块与主用服务器内存池中的三个内存块一一对应,即备用服务器内存池中的a内存块用于备份主用服务器内存池中的A内存块中的数据,备用服务器内存池中的b内存块用于备份主用服务器内存池中的B内存块中的数据,备用服务器内存池中的c内存块用于备份主用服务器内存池中的C内存块中的数据,其中,备用服务器内存池中的三个内存块首地址相对于Y的地址偏移值也分别为1,2,3。当地址偏移值为1时,在主用服务器内存池中可以获取到A内存块,在备用服务器内存池中可以获取到a内存块;当地址偏移值为2时,在主用服务器内存池中可以获取到B内存块,在备用服务器内存池中可以获取到c内存块;当地址偏移值为3时,在主用服务器内存池中可以获取到C内存块,在备用服务器内存池中可以获取到c内存块,即同一个地址偏移值,可以在主用服务器内存池和备用服务器内存池中获取到相对应位置的内存块。
本发明实施例中,上述根据第一内存块的地址偏移值获取本地内存池中与该第一内存块的地址偏移值相对应的第二内存块首地址可以采用图3所示的方法。图3所示为本发明实施例提供的一种根据第一内存块的地址偏移值获取备用服务器内存池中的第二内存块的方法流程图。如图3所示,该方法包括:
1032a、获取本地内存池首地址;
备用服务器初始化完成之后,在备用服务器内存池的结构体中存储有该内存池的首地址,在本发明实施例中,获取备用服务器内存池首地址。
1032b、根据本地内存池首地址和第一内存块的地址偏移值计算本地内存池中与第一内存块的地址偏移值相对应的第二内存块首地址;
在本发明实施例中,备用服务器在获取到本地内存池首地址和第一内存块的地址偏移值之后,在本地内存池首地址的基础上加上第一内存块的地址偏移值即得到相对应的第二内存块首地址。
举例来说,本地内存池首地址为“0x0001E240”,第一内存块的地址偏移值为128,则本地内存池中与第一内存块的地址偏移值相对应的第二内存块首地址为0x001E2C0(0x0001E240+128)。
1032c、获取上述第二内存块首地址;
具体的,备用服务器在计算出本地内存池中与第一内存块的地址偏移值相对应的第二内存块首地址之后,获取该第二内存块首地址,并可以根据该第二内存块首地址定位到第二内存块在本地内存池中的位置。
104、同步上述待同步的数据到本地内存池与第二内存块首地址相对应的第二内存块中。
在本发明实施例中,备用服务器在获取到本地内存池中与第一内存块标识信息相对应的第二内存块首地址后,根据该第二内存块首地址将待同步的数据同步到本地内存池的第二内存块中。
需要说明的是,上述待同步的数据为第一内存块的数据存储区存储的变更后的全部数据。
在本发明实施例中,向本地内存池的第二内存块中同步待同步的数据可以采用图4所示的方法。图4所示为本发明实施例提供的向备用服务器内存池的第二内存块中同步待同步的数据的方法流程图。如图4所示,该方法包括:
1041、在本地内存池中,根据所述第二内存块首地址定位到第二内存块;
备用服务器在获取到第二内存块首地址后,在本地内存池中,根据获取的第二内存块首地址定位到与之对应的第二内存块。
1042、清除所述第二内存块中存储的数据;
具体的,备用服务器在定位到第二内存块后,对存储在第二内存块的数据存储区中的数据信息执行删除动作,以将第二内存块的数据存储区中存储的数据信息全部清除。
1043、将所述待同步的数据写入到所述第二内存块中;
具体的,备用服务器在确认第二内存块的数据存储区中存储的数据信息已全部清除之后,将待同步的数据写入第二内存块的数据存储区中。
上述对本发明实施例提供的一种同步数据的方法进行了介绍,接收主用服务器发送的数据同步请求,解析该数据同步请求获取第一内存块标识信息和待同步的数据,然后获取本地内存池中与上述第一内存块标识信息相对应的第二内存块首地址,再将待同步的数据同步到与第二内存块首地址对应的第二内存块中,通过对应主用服务器和备用服务器内存池中内存块的地址一致,实现了将主用服务器发生数据变更的内存块中的数据直接复制到备用服务器中的对应内存块中,同步数据的过程对主用服务器上层逻辑透明,不用破坏原有功能逻辑的代码,通用性强。
请参阅图5,其所示为本发明实施例提供的另一种同步数据的方法的流程图,该同步数据的方法可用于主从热备机制中,主用服务器与备用服务器间的数据同步。需要说明的是,本发明实施例中的同步数据的方法基于主用服务器和备用服务器的内存池实现。
如图5所示,该方法包括:
501、接收主用服务器发送的数据同步请求;
举例来说,备用服务器可以通过同步传输方式或异步传输方式或其他传输方式来接收主用服务器发送的数据同步请求。
502、解析上述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块。
具体来说,当主用服务器的内存池中某一内存块存储的数据发生变更,则主用服务器获取内存池中发生数据变更的内存块的内存块标识信息以及该内存块中所存储的变更后的全部数据,并将该内存块中所存储的变更后的全部数据作为待同步的数据。
主用服务器将发生数据变更的内存块的内存块标识信息即为第一内存块标识信息和待同步的数据随同数据同步请求一起发送给备用服务器。具体的,主用服务器可以根据备用服务器的IP地址发送数据同步请求。
备用服务器接收主用服务器发送的数据同步请求后,解析接收的数据同步请求,获取随该数据同步请求一起发送过来的第一内存块标识信息和待同步的数据。
503、解析上述第一内存块标识信息,获取该第一内存块的地址偏移值。
需要说明的是,上述第一内存块的地址偏移值为第一内存块首地址相对于主用服务器的内存池首地址的偏移值。上述第一内存标识信息中记录有该第一内存块的地址偏移值,备用服务器通过解析第一内存块标识信息,可以获取到第一内存块标识信息中记录的该第一内存块的地址偏移值。
504、获取本地内存池中与上述第一内存块的地址偏移值相对应的第二内存块首地址。
本发明实施例中,备用服务器通过解析第一内存块标识信息,获取到第一内存块的地址偏移值,然后根据该第一内存块的地址偏移值获取本地内存池中与该第一内存块的地址偏移值相对应的第二内存块首地址。
本发明实施例中,主用服务器和备用服务器的初始化流程一样,因此,每个内存块首地址相对于内存池首地址的偏移值是固定的,即主用服务器内存池中的内存块和备用服务器内存池中的内存块的相对地址相同,同一个地址偏移值可以在主用服务器内存池和备用服务器内存池中获取到相对应位置的内存块。
505、同步上述待同步的数据到本地内存池与第二内存块首地址相对应的第二内存块中。
在本发明实施例中,备用服务器在获取到本地内存池中与第一内存块标识信息相对应的第二内存块首地址后,根据该第二内存块首地址将待同步的数据同步到本地内存池的第二内存块中。
需要说明的是,上述待同步的数据为第一内存块的数据存储区存储的变更后的全部数据。上述的同步结果为将第二内存块的数据存储区的数据全部替换为待同步的数据。
506、判断同步到第二内存块中的数据是否包含指针。
在本发明实施例中,当待同步的数据同步到备用服务器的第二内存块中之后,判断同步到第二内存块中的数据是否包含指针,若同步到第二内存块中的数据包含指针,则进入步骤507;若同步到第二内存块中的数据不存在指针,则返回,同步数据结束。
507、当同步到第二内存块中的数据包含指针,则对该指针进行重置。
在本发明实施例中,由于直接将主用服务器内存池中的第一内存块中的数据复制到备用服务器内存池中的第二内存块中,因此,当主用服务器内存池中的第一内存块中的数据包含指针时,也会将指针同时同步到备用服务器内存池中的第二内存块中,从而存在指针指向出错问题。例如,指针在第一内存块中指向主用服务器内存池中的内存块首地址为X的内存块,当将该指针同步到备用服务器内存池的第二内存块中后,由于备用服务器内存池中没有内存块首地址为X的内存块,此时该指针就指向了一个空地址。
为了保证同步到备用服务器内存池中的第二内存块中的指针仍指向正确的内存块地址信息,在本发明实施例中,对同步后的指针进行重置,重置后的指针所指向的信息与该指针在主用服务器内存池中所指向的信息保持一致。例如,重置前,指针在主用服务器内存池中指向内存块C,重置后,该指针在备用服务器内存池中指向内存块c,其中,备用服务器内存池中的内存块c与主用服务器内存池中的内存块C相对应,即备用服务器内存池中的内存块c用于备份主用服务器内存池中的内存块C中的数据。
在本发明实施例中,对指针进行重置可以采用图6所示的方法。图6所示为本发明实施例提供的对第二内存块中的指针进行重置的方法流程图。如图6所示,该方法包括:
5071、获取待重置指针的标识信息。
在本发明实施例中,主用服务器内存池的第一内存块的数据存储区在保存指针数据时,会保存一个该指针指向内存块的指针的标识信息,通过该指针的标识信息可以确定其所指向的内存块信息。当待同步的数据同步到第二内存块中后,备用服务器获取同步的数据中待重置指针的标识信息。
5072、解析待重置指针的标识信息,获取所述待重置指针的地址偏移值。
在本发明实施例中,待重置指针的标识信息包含待重置指针的地址偏移值,该待重置指针的地址偏移值为相对于指向当前内存块的指针地址的偏移值。
备用服务器在获取到待重置指针的标识信息后,解析该待重置指针的标识信息,获取待重置指针的地址偏移值。
5073、获取指向第二内存块的第二指针地址。
备用服务器在获取到待重置指针的地址偏移值之后,获取备用服务器内存池中指向第二内存块的第二指针地址。
需要说明的是,备用服务器也可以先获取指向第二内存块的第二指针地址,然后再获取待重置指针的地址偏移值,本发明实施例对此不作限制。
5074、根据第二指针地址和待重置指针的地址偏移值计算待重置指针的重置地址。
在本发明实施例中,备用服务器根据获取的第二指针地址和待重置指针的地址偏移值计算待重置指针的重置地址,具体的,在第二指针地址的基础上加上待重置指针的地址偏移值即可以得到待重置指针的重置地址。
5075、获取重置地址,并根据重置地址对待重置指针进行重置。
具体的,备用服务器在计算出待重置指针的重置地址后获取该重置地址,并根据该重置地址对待重置指针进行重置。
本发明实施例通过对应主用服务器和备用服务器内存池中内存块的地址一致,实现了将主用服务器发生数据变更的内存块中的数据直接复制到备用服务器中的对应内存块中,同步数据的过程对主用服务器上层逻辑透明,不用破坏原有功能逻辑的代码,通用性强。
请参阅图7,图7为本发明实施例提供的一种备用服务器的结构示意图。如图7所示,该备用服务器700可以包括:接收模块701、第一解析模块702、第一获取模块703和数据同步模块704。
接收模块701可以用于接收主用服务器发送的数据同步请求。
举例来说,接收模块701可以通过同步传输方式或异步传输方式或其他传输方式来接收主用服务器发送的数据同步请求。
第一解析模块702可以用于解析数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块。
具体来说,当主用服务器的内存池中某一内存块存储的数据发生变更,则主用服务器获取内存池中发生数据变更的内存块的内存块标识信息以及该内存块中所存储的变更后的全部数据,并将该内存块中所存储的变更后的全部数据作为待同步的数据。
主用服务器将发生数据变更的内存块的内存块标识信息即为第一内存块标识信息和待同步的数据随同数据同步请求一起发送给备用服务器。具体的,主用服务器可以根据备用服务器的IP地址发送数据同步请求。
接收模块701接收主用服务器发送的数据同步请求后,第一解析模块702解析接收的数据同步请求,获取随该数据同步请求一起发送过来的第一内存块标识信息和待同步的数据。
第一获取模块703可以用于获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址。
在本发明实施例中,主用服务器和备用服务器的初始化流程一样,因此,备用服务器内存池中的内存块与主用服务器内存池中内存块相对应。
第一解析模块702在获取到第一内存块标识信息和待同步的数据之后,第一获取模块703根据第一内存块标识信息去查找本地内存池中与该第一内存块标识信息相对应的内存块首地址,并在查找到相对应的内存块首地址之后获取该内存块首地址作为第二内存块首地址。
数据同步模块704可以用于同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中。
具体而言,在本发明的一个实施例中,如图8所示,第一获取模块703可以包括第二解析模块801和第二获取模块802。其中,第二解析模块801可以用于解析上述第一内存块标识信息,获取第一内存块的地址偏移值,该第一内存块的地址偏移值为第一内存块首地址相对于主用服务器的内存池首地址的偏移值。第二获取模块802可以用于获取本地内存池中与上述第一内存块的地址偏移值相对应的第二内存块首地址。
在本发明的一个实施例中,第二获取模块802可以包括第三获取模块8021、第一计算模块8022、第四获取模块8023。
具体的,第三获取模块8021可以用于获取本地内存池首地址。
第一计算模块8022可以用于根据本地内存池首地址和第一内存块的地址偏移值计算本地内存池与第一内存块的地址偏移值相对应的第二内存块首地址。
在本发明实施例中,在第三获取模块8021获取到本地内存池首地址以及第二解析模块801获取到第一内存块的地址偏移值之后,第一计算模块8022在本地内存池首地址的基础上加上第一内存块的地址偏移值即计算得到相对应的第二内存块首地址。
举例来说,本地内存池首地址为“0x0001E240”,第一内存块的地址偏移值为128,则第一计算模块8022计算出的本地内存池中与第一内存块的地址偏移值相对应的第二内存块首地址为0x001E2C0(0x0001E240+128)。
第四获取模块8023可以用于获取上述第二内存块首地址。
在本发明的一个实施例中,如图9所示,数据同步模块704可以包括定位模块7041、清除模块7042和写入模块7043。
具体而言,定位模块7041可以用于在本地内存池中,根据第二内存块首地址定位到第二内存块。
清除模块7042可以用于清除第二内存块中存储的数据。
写入模块7043可以用于将待同步的数据写入到第二内存块中。
请参阅图10,其所示为本发明实施例提供的另一种备用服务器的结构示意图,该备用服务器1000可以包括:接收模块1001、第一解析模块1002、第一获取模块1003、数据同步模块1004、判断模块1005和重置模块1006。
其中,接收模块1001、第一解析模块1002、第一获取模块1003、数据同步模块1004分别与上述备用服务器700中的接收模块701、第一解析模块702、第一获取模块703和数据同步模块704相对应,在此不再赘述。
判断模块1005可以用于判断同步到第二内存块中的数据是否包含指针。
重置模块1006可以用于当同步到第二内存块中的数据包含指针时,对所述指针进行重置。
具体的,重置模块1006可以包括第五获取模块1006a、第三解析模块1006b、第六获取模块1006c、第二计算模块1006d和第七获取模块1006e。
第五获取模块1006a可以用于获取待重置指针的标识信息。
第三解析模块1006b可以用于解析上述待重置指针的标识信息,获取待重置指针的地址偏移值。
第六获取模块1006c可以用于获取指向第二内存块的第二指针地址。
第二计算模块1006d可以用于根据第二指针地址和待重置指针的地址偏移值计算待重置指针的重置地址。
第七获取模块1006e可以用于获取重置地址,并根据该重置地址对待重置指针进行重置。
请参阅图11,其所示为本发明实施例提供的一种服务器的结构示意图。如图所示,该服务器1100可以包括处理器1101、存储装置1102以及数据接口1103。
存储装置1102可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储装置1102也可以包括非易失性存储器(nonvolatilememory),例如快闪存储器(flash memory),固态硬盘(solid-state drive,SSD)等;存储装置1102还可以包括上述种类的存储器的组合。
处理器1101可以是中央处理器(central processing unit,CPU)。所述处理器1101还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(applicationspecificintegrated circuit,ASIC),还可以是可编程逻辑器件(programmable logicdevice,PLD)等。所述的PLD可以是现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)等。
可选的,存储装置1102还用于存储计算机程序指令。处理器1101可以用于调用计算机程序指令,实现如本发明上述实施例提及的各种方法。
在本发明的一个实施例中,处理器1101调用存储装置1102中存储的计算机程序指令,用于接收主用服务器发送的数据同步请求;解析所述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址;同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中。
在本发明的一个实施例中,处理器1101在获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址时,解析所述第一内存块标识信息,获取所述第一内存块的地址偏移值,所述第一内存块的地址偏移值为所述第一内存块首地址相对于所述主用服务器的内存池首地址的偏移值;获取本地内存池中与所述第一内存块的地址偏移值相对应的第二内存块首地址。
在本发明的一个实施例中,处理器1101在获取本地内存池中与所述第一内存块的地址偏移值相对应的第二内存首块地址时,获取本地内存池首地址;根据所述本地内存池首地址和所述第一内存块的地址偏移值计算本地内存池中与所述第一内存块的地址偏移值相对应的第二内存块首地址;获取所述第二内存块首地址。
在本发明的一个实施例中,处理器1101在同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中之后,还用于判断同步到第二内存块中的数据是否包含指针;若同步到第二内存块中的数据包含指针,则对所述指针进行重置。
在本发明的一个实施例中,处理器1101在当同步到第二内存块中的数据包含指针对所述指针进行重置时,获取待重置指针的标识信息;解析所述待重置指针的标识信息,获取所述待重置指针的地址偏移值;获取指向所述第二内存块的第二指针地址;根据所述第二指针地址和所述待重置指针的地址偏移值计算待重置指针的重置地址;获取所述重置地址,并根据所述重置地址对所述待重置指针进行重置。
在本发明的一个实施例中,处理器1101在同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中时,在本地内存池中,根据所述第二内存块首地址定位到第二内存块;清除所述第二内存块中存储的数据;将所述待同步的数据写入到所述第二内存块中。
本发明实施例的所述处理器的具体实现可参考前述实施例中相关内容的描述,在此不赘述。
本发明实施例通过对应主用服务器和备用服务器内存池中内存块的地址一致,实现了将主用服务器发生数据变更的内存块中的数据直接复制到备用服务器中的对应内存块中,同步数据的过程对主用服务器上层逻辑透明,不用破坏原有功能逻辑的代码,通用性强。
请参阅图12,其所示为本发明实施例提供的一种同步数据的系统的结构示意图。如图12所示,该同步数据的系统可以包括主用服务器1201和至少一个备用服务器1102,其中,主用服务器1201和备用服务器之间以可通信方式连接。
主用服务器1201可用于向备用服务器1202发送数据同步请求,该数据同步请求包含第一内存块标识信息和待同步的数据,该第一内存块为主用服务器1201的内存池中发生数据变更的内存块。
备用服务器1202可用于接收主用服务器1201发送的数据同步请求;解析上述数据同步请求,获取第一内存块标识信息和待同步的数据,该第一内存块为主用服务器1201的内存池中发生数据变更的内存块;获取本地内存池中与上述第一内存块标识信息相对应的第二内存块首地址;同步上述待同步的数据到本地内存池与上述第二内存块首地址相对应的第二内存块中。
在本发明的一个实施例中,备用服务器1202获取本地内存池中与第一内存块标识信息相对应的第二内存块首地址具体可以包括:备用服务器解析第一内存块标识信息,获取第一内存块的地址偏移值,该第一内存块的地址偏移值为第一内存块首地址相对于主用服务器1201的内存池首地址的偏移值;备用服务器获取本地内存池首地址,根据该本地内存池首地址和上述第一内存块的地址偏移值计算本地内存池中与该第一内存块的地址偏移值相对应的第二内存块首地址,并获取该第二内存块首地址。
可选的,备用服务器1202还可用于判断同步到第二内存块中的数据是否包含指针;当同步到第二内存块中的数据包含指针时,对上述指针进行重置。
在本发明的一个实施例中,备用服务器对上述指针进行重置具体可以包括:备用服务器获取待重置指针的标识信息;解析该待重置指针的标识信息,获取待重置指针的地址偏移值;备用服务器获取指向第二内存块的第二指针地址;根据该第二指针地址和上述待重置指针的地址偏移值计算待重置指针的重置地址;获取该重置地址,并根据该重置地址对上述待重置指针进行重置。
可以理解的是,上述系统实施例中的备用服务器,可以为前述备用服务器实施例中描述的任意一种备用服务器,此处不再进行赘述。
本发明实施例提供的同步数据的系统通过对应主用服务器和备用服务器内存池中内存块的地址一致,实现了将主用服务器发生数据变更的内存块中的数据直接复制到备用服务器中的对应内存块中,同步数据的过程对主用服务器上层逻辑透明,不用破坏原有功能逻辑的代码,通用性强。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述各实施例中所述的同步数据的方法,具体执行过程可参考前述实施例中相关内容的描述,在此不赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种同步数据的方法,其特征在于,所述方法包括:
接收主用服务器发送的数据同步请求;
解析所述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;
获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址;
同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中。
2.根据权利要求1所述的同步数据的方法,其特征在于,所述获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址包括:
解析所述第一内存块标识信息,获取所述第一内存块的地址偏移值,所述第一内存块的地址偏移值为所述第一内存块首地址相对于所述主用服务器的内存池首地址的偏移值;
获取本地内存池中与所述第一内存块的地址偏移值相对应的第二内存块首地址。
3.根据权利要求2所述的同步数据的方法,其特征在于,所述获取本地内存池中与所述第一内存块的地址偏移值相对应的第二内存首块地址包括:
获取本地内存池首地址;
根据所述本地内存池首地址和所述第一内存块的地址偏移值计算本地内存池中与所述第一内存块的地址偏移值相对应的第二内存块首地址;
获取所述第二内存块首地址。
4.根据权利要求1所述的同步数据的方法,其特征在于,在同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中之后,所述方法还包括:
判断同步到第二内存块中的数据是否包含指针;
若同步到第二内存块中的数据包含指针,则对所述指针进行重置。
5.根据权利要求4所述的同步数据的方法,其特征在于,所述同步到第二内存块中的数据包含指针,则对所述指针进行重置包括:
获取待重置指针的标识信息;
解析所述待重置指针的标识信息,获取所述待重置指针的地址偏移值;
获取指向所述第二内存块的第二指针地址;
根据所述第二指针地址和所述待重置指针的地址偏移值计算待重置指针的重置地址;
获取所述重置地址,并根据所述重置地址对所述待重置指针进行重置。
6.根据权利要求1所述的同步数据的方法,其特征在于,所述同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中,具体包括:
在本地内存池中,根据所述第二内存块首地址定位到第二内存块;
清除所述第二内存块中存储的数据;
将所述待同步的数据写入到所述第二内存块中。
7.一种同步数据的系统,其特征在于,包括主用服务器和至少一个备用服务器,所述主用服务器和备用服务器之间以可通信方式连接;
所述主用服务器,用于向备用服务器发送数据同步请求,所述数据同步请求包含第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;
所述备用服务器,用于接收主用服务器发送的数据同步请求;解析所述数据同步请求,获取第一内存块标识信息和待同步的数据,所述第一内存块为主用服务器的内存池中发生数据变更的内存块;获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址;同步所述待同步的数据到本地内存池与所述第二内存块首地址相对应的第二内存块中。
8.根据权利要求7所述的同步数据的系统,其特征在于,所述备用服务器获取本地内存池中与所述第一内存块标识信息相对应的第二内存块首地址具体包括:
所述备用服务器解析所述第一内存块标识信息,获取所述第一内存块的地址偏移值,所述第一内存块的地址偏移值为所述第一内存块首地址相对于所述主用服务器的内存池首地址的偏移值;
所述备用服务器获取本地内存池首地址;根据所述本地内存池首地址和所述第一内存块的地址偏移值计算本地内存池中与所述第一内存块的地址偏移值相对应的第二内存块首地址;获取所述第二内存块首地址。
9.根据权利要求7所述的同步数据的系统,其特征在于,
所述备用服务器,还用于判断同步到第二内存块中的数据是否包含指针;若同步到第二内存块中的数据包含指针,则对所述指针进行重置。
10.根据权利要求9所述的同步数据的系统,其特征在于,所述备用服务器对所述指针进行重置具体包括:
所述备用服务器获取待重置指针的标识信息;解析所述待重置指针的标识信息,获取所述待重置指针的地址偏移值;获取指向所述第二内存块的第二指针地址;根据所述第二指针地址和所述待重置指针的地址偏移值计算待重置指针的重置地址;获取所述重置地址,并根据所述重置地址对所述待重置指针进行重置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810264907.7A CN110198331B (zh) | 2018-03-28 | 2018-03-28 | 一种同步数据的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810264907.7A CN110198331B (zh) | 2018-03-28 | 2018-03-28 | 一种同步数据的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110198331A true CN110198331A (zh) | 2019-09-03 |
CN110198331B CN110198331B (zh) | 2022-11-25 |
Family
ID=67751325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810264907.7A Active CN110198331B (zh) | 2018-03-28 | 2018-03-28 | 一种同步数据的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110198331B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727647A (zh) * | 2019-10-21 | 2020-01-24 | 中国民航信息网络股份有限公司 | 运价数据存储方法及装置 |
CN113742376A (zh) * | 2020-10-28 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种同步数据的方法、第一服务器以及同步数据的系统 |
CN116170448A (zh) * | 2023-04-20 | 2023-05-26 | 河北先见软件科技股份有限公司 | 一种跨组织的数据共享的方法和存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153614A1 (en) * | 2003-02-05 | 2004-08-05 | Haim Bitner | Tape storage emulation for open systems environments |
US20040153709A1 (en) * | 2002-07-03 | 2004-08-05 | Burton-Krahn Noel Morgen | Method and apparatus for providing transparent fault tolerance within an application server environment |
CN102043686A (zh) * | 2009-10-20 | 2011-05-04 | 华为技术有限公司 | 一种内存数据库的容灾方法、备用服务器及系统 |
CN103500130A (zh) * | 2013-09-11 | 2014-01-08 | 上海爱数软件有限公司 | 一种对双机热备数据进行实时备份的方法 |
US20140040593A1 (en) * | 2012-08-02 | 2014-02-06 | Qualcomm Incorporated | Multiple sets of attribute fields within a single page table entry |
CN103580891A (zh) * | 2012-07-27 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 一种数据同步的方法、系统及服务器 |
CN103825918A (zh) * | 2012-11-16 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 数据同步方法、终端设备、服务器和系统 |
CN104965862A (zh) * | 2015-06-03 | 2015-10-07 | 深圳市创梦天地科技有限公司 | 一种内存数据库集群的同步方法及内存数据库主机 |
US20150304417A1 (en) * | 2012-12-31 | 2015-10-22 | Huawei Technologies Co., Ltd. | Data synchronization method, and device |
CN105978985A (zh) * | 2016-06-07 | 2016-09-28 | 华中科技大学 | 一种用户态RPC over RDMA的内存管理方法 |
US20160366216A1 (en) * | 2015-06-11 | 2016-12-15 | International Business Machines Corporation | In-memory data store replication through remote memory sharing |
CN106407114A (zh) * | 2016-09-20 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 内存泄漏分析方法和装置 |
-
2018
- 2018-03-28 CN CN201810264907.7A patent/CN110198331B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153709A1 (en) * | 2002-07-03 | 2004-08-05 | Burton-Krahn Noel Morgen | Method and apparatus for providing transparent fault tolerance within an application server environment |
US20040153614A1 (en) * | 2003-02-05 | 2004-08-05 | Haim Bitner | Tape storage emulation for open systems environments |
CN102043686A (zh) * | 2009-10-20 | 2011-05-04 | 华为技术有限公司 | 一种内存数据库的容灾方法、备用服务器及系统 |
CN103580891A (zh) * | 2012-07-27 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 一种数据同步的方法、系统及服务器 |
US20140040593A1 (en) * | 2012-08-02 | 2014-02-06 | Qualcomm Incorporated | Multiple sets of attribute fields within a single page table entry |
CN103825918A (zh) * | 2012-11-16 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 数据同步方法、终端设备、服务器和系统 |
US20150304417A1 (en) * | 2012-12-31 | 2015-10-22 | Huawei Technologies Co., Ltd. | Data synchronization method, and device |
CN103500130A (zh) * | 2013-09-11 | 2014-01-08 | 上海爱数软件有限公司 | 一种对双机热备数据进行实时备份的方法 |
CN104965862A (zh) * | 2015-06-03 | 2015-10-07 | 深圳市创梦天地科技有限公司 | 一种内存数据库集群的同步方法及内存数据库主机 |
US20160366216A1 (en) * | 2015-06-11 | 2016-12-15 | International Business Machines Corporation | In-memory data store replication through remote memory sharing |
CN105978985A (zh) * | 2016-06-07 | 2016-09-28 | 华中科技大学 | 一种用户态RPC over RDMA的内存管理方法 |
CN106407114A (zh) * | 2016-09-20 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 内存泄漏分析方法和装置 |
Non-Patent Citations (2)
Title |
---|
宋雅琴等: "Nginx Slab算法研究", 《网络新媒体技术》 * |
高广强等: "网络备份系统的离线同步与恢复方法", 《计算机安全》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727647A (zh) * | 2019-10-21 | 2020-01-24 | 中国民航信息网络股份有限公司 | 运价数据存储方法及装置 |
CN110727647B (zh) * | 2019-10-21 | 2022-07-05 | 中国民航信息网络股份有限公司 | 运价数据存储方法及装置 |
CN113742376A (zh) * | 2020-10-28 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种同步数据的方法、第一服务器以及同步数据的系统 |
CN116170448A (zh) * | 2023-04-20 | 2023-05-26 | 河北先见软件科技股份有限公司 | 一种跨组织的数据共享的方法和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110198331B (zh) | 2022-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101706802B (zh) | 一种数据写入、修改及恢复的方法、装置及服务器 | |
CN105579974B (zh) | 利用云存储的用于系统的断开连接操作 | |
CN104504062B (zh) | 主备数据库数据同步方法及装置 | |
CN105426275B (zh) | 双活集群系统中容灾的方法及装置 | |
CN106021016A (zh) | 在快照之间的虚拟时间点访问 | |
CN106201659B (zh) | 一种虚拟机热迁移的方法及宿主机 | |
CN110198331A (zh) | 一种同步数据的方法及系统 | |
CN106325773A (zh) | 一种存储系统数据的一致性保障方法、系统及缓存装置 | |
CN106021147A (zh) | 在逻辑驱动器模型下呈现直接存取的存储设备 | |
CN106155839B (zh) | 一种用于备份数据的方法与设备 | |
CN107203327B (zh) | 一种用于存储系统的方法和装置 | |
CN110807064A (zh) | Rac分布式数据库集群系统中的数据恢复装置 | |
CN104520802B (zh) | 数据发送方法、数据接收方法和存储设备 | |
CN106919465A (zh) | 用于存储系统中多重数据保护的方法和装置 | |
CN106681865B (zh) | 业务恢复方法及装置 | |
KR100922584B1 (ko) | 객체 기반 분산 공유 시스템 및 그의 방법 | |
CN104794119A (zh) | 用于中间件消息的存储与传输方法及系统 | |
CN110402429A (zh) | 复制用于管理基于云的资源的存储表以抵挡存储账户中断 | |
CN114710263B (zh) | 密钥管理方法、密钥管理装置、密钥管理设备及存储介质 | |
CN107402848A (zh) | 一种快照数据一致性的实现方法 | |
US10983709B2 (en) | Methods for improving journal performance in storage networks and devices thereof | |
EP3896571A1 (en) | Data backup method, apparatus and system | |
CN104407806B (zh) | 独立磁盘冗余阵列组硬盘信息的修改方法和装置 | |
CN110046065A (zh) | 一种存储阵列重建方法、装置、设备及存储介质 | |
CN109299116A (zh) | 一种数据同步方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |