CN104391662A - 一种数据读写方法及装置 - Google Patents
一种数据读写方法及装置 Download PDFInfo
- Publication number
- CN104391662A CN104391662A CN201410768410.0A CN201410768410A CN104391662A CN 104391662 A CN104391662 A CN 104391662A CN 201410768410 A CN201410768410 A CN 201410768410A CN 104391662 A CN104391662 A CN 104391662A
- Authority
- CN
- China
- Prior art keywords
- data
- key assignments
- read
- queue
- proof test
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据读写方法及装置,所述数据读取方法通过将从队列中读取的键值保存在预设的存储区域中,并删除队列中的所述键值;根据该存储区域中的键值,获取该键值对应的数据,并将获取的数据写入共享内存中,以供读进程读取,可保证读进程能够从共享内存中读取到其所需的数据。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据读写方法及装置。
背景技术
在基于多核操作系统的设备中,通常采用多进程和多线程的模式处理(如,读或写)数据,例如,写进程通过其自身的线程向共享内存中写入数据,以供读进程读取,读进程通过自身的线程从共享内存中读取其所需的数据。
而在实际应用中,共享内存中可能并不存在读进程所需要的数据,因此,会出现读进程可能无法从共享内存中读取到其所需要的数据的问题。
针对上述问题,在现有技术中,可利用写进程获取读进程所需要的数据对应的键值(即key值),并从网络侧的服务器中获取该键值对应的数据,将该获取的数据写入共享内存中,以供读进程读取。
而由于读进程与写进程之间是无法直接进行通信的,因此,为了保证写进程能够获取读进程所需要的数据对应的key值,在现有技术中,先预设一个队列,读进程将其所需要的各数据的key值写入该队列中,而写进程从该队列中获取key值,并从网络侧的服务器中获取该key值对应的数据,将该数据写入共享内存中以供读进程读取。
然而,写进程每次从队列中读取出一个键值之后,需要先从网络侧的服务器中获取该键值对应的数据,并将该数据写入共享内存中,然后才从队列中读取下一个键值。一般的,写进程从网络侧获取一个键值对应的数据所需要的时间,远远大于读进程向队列中写入一个键值所需要的时间。因此,当读进程在短时间内向该队列中写入自身所需要的数据的多个key值时,队列中的多个键值容易造成堆积。
由于队列的存储空间较小,其容量一般仅为几十KB,这就会导致队列很快就会被堆积的键值占满,从而会造成后续读进程无法再将其所需要的数据的key值写入队列,进而导致后续读进程无法从共享内存中读取到其所需要的数据。
发明内容
鉴于上述问题,本发明提出一种能够有效克服上述问题的数据读写方法及装置,可保证读进程能够从共享内存中读取到其所需的数据。
根据本发明的第一个方面,提出一种数据写入方法,包括:
读取队列中的键值;
将读取的所述键值保存在预设的存储区域中,并删除队列中的所述键值;
根据所述存储区域中的所述键值,获取所述键值对应的数据;以及
将获取的数据写入共享内存中。
可选的,所述方法还包括:
根据获取的数据,确定所述数据对应的校验值;以及
将所述数据对应的校验值写入共享内存中。
可选的,根据获取的数据,确定所述数据对应的校验值,具体包括:
通过信息摘要算法确定所述数据对应的校验值。
可选的,获取所述键值对应的数据,具体包括:
从协调服务器Zookeeper中获取所述键值对应的数据。
可选的,读取队列中的键值,具体包括:
通过第一线程读取队列中的键值;
获取所述键值对应的数据,具体包括:
通过第二线程获取所述键值对应的数据。
根据本发明的第二个方面,提出一种数据读取方法,包括:
向队列中写入待读取的数据对应的键值;
从共享内存中读取所述键值对应的数据;
所述共享内存中所述键值对应的数据是由写进程从所述队列中读取所述键值后,根据所述键值获取并写入所述共享内存中的;其中,所述写进程从所述队列中读取所述键值后,将所述键值保存在预设的存储区域中,并删除所述队列中的所述键值。
可选的,所述方法还包括:
根据读取的数据,确定所述数据对应的第一校验值;
从共享内存中读取所述数据对应的第二校验值;
当所述第一校验值与第二校验值不匹配时,再次从共享内存中读取所述键值对应的数据,直至确定读取的数据的第一校验值与所述第二校验值匹配为止,其中,所述第二校验值是由写入所述数据的写进程写入所述共享内存中的。
可选的,根据读取的数据,确定所述数据对应的第一校验值,具体包括:
通过信息摘要算法确定所述数据对应的第一校验值。
根据本发明的第三个方面,提出一种数据写入装置,包括:
键值读取模块,用于读取队列中的键值;
键值存储模块,用于将读取的所述键值保存在预设的存储区域中;
键值删除模块,用于删除队列中的所述键值;
数据获取模块,用于根据所述存储区域中的所述键值,获取所述键值对应的数据;以及
数据写入模块,用于将获取的数据写入共享内存中。
可选的,所述装置还包括:
校验值确定模块,用于根据数据获取模块获取的数据,确定所述数据对应的校验值;
校验值写入模块,用于将所述数据对应的校验值写入共享内存中。
可选的,校验值确定模块,具体用于:
通过信息摘要算法确定所述数据对应的校验值。
可选的,数据获取模块,具体用于:
从协调服务器Zookeeper中获取所述键值对应的数据。
可选的,键值读取模块,具体用于:通过第一线程读取队列中的键值;
数据获取模块,具体用于:通过第二线程获取所述键值对应的数据。
根据本发明的第四个方面,提出一种数据读取装置,包括:
键值写入模块,用于向队列中写入待读取的数据对应的键值;
数据读取模块,用于从共享内存中读取所述键值对应的数据;
所述共享内存中的所述键值对应的数据是由写进程从所述队列中读取所述键值后,根据所述键值获取并写入所述共享内存中的;其中,所述写进程从所述队列中读取所述键值后,将所述键值保存在预设的存储区域中,并删除所述队列中的所述键值。
可选的,所述装置还包括:
第一校验值确定模块,用于根据数据读取模块读取的数据,确定所述数据对应的第一校验值;
第二校验值读取模块,用于从共享内存中读取所述数据对应的第二校验值;
数据读取模块还用于,当所述第一校验值与第二校验值不匹配时,再次从共享内存中读取所述键值对应的数据,直至确定读取的数据的第一校验值与所述第二校验值匹配为止,其中,所述第二校验值是由写入所述数据的写进程写入所述共享内存中的。
可选的,第一校验值确定模块,具体用于:通过信息摘要算法确定所述数据对应的第一校验值。
根据本发明提供的数据读写方法,在读取出队列中的键值之后,首先将读取出的键值保存在预设的存储区域中,并删除队列中的所述键值,然后根据存储区域中的键值获取与该键值对应的数据,并将该数据写入共享内存中,以供读进程读取,这样就可有效避免队列中的键值堆积,也就保证了队列不被占满,从而可保证后续读进程能够将待读取的数据对应的键值写入队列,进而可保证后续读进程能够从共享内存中读取到其所需要的数据。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为依据本发明一个实施例的数据写入方法流程示意图;
图2为依据本发明一个实施例的包括读进程、队列和写进程的系统结构示意图;
图3为依据本发明一个实施例的包括读进程、队列和写进程的系统结构示意图;
图4为依据本发明一个实施例的数据写入装置结构示意图;
图5为依据本发明一个实施例的数据读取装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
下面结合说明书附图,对本发明实施例进行详细描述。
图1为依据本发明一个实施例的数据写入方法,可以包括步骤:
S101、读取队列中的键值。
S102、将读取的所述键值保存在预设的存储区域中,并删除队列中的所述键值。
S103、根据所述存储区域中的所述键值,获取所述键值对应的数据。
S104、将获取的数据写入共享内存中。
从上述可知,依据该实施例,读进程从共享内存中读取自身所需的数据,当在共享内存中未读取到所需的数据时,将该数据对应的键值写入队列,并再次从共享内存中读取该键值对应的数据,直到读取到该键值对应的数据为止。写进程将队列中的键值读取到预设的存储区域,并删除队列中的所述键值(即,删除队列中已经被读取的键值),然后根据存储区域中的键值获取读取的该键值对应的数据,并将该获取的数据写入共享内存中,供读进程读取。因此,本发明只需要将队列中的键值读取到预设的存储区域,并删除队列中已经读取的键值,就可有效保证队列中不会存在键值的堆积,也就可保证队列不会因键值堆积被占满,从而可保证后续读进程能够将待读取的数据对应的键值写入队列,进而可保证后续读进程能够从共享内存中读取到其所需要的数据。
依据本发明的一个实施例,在上述图1所示的数据写入过程中,步骤S101~步骤S104可均由设备(如终端设备或网络设备)中的写进程执行。
需要说明的是,本发明所述的写进程为用于从队列中读取键值,并根据该读取出的键值获取该键值对应的数据,将该数据写入共享内存中的进程,该写进程可以但不限于为代理进程(如agent.exe进程)。本发明所述的读进程为用于向队列中写入与待读取的数据(即,所需的数据)对应的键值,并从共享内存中读取数据的进程。
依据本发明的一个实施例,在步骤S101中,读取队列中的键值,具体包括:写进程可实时监控队列中是否存储有键值,当读进程将待读取的数据对应的键值写入队列之后,写进程也就监控到队列中有键值被写入,则写进程从队列中读取队列中的键值。
当然,为了提高写进程读取键值的效率,写进程可以一次性批量读取出队列中当前写入的所有键值。
需要说明的是,写进程在读取队列中的键值的同时,也读取到各键值与数据的对应关系。
依据本发明的一个实施例,在步骤S102中,将读取的键值保存在预设的存储区域中,并删除队列中的所述键值,具体包括:写进程可以但不限于将从队列中读取出的键值保存在设备为写进程分配的内存中,并删除队列中的所述键值。这样,由于写进程将队列中的键值及时的读取,并删除队列中已经被读取的键值,队列中不会存在键值堆积,可有效保证队列不被占满,从而可保证后续读进程可以将待读取的数据的键值写入队列中。一般的,设备的内存一般在GB量级,如,在几GB至几十GB的范围内,则预设的存储区域有足够的存储空间来存储来自队列的键值。当然,预设的存储区域并不仅限于设备的内存,也可以是磁盘等其他存储区域。
图2和图3分别为依据本发明一个实施例提供的包括读进程、队列和写进程的系统结构示意图。设该系统中包括读进程A、读进程B和读进程C,读进程A需要从共享内存中获取数据1,读进程B需要从共享内存中获取数据2,读进程C需要从共享内存中获取数据3。需要说明的是,此处所述的数据1、数据2和数据3可以为用户的通讯地址信息、用户的身份信息或其他信息等等,这里不做任何限制。
参见图2,设备在启动时,其共享内存中是无任何可被读取的数据的,当读进程A、读进程B和读进程C分别无法从共享内存中获取到自身所需要的数据1、数据2和数据3时,将自身所需的数据1、数据2和数据3对应的键值key1、key2和key3写入队列。
同时,写进程可实时监控队列中是否存储有键值,参见图3,当写进程监控到如图2中所示的队列中已经写入key1、key2、key3这三个键值,则写进程从该队列中读取出key1、key2、key3这三个键值,将读取出的key1、key2、key3写入预设的存储区域,并删除队列中已经读取出的key1、key2、key3,以保证队列中不会因键值堆积被占满,从而可保证后续读进程A、读进程B和读进程C能够将未在在共享内存中获取到的其他数据对应的键值写入队列,进而可保证后续读进程能够从共享内存中读取到其所需要的数据。
依据本发明的一个实施例,在步骤S103中,根据存储区域中的键值,获取该键值对应的数据,具体包括:根据存储区域中的键值,可以但不限于从协调服务器(Zookeeper)中获取该键值对应的数据。
具体的,延用上述实例,当写进程在从队列中读取到key1、key2、key3这三个键值,并将这三个键值存储在预设的存储区域之后,由于写进程在读取队列中的键值的同时,也读取到各键值与数据的对应关系,因此,写进程可根据key1、key2、key3与数据1、数据2和数据3的对应关系,从Zookeeper中获取数据1、数据2和数据3。
当写进程获取数据1、数据2和数据3之后,则将获取的数据1、数据2和数据3写入共享内存中,以供读进程读取。读进程在将待读取的数据1、数据2和数据3对应的key1、key2、key3这三个键值写入队列之后,从共享内存中读取写进程写入共享内存中与key1、key2、key3分别对应的数据1、数据2和数据3。
需要说明的是,本发明写进程可以根据存储区域中键值存储时间的先后顺序,获取每个键值对应的数据,将获取的数据写入共享内存中。本发明写进程可以从Zookeeper中获取到每个键值对应的数据后,将该数据写入共享内存中,然后再获取下一个键值对应的数据。或者,写进程还可以从Zookeeper中获取到一定数量的键值分别对应的数据后,将获取的各数据同时写入共享内存中,此处不作任何限制。
本发明实施例提供的上述数据写入方法,在实际应用场景中,通常是通过一个线程从队列中读取键值,再从网络侧的服务器中获取该键值对应的数据,也就是说,写进程从网络侧的服务器中获取键值的同时是无法从队列中读取键值的,而由于写进程从网络侧的服务器中获取一个键值对应的数据所需要的时间,远远大于读进程向队列中写入一个键值所需要的时间,因此,这很可能会造成写进程从网络侧的服务器中获取数据的同时,队列已经被后续读进程写入的键值占满。
为了解决上述问题,可选的,写进程可通过一个线程从队列中读取键值并保存在预设的存储区域中,同时,通过另一个线程从网络侧的服务器中获取已经存储在存储区域中的键值对应的数据。即,依据本发明的一个实施例,在步骤S101中,读取队列中的键值,具体包括:通过写进程中的第一线程读取队列中的键值。在步骤S103中,根据存储区域中的键值,获取该键值对应的数据,具体包括:根据存储区域中的键值,通过写进程中的第二线程获取该键值对应的数据。
本发明实施例提供的上述数据写入方法,考虑到实际应用场景中,当读进程无法从共享内存中读取到数据时,将待读取的数据对应的键值写入队列,写进程从队列中获取读进程写入的键值,并根据该键值获取对应的数据,将获取的数据写入共享内存中,而读进程与写进程是无法进行通信的,因此,写进程无法通知读进程该待读取的数据是否已经完整的写入共享内存中,从而,读进程将键值写入队列后,只能不断的尝试从共享内存中读取该键值对应的数据(如,按设定时间间隔从共享内存中读取该键值对应的数据),直至读取到该数据为止,这就可能会存在这样一个问题:写进程在向共享内存中写入数据的同时,读进程可能也在读取该写进程写入的数据,当读进程读取的数据为写进程未完整写入的数据时,则读进程读取到的数据是不准确的(即,读取的数据是不完整的)。
为了解决上述问题,可选的,本发明写进程从网络侧的服务器中获取到存储区域中的键值对应的数据之后,还包括:根据获取的数据,确定该数据对应的校验值;将该数据对应的校验值写入共享内存中。进一步的,写进程可通过信息摘要算法确定该数据对应的校验值。
相应的,读进程在读取到某一键值对应的数据后,还可校验读取到的数据的准确性。具体的,读进程在读取到某一键值对应的数据后,根据读取的数据,确定该数据对应的第一校验值;从共享内存中读取该数据对应的第二校验值;当第一校验值与第二校验值不匹配时,再次从共享内存中读取相同键值对应的数据,直至读进程根据当前读取出的数据确定出的该数据的第一校验值与从共享内存中读取出的第二校验值匹配时,确定当前读取出的数据为准确的数据。
继续延用上述实例,以读进程从共享内存中读取出key1对应的数据1,并对该数据1的准确性进行校验为例说明。
具体的,读进程A从共享内存中未读取到数据1之后,向队列中写入数据1对应的键值key1,写进程监控到队列中写入key1后,从队列中读取key1,并从网络侧的服务器获取该key1对应的数据1。
写进程从网络侧的服务器获取到key1对应的数据1之后,一方面通过第五版本的信息摘要算法(Message-Digest Algorithm5,MD5)确定数据1的第二校验值,并将该第二校验值写入共享内存中,另一方面,也将该数据1本身写入到共享内存中。
读进程A从将key1写入队列时开始计时,按设定时间间隔t从共享内存中尝试读取key1对应的数据1,当读进程A从共享内存中读取到与key1对应的数据1之后,通过MD5确定数据1的第一校验值,并从共享内存中读取与key1对应的第二校验值。
读进程A判断与该key1对应的第一校验值和第二校验值是否匹配,当该第一校验值与第二校验值不匹配时,说明读进程A当前从共享内存中读取到的key1对应的数据1与写进程根据key1获取到的数据1的内容不一致,即读进程A读取出的数据1是不完整的,因此,读进程再次尝试从共享内存中读取key1对应的数据1,直至读取出完整的数据1为止,即,直至读取出的数据1的第一校验值与第二校验值匹配为止。
需要说明的是,写进程从服务器获取key1对应的数据1之后,将该数据1写入共享内存的步骤,与根据该数据1确定第二校验值并将该第二校验值写入共享内存的步骤的先后顺序不限。
以上为本发明实施例提供的数据写入方法和数据读取方法(即,数据读写方法),基于同样的思路,本发明实施例还提供了一种数据写入装置和数据读取装置,如图4和图5所示。
图4为依据本发明一个实施例的数据写入装置的结构示意图,数据写入装置4包括:
键值读取模块41,用于读取队列3中的键值;
键值存储模块42,用于将读取的所述键值保存在预设的存储区域中;
键值删除模块43,用于删除队列中的所述键值;
数据获取模块44,用于根据所述存储区域中的所述键值,获取所述键值对应的数据;
数据写入模块45,用于将获取的数据写入共享内存6中。
可选的,所述装置,还包括:
校验值确定模块46,用于根据数据获取模块获取的数据,确定所述数据对应的校验值;
校验值写入模块47,用于将所述数据对应的校验值写入共享内存中。
可选的,校验值确定模块46,具体用于:
通过信息摘要算法确定所述数据对应的校验值。
可选的,数据获取模块44,具体用于:
从协调服务器Zookeeper中获取所述键值对应的数据。
可选的,键值读取模块41,具体用于:通过第一线程读取队列中的键值;
数据获取模块44,具体用于:通过第二线程获取所述键值对应的数据。
图5为依据本发明一个实施例的数据读取装置的结构示意图,数据读取装置5包括:
键值写入模块51,用于向队列3中写入待读取的数据对应的键值;
数据读取模块52,用于从共享内存6中读取所述键值对应的数据;
所述共享内存中的所述键值对应的数据是由写进程从所述队列中读取所述键值后,根据所述键值获取并写入所述共享内存中的;其中,所述写进程从所述队列中读取所述键值后,将所述键值保存在预设的存储区域中,并删除所述队列中的所述键值。
可选的,所述装置还包括:
第一校验值确定模块53,用于根据数据读取模块读取的数据,确定所述数据对应的第一校验值;
第二校验值读取模块54,用于从共享内存中读取所述数据对应的第二校验值;
数据读取模块52还用于,当所述第一校验值与第二校验值不匹配时,再次从共享内存中读取所述键值对应的数据,直至确定读取的数据的第一校验值与所述第二校验值匹配为止。
可选的,第一校验值确定模块53,具体包括:通过信息摘要算法确定所述数据对应的第一校验值。
综上所述,本发明实施例提供一种数据读取方法及装置,根据本发明提供的数据读写方法,写进程在读取队列中的键值后,首先将读取的键值保存在预设的存储区域中,并删除队列中的所述键值,因此,可有效避免队列中发生键值堆积,从而可保证队列具有足够的空间,来存储后续读进程在写入其所需要的数据对应的键值,进而可保证后续读进程能够从共享内存中读取到其所需要的数据的问题。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的各,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的拦截应用程序中的植入信息的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施3例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”或“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本发明包括A9、一种数据写入装置,其包括:
键值读取模块,用于读取队列中的键值;
键值存储模块,用于将读取的所述键值保存在预设的存储区域中;
键值删除模块,用于删除队列中的所述键值;
数据获取模块,用于根据所述存储区域中的所述键值,获取所述键值对应的数据;以及
数据写入模块,用于将获取的数据写入共享内存中。
A10、如权利要求A9所述的装置,其特征在于,还包括:
校验值确定模块,用于根据数据获取模块获取的数据,确定所述数据对应的校验值;
校验值写入模块,用于将所述数据对应的校验值写入共享内存中。
A11、如权利要求A10所述的装置,其特征在于,校验值确定模块,具体用于:
通过信息摘要算法确定所述数据对应的校验值。
A12、如权利要求A9所述的装置,其特征在于,数据获取模块,具体用于:
从协调服务器Zookeeper中获取所述键值对应的数据。
A13、如权利要求A9所述的装置,其特征在于,键值读取模块,具体用于:通过第一线程读取队列中的键值;
数据获取模块,具体用于:通过第二线程获取所述键值对应的数据。
本发明包括A14、一种数据读取装置,其包括:
键值写入模块,用于向队列中写入待读取的数据对应的键值;
数据读取模块,用于从共享内存中读取所述键值对应的数据;
所述共享内存中的所述键值对应的数据是由写进程从所述队列中读取所述键值后,根据所述键值获取并写入所述共享内存中的;其中,所述写进程从所述队列中读取所述键值后,将所述键值保存在预设的存储区域中,并删除所述队列中的所述键值。
A15、如权利要求A14所述的装置,其特征在于,还包括:
第一校验值确定模块,用于根据数据读取模块读取的数据,确定所述数据对应的第一校验值;
第二校验值读取模块,用于从共享内存中读取所述数据对应的第二校验值;
数据读取模块还用于,当所述第一校验值与第二校验值不匹配时,再次从共享内存中读取所述键值对应的数据,直至确定读取的数据的第一校验值与所述第二校验值匹配为止,
其中,所述第二校验值是由写入所述数据的写进程写入所述共享内存中的。
A16、如权利要求A15所述的装置,其特征在于,第一校验值确定模块,具体用于:通过信息摘要算法确定所述数据对应的第一校验值。
Claims (10)
1.一种数据写入方法,其包括:
读取队列中的键值;
将读取的所述键值保存在预设的存储区域中,并删除队列中的所述键值;
根据所述存储区域中的所述键值,获取所述键值对应的数据;以及
将获取的数据写入共享内存中。
2.如权利要求1所述的方法,其特征在于,还包括:
根据获取的数据,确定所述数据对应的校验值;以及
将所述数据对应的校验值写入共享内存中。
3.如权利要求2所述的方法,其特征在于,根据获取的数据,确定所述数据对应的校验值,具体包括:
通过信息摘要算法确定所述数据对应的校验值。
4.如权利要求1所述的方法,其特征在于,获取所述键值对应的数据,具体包括:
从协调服务器Zookeeper中获取所述键值对应的数据。
5.如权利要求1所述的方法,其特征在于,读取队列中的键值,具体包括:
通过第一线程读取队列中的键值;
获取所述键值对应的数据,具体包括:
通过第二线程获取所述键值对应的数据。
6.一种数据读取方法,其包括:
向队列中写入待读取的数据对应的键值;
从共享内存中读取所述键值对应的数据;
所述共享内存中的所述键值对应的数据是由写进程在从所述队列中读取所述键值后,根据所述键值获取并写入所述共享内存中的;其中,所述写进程从所述队列中读取所述键值后,将所述键值保存在预设的存储区域中,并删除所述队列中的所述键值。
7.如权利要求6所述的方法,其特征在于,还包括:
根据读取的数据,确定所述数据对应的第一校验值;
从共享内存中读取所述数据对应的第二校验值;
当所述第一校验值与第二校验值不匹配时,再次从共享内存中读取所述键值对应的数据,直至确定读取的数据的第一校验值与所述第二校验值匹配为止,
其中,所述第二校验值是由写入所述数据的写进程写入所述共享内存中的。
8.如权利要求7所述的方法,其特征在于,根据读取的数据,确定所述数据对应的第一校验值,具体包括:
通过信息摘要算法确定所述数据对应的第一校验值。
9.一种数据写入装置,其包括:
键值读取模块,用于读取队列中的键值;
键值存储模块,用于将读取的所述键值保存在预设的存储区域中;
键值删除模块,用于删除队列中的所述键值;
数据获取模块,用于根据所述存储区域中的所述键值,获取所述键值对应的数据;以及
数据写入模块,用于将获取的数据写入共享内存中。
10.如权利要求9所述的装置,其特征在于,还包括:
校验值确定模块,用于根据数据获取模块获取的数据,确定所述数据对应的校验值;
校验值写入模块,用于将所述数据对应的校验值写入共享内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410768410.0A CN104391662B (zh) | 2014-12-12 | 2014-12-12 | 一种数据读写方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410768410.0A CN104391662B (zh) | 2014-12-12 | 2014-12-12 | 一种数据读写方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104391662A true CN104391662A (zh) | 2015-03-04 |
CN104391662B CN104391662B (zh) | 2018-02-09 |
Family
ID=52609573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410768410.0A Active CN104391662B (zh) | 2014-12-12 | 2014-12-12 | 一种数据读写方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104391662B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106713450A (zh) * | 2016-12-21 | 2017-05-24 | 广州优视网络科技有限公司 | 基于读写分离模式的下载提速方法及装置 |
CN106897278A (zh) * | 2015-12-17 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 用于键值数据库的数据读写处理方法及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010023467A1 (en) * | 1995-01-23 | 2001-09-20 | Fishler Leonard R. | Efficient transfer of data and events between processes and between processes and drivers in a parallel, fault tolerant message based operating system |
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件系统的接口系统与文件读、写方法 |
CN101739301A (zh) * | 2009-12-09 | 2010-06-16 | 南京联创科技集团股份有限公司 | Unix环境下进程间大量数据传输的方法 |
CN103064748A (zh) * | 2013-01-05 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种Linux下处理多进程间通讯的方法 |
CN103645942A (zh) * | 2013-12-12 | 2014-03-19 | 北京奇虎科技有限公司 | 基于消息队列的共享内存写入及读取方法和系统 |
CN103747072A (zh) * | 2013-12-30 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种读写数据的方法和应用服务器 |
CN103761141A (zh) * | 2013-12-13 | 2014-04-30 | 北京奇虎科技有限公司 | 一种实现消息队列的方法及装置 |
CN104077368A (zh) * | 2014-06-18 | 2014-10-01 | 国电南瑞科技股份有限公司 | 一种调度监控系统历史数据两级缓存多阶段提交方法 |
-
2014
- 2014-12-12 CN CN201410768410.0A patent/CN104391662B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010023467A1 (en) * | 1995-01-23 | 2001-09-20 | Fishler Leonard R. | Efficient transfer of data and events between processes and between processes and drivers in a parallel, fault tolerant message based operating system |
CN101382953A (zh) * | 2008-09-19 | 2009-03-11 | 中兴通讯股份有限公司 | 在用户空间访问文件系统的接口系统与文件读、写方法 |
CN101739301A (zh) * | 2009-12-09 | 2010-06-16 | 南京联创科技集团股份有限公司 | Unix环境下进程间大量数据传输的方法 |
CN103064748A (zh) * | 2013-01-05 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种Linux下处理多进程间通讯的方法 |
CN103645942A (zh) * | 2013-12-12 | 2014-03-19 | 北京奇虎科技有限公司 | 基于消息队列的共享内存写入及读取方法和系统 |
CN103761141A (zh) * | 2013-12-13 | 2014-04-30 | 北京奇虎科技有限公司 | 一种实现消息队列的方法及装置 |
CN103747072A (zh) * | 2013-12-30 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种读写数据的方法和应用服务器 |
CN104077368A (zh) * | 2014-06-18 | 2014-10-01 | 国电南瑞科技股份有限公司 | 一种调度监控系统历史数据两级缓存多阶段提交方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897278A (zh) * | 2015-12-17 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 用于键值数据库的数据读写处理方法及设备 |
CN106713450A (zh) * | 2016-12-21 | 2017-05-24 | 广州优视网络科技有限公司 | 基于读写分离模式的下载提速方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104391662B (zh) | 2018-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112000741B (zh) | 内外网数据交换系统、方法、装置、计算机设备和介质 | |
US9697063B2 (en) | Allocating data based on hardware faults | |
US10210190B1 (en) | Roll back of scaled-out data | |
US11816224B2 (en) | Assessing and managing computational risk involved with integrating third party computing functionality within a computing system | |
US20190087208A1 (en) | Method and apparatus for loading elf file of linux system in windows system | |
US10776118B2 (en) | Index based memory access using single instruction multiple data unit | |
US8806277B1 (en) | Systems and methods for fetching troubleshooting data | |
US20150154248A1 (en) | Representing multidimensionality of a data table | |
CN113867645A (zh) | 数据迁移和数据读写方法、装置、计算机设备及存储介质 | |
CN109271789A (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
US9378230B1 (en) | Ensuring availability of data in a set being uncorrelated over time | |
CN110134538B (zh) | 快速定位问题日志的方法、装置、介质和电子设备 | |
CN104391662A (zh) | 一种数据读写方法及装置 | |
US20160154864A1 (en) | Remote processing of memory and files residing on endpoint computing devices from a centralized device | |
CN111694684A (zh) | 存储设备的异常构造方法、装置、电子设备及存储介质 | |
CN110928941B (zh) | 一种数据分片抽取方法及装置 | |
CN106547478A (zh) | 进程的io吞吐量监控方法和装置 | |
CN107463638A (zh) | 离线虚拟机间文件共享方法和设备 | |
US10452273B2 (en) | Preemptive event-based data migration | |
US10031811B1 (en) | Systems and methods for enhancing electronic discovery searches | |
CN104317645A (zh) | 一种应用程序实例监听端口的方法及装置 | |
CN106815001B (zh) | 配置文件信息的检测方法及装置 | |
CN110347333A (zh) | 提高克隆镜像性能的方法、装置、计算机设备及存储介质 | |
CN114036171B (zh) | 应用数据管理方法、装置、计算机设备和存储介质 | |
US9329976B1 (en) | Application development via a multi-unit device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220715 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |