一种共享内存的多个程序间数据同步方法和装置制造方法及图纸

技术编号:16301232 阅读:70 留言:0更新日期:2017-09-26 19:19
本发明专利技术实施例提供一种共享内存的多个程序间数据同步方法和装置,其中,该方法包括:针对共享内存的多个程序,当任一程序接收到新的请求时,生成设定结构的操作命令并执行,以及将生成的操作命令写入预设内存空间中;需要同步数据的程序监控所述预设内存空间;以及在监控到所述预设内存空间中写入新的操作命令后,读取并模拟完成所述新的操作命令,实现数据同步。本发明专利技术解决了现有的多个程序共享数据时候存在数据冲突的技术,达到了简单高效实现数据共享的技术效果。

Method and device for synchronizing data between multiple programs in shared memory

The embodiment of the invention provides a multiple program shared memory data synchronization method and device, wherein, the method comprises: according to a program of shared memory, when any program receives the new request, set the command structure generated and executed, and the generated commands write the default memory space need to monitor data synchronization program; the preset memory space; write new commands and to the monitoring in the preset memory space, read and complete the simulation of the new operation command, data synchronization. The invention solves the existing data collision technology when multiple programs share data, and achieves the technical effect of simply and efficiently realizing data sharing.

【技术实现步骤摘要】
一种共享内存的多个程序间数据同步方法和装置
本专利技术涉及数据处理
,尤其涉及一种共享内存的多个程序间数据同步方法和装置。
技术介绍
目前,为了实现不同程序件的同步,一般采用如下两种方式:1)日志同步,即,每个程序将每一步的操作和操作结果写入日志,另一个程序读取日志,并解析还原操作,以实现同步。2)共享内存,即,多个程序通过共享内存来共享数据。然而,上述方式1日志同步的方式多用于故障后回滚数据等非实时场景,例如:mysql的binlog。通过该方式虽然可以实现同步,但是,如果希望做到实时同步,则对硬盘的读写速度要求很高,实现起来代价太大,因此,几乎无法通过该方式实现数据的实时同步。上述方式2虽然可以实现0延迟的数据同步,但是由于内存没有写保护,因此会导致多个程序对同一块数据反复进行擦写,容易导致使用同一块内存的程序全部崩溃。针对如何实现多个程序间的数据同步,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供一种共享内存的多个程序间数据同步方法和装置,以实现多个程序间的数据同步。一方面,本专利技术实施例提供了一种共享内存的多个程序间数据同步方法,包括:针对共享内存的多个程序,当任一程序接收到新的请求时,生成设定结构的操作命令并执行,以及将生成的操作命令写入预设内存空间中;需要同步数据的程序监控所述预设内存空间;以及在监控到所述预设内存空间中写入新的操作命令后,读取并模拟完成所述新的操作命令,实现数据同步。可选地,所述预设内存空间是从共享内存中划分出的固定大小的内存区块,所述预设内存空间包括:数据存储区块、信息记录区块;其中,所述数据存储区块用于存储操作命令,所述信息记录区块用于存储数据存储区块的最后写入数据时间和大小;需要同步数据的程序监控所述预设内存空间,具体包括:需要同步数据的程序监控预设内存空间中、存储于信息记录区块的所述最后写入数据时间;以及监控到所述预设内存空间中写入新的操作命令的方法,具体包括:如果所述最后写入数据时间大于本程序记录的最后同步数据时间,则判定所述预设内存空间中写入新的操作命令。可选地,所述操作命令采用带有时序的信令结构,具体信令结构包括如下字段:信令开始标志、本信令内数据长度、时间戳、被读取次数、最后读取时间、操作命令内容、附加参数和数据、信令结束标志;以及所述读取并模拟完成所述新的操作命令,实现数据同步之后,还包括:将读取的所述新的操作命令中,被读取次数字段的数值加一,并将最后读取时间字段修改为本程序的读取时间。可选地,将操作命令按照先进先出的策略,按内存地址从前向后循环写入所述数据存储区块中。可选地,上述方法还包括:从共享内存中划分出部分存储区域作为所述预设内存空间,并设置所述预设内存空间允许被共享内存的多个程序写入和读取数据。另一方面,本专利技术实施例提供了一种共享内存的多个程序间数据同步装置,可以包括:写入模块,用于针对共享内存的多个程序,当任一程序接收到新的请求时,生成设定结构的操作命令并执行,以及将生成的操作命令写入预设内存空间中;监控模块,用于需要同步数据的程序监控所述预设内存空间;以及同步模块,用于在监控到所述预设内存空间中写入新的操作命令后,读取并模拟完成所述新的操作命令,实现数据同步。可选地,所述预设内存空间是从共享内存中划分出的固定大小的内存区块,所述预设内存空间包括:数据存储区块、信息记录区块;其中,所述数据存储区块用于存储操作命令,所述信息记录区块用于存储数据存储区块的最后写入数据时间和大小;其中,所述监控模块具体用于需要同步数据的程序监控预设内存空间中、存储于信息记录区块的所述最后写入数据时间;所述同步模块具体用于在所述最后写入数据时间大于本程序记录的最后同步数据时间的情况下,判定所述预设内存空间中写入新的操作命令。可选地,所述操作命令采用带有时序的信令结构,具体信令结构包括如下字段:信令开始标志、本信令内数据长度、时间戳、被读取次数、最后读取时间、操作命令内容、附加参数和数据、信令结束标志;所述同步模块,还用于在读取并模拟完成所述新的操作命令,实现数据同步之后,将读取的所述新的操作命令中,被读取次数字段的数值加一,并将最后读取时间字段修改为本程序的读取时间。可选地,所述写入模块,具体用于将操作命令按照先进先出的策略,按内存地址从前向后循环写入所述数据存储区块中。可选地,上述装置还包括:设置模块,用于从共享内存中划分出部分存储区域作为所述预设内存空间,并设置所述预设内存空间允许被共享内存的多个程序写入和读取数据。上述技术方案具有如下有益效果:因为开辟一段预设的内存空间,对于共享内存的多个程序都将自身基于新请求的操作命令写入预设的内存空间中,需要同步数据的程序监控预设内存空间;一旦监控到预设内存空间中写入新的操作命令,则读取并模拟完成新的操作命令,实现数据同步,从而解决了现有的多个程序共享数据时候存在数据冲突的技术,达到了简单高效实现数据共享的技术效果。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例的共享内存的多个程序间数据同步方法流程图;图2是根据本专利技术实施例的共享内存的多个程序间数据同步装置结构框图;图3是根据本专利技术实施例的程序基于指令进行数据共享的流程图;图4是根据本专利技术实施例的信令结构的组成示意图;图5是根据本专利技术实施例的数据存储区块的示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。考虑到现有的数据同步共享方法所存在的问题,在本例中提供了一种共享内存的多个程序间数据同步方法,如图1所示,可以包括如下步骤:步骤101:针对共享内存的多个程序,当任一程序接收到新的请求时,生成设定结构的操作命令并执行,以及将生成的操作命令写入预设内存空间中;即,可以为多个共享数据的程序设置一块预设内存空间,这块内存空间是这些程序都可以访问的,且对于每个程序而言,如果有对数据的操作或者修改指令,在执行这些操作命令的时候,也会将这些操作命令写入预设内存空间中,使得其它程序知道数据有修改,并可以基于这种操作命令模拟出新的数据,从而使得程序之间在共享数据的时候,也不会出现数据冲突。步骤102:需要同步数据的程序监控所述预设内存空间;步骤103:在监控到所述预设内存空间中写入新的操作命令后,读取并模拟完成所述新的操作命令,实现数据同步。对于共享内存的多个程序中的各个程序而言,可以是接收请求,并响应于所述请求,生成操作命令;然后,执行操作命令,并将操作命令按照带有时序的信令格式进行转换,将格式转换后的操作命令写入所述预设内存空间中。同时,这些程序还需要实时监控预设内存空间中是否有新的操作命令写入,并在监控到有新的操作命令写入的情况下,读取并进行模拟,以实现数据的同步。上述预设内存空间可以是从内存中划本文档来自技高网...
一种共享内存的多个程序间数据同步方法和装置

【技术保护点】
一种共享内存的多个程序间数据同步方法,其特征在于,包括:针对共享内存的多个程序,当任一程序接收到新的请求时,生成设定结构的操作命令并执行,以及将生成的操作命令写入预设内存空间中;需要同步数据的程序监控所述预设内存空间;以及在监控到所述预设内存空间中写入新的操作命令后,读取并模拟完成所述新的操作命令,实现数据同步。

【技术特征摘要】
1.一种共享内存的多个程序间数据同步方法,其特征在于,包括:针对共享内存的多个程序,当任一程序接收到新的请求时,生成设定结构的操作命令并执行,以及将生成的操作命令写入预设内存空间中;需要同步数据的程序监控所述预设内存空间;以及在监控到所述预设内存空间中写入新的操作命令后,读取并模拟完成所述新的操作命令,实现数据同步。2.根据权利要求1所述的方法,其特征在于,所述预设内存空间是从共享内存中划分出的固定大小的内存区块,所述预设内存空间包括:数据存储区块、信息记录区块;其中,所述数据存储区块用于存储操作命令,所述信息记录区块用于存储数据存储区块的最后写入数据时间和大小;需要同步数据的程序监控所述预设内存空间,具体包括:需要同步数据的程序监控预设内存空间中、存储于信息记录区块的所述最后写入数据时间;以及监控到所述预设内存空间中写入新的操作命令的方法,具体包括:如果所述最后写入数据时间大于本程序记录的最后同步数据时间,则判定所述预设内存空间中写入新的操作命令。3.根据权利要求2所述的方法,其特征在于,所述操作命令采用带有时序的信令结构,具体信令结构包括如下字段:信令开始标志、本信令内数据长度、时间戳、被读取次数、最后读取时间、操作命令内容、附加参数和数据、信令结束标志;以及所述读取并模拟完成所述新的操作命令,实现数据同步之后,还包括:将读取的所述新的操作命令中,被读取次数字段的数值加一,并将最后读取时间字段修改为本程序的读取时间。4.根据权利要求1所述的方法,其特征在于,将操作命令按照先进先出的策略,按内存地址从前向后循环写入所述数据存储区块中。5.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:从共享内存中划分出部分存储区域作为所述预设内存空间,并设置所述预设内存空间允许被共享内存的多个程序写入和读取数据。6.一种共享...

【专利技术属性】
技术研发人员:谢成雨王崇任文越
申请(专利权)人:微梦创科网络科技中国有限公司
类型:发明
国别省市:北京,11

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

1