CN105630612B - 进程更新方法和装置 - Google Patents

进程更新方法和装置 Download PDF

Info

Publication number
CN105630612B
CN105630612B CN201410608827.0A CN201410608827A CN105630612B CN 105630612 B CN105630612 B CN 105630612B CN 201410608827 A CN201410608827 A CN 201410608827A CN 105630612 B CN105630612 B CN 105630612B
Authority
CN
China
Prior art keywords
shared memory
key
data
memory block
value data
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.)
Active
Application number
CN201410608827.0A
Other languages
English (en)
Other versions
CN105630612A (zh
Inventor
尹鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410608827.0A priority Critical patent/CN105630612B/zh
Publication of CN105630612A publication Critical patent/CN105630612A/zh
Application granted granted Critical
Publication of CN105630612B publication Critical patent/CN105630612B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种进程更新方法和装置。其中,进程更新方法包括:获取共享内存组的状态信息,其中,共享内存组包括至少两个共享内存块,每个共享内存块均存储有进程的键‑值数据;根据状态信息确定共享内存组中每个共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块;以及在第一共享内存块处于被调用状态时更新第二共享内存块中的键‑值数据。通过本发明,解决了现有技术中键‑值数据的加载方式导致进程更新不灵活的问题,进而达到了提高进程更新灵活性的效果。

Description

进程更新方法和装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种进程更新方法和装置。
背景技术
一般而言,进程的运行过程都需要加载一定数量的键-值(key-value)数据。例如:游戏进程会加载各个道具的价格、搜索引擎进程会加载离线挖掘的词典等等。
当一个进程需要加载key-value数据时,通常的方法是:
1)进程启动时从数据源读取数据,然后在进程内部进行转换并构建自己的私有数据结构;
2)源数据更新时,进程销毁旧的数据结构,并重新执行构建程序。
受key-value数据存储方式的限定,按照上述方式加载key-value数据的过程,每次进程启动都需要重新构建数据,更新线程和服务线程的相互影响,导致进程启动慢,恢复慢,进而造成进程更新不灵活。
针对相关技术中键-值数据的加载方式导致进程更新不灵活的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种进程更新方法和装置,以至少解决键-值数据的加载方式导致进程更新不灵活的技术问题。
根据本发明实施例的一个方面,提供了一种进程更新方法。
根据本发明实施例的进程更新方法包括:获取共享内存组的状态信息,其中,所述共享内存组包括至少两个共享内存块,每个所述共享内存块均存储有所述进程的键-值数据;根据所述状态信息确定所述共享内存组中每个所述共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块;以及在所述第一共享内存块处于被调用状态时更新所述第二共享内存块中的所述键-值数据。
根据本发明实施例的另一方面,还提供了一种进程更新装置。
根据本发明实施例的进程更新装置包括:第一获取单元,用于获取共享内存组的状态信息,其中,所述共享内存组包括至少两个共享内存块,每个所述共享内存块均存储有所述进程的键-值数据;第一确定单元,用于根据所述状态信息确定所述共享内存组中每个所述共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块;以及更新单元,用于在所述第一共享内存块处于被调用状态时更新所述第二共享内存块中的所述键-值数据。
在本发明实施例中,采用获取共享内存组的状态信息,其中,所述共享内存组包括至少两个共享内存块,每个所述共享内存块均存储有所述进程的键-值数据;根据所述状态信息确定所述共享内存组中每个所述共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块;以及在所述第一共享内存块处于被调用状态时更新所述第二共享内存块中的所述键-值数据。通过利用共享内存组存储进程的键-值数据,在一个共享内存块处于被调用状态时更新另一个共享内存块中的键值-数据,实现了在一个共享内存块提供服务的时候,可以对另一个共享内存块中的键-值数据进行更新,这样,在进程重启时,只需从共享内存组进行键-值数据的加载即可,无需再次从数据源读取数据并构建自己的私有数据结构;并且,基于共享内存组加载键-值数据的方式,实现了更新线程和服务线程的相互独立,对进程键-值数据的在线更新不影响服务,解决了现有技术中键-值数据的加载方式导致进程更新不灵活的问题,进而达到了提高进程更新灵活性的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的进程更新方法的硬件环境图;
图2是根据本发明实施例的进程更新方法的流程图;
图3是根据本发明实施例的进程更新方法中共享内存组的一种结构示意图;
图4是根据本发明实施例的进程更新方法中共享内存组的另一种结构示意图;
图5是根据本发明实施例的进程更新方法中第三共享内存块的结构示意图;
图6是根据本发明实施例的进程更新装置的示意图;以及
图7是根据本发明实施例的进程更新方法的终端的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
对本发明实施例中所涉及的技术术语做如下解释:
共享内存(shm):Linux操作系统中一种进程通讯方式,多个进程可以共享一块内存空间。共享内存由操作系统维护,进程碰撞不会导致共享内存销毁。
共享内存key(shm key):Linux操作系统中,每个shm都由一个独一无二的shm key表示。
hash表:一种支持快速查找的数据结构,但是会有key冲突的问题。
开链法:解决Hash表key冲突的一种方式。
信号量锁(sem lock):Linux系统中一种多进程之间的通信方式,可以用于保护敏感数据不被多个进程写乱。
实施例1
根据本发明实施例,提供了一种可以通过本申请装置实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种进程更新方法。
可选地,在本实施例中,上述进程更新方法可以应用于如图1所示的终端102和服务器104所构成的硬件环境中。如图1所示,终端102通过网络或数据线与服务器104进行连接,上述网络包括但不限于:广域网、城域网或局域网。
图2是根据本发明实施例的进程更新方法的流程图,如图2所示,该进程更新方法主要包括如下步骤S202至步骤S206:
S202:获取共享内存组的状态信息,其中,共享内存组包括至少两个共享内存块,每个共享内存块均存储有进程的键-值数据,在本发明实施例中,以共享内存组包括第一共享内存块和第二共享内存块,第一共享内存块和第二共享内存块均存储有进程的键-值数据为例做具体说明,即,将进程的键-值数据存储在具有多个共享内存块的共享内存组中,其中,状态信息主要包括共享内存组是否初始化的标志、共享内存块是否被使用的标志和共享内存组中正在被使用的共享内存块的关键字(shm_key)。
S204:根据状态信息确定共享内存组中每个共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块,因为状态信息中保存了正在提供服务(即,正在被使用)的共享内存块的关键字(shm_key),因此能够根据状态信息确定出共享内存组中哪块共享内存块处于被调用状态,哪块共享内存块处于未被调用状态,在本发明实施例中,以确定出的处于被调用状态的共享内存块为第一共享内存块、确定出的处于未被调用状态的共享内存块为第二共享内存块进行说明。
S206:在第一共享内存块处于被调用状态时更新第二共享内存块中的键-值数据,具体地,可以先清除处于未被调用状态的共享内存块中的键-值数据,然后再向这个共享内存块中填写新的键-值数据。
本发明实施例所提供的进程更新方法,通过利用共享内存组存储进程的键-值数据,在一个共享内存块处于被调用状态时更新另一个处于未被调用状态的共享内存块中的键值-数据,实现了在一个共享内存块提供服务的时候,可以对另一个共享内存块中的键-值数据进行更新,这样,在进程重启时,只需从共享内存组进行键-值数据的加载即可,无需再次从数据源读取数据并构建自己的私有数据结构;并且,基于共享内存组加载键-值数据的方式,实现了更新线程和服务线程的相互独立,对进程键-值数据的在线更新不影响服务,解决了现有技术中键-值数据的加载方式导致进程更新不灵活的问题,进而达到了提高进程更新灵活性的效果。
进一步地,在第一共享内存块处于被调用状态时更新处于未被调用状态的第二共享内存块中的键-值数据之后,本发明实施例的进程更新方法还包括:将第一共享内存块由被调用状态转换为未被调用状态,并将更新后的第二共享内存块由未被调用状态转换为被调用状态块。在对第二共享内存块中的键-值数据进行更新,实现对进程的在线更新后,通过对第一共享内存块和第二共享内存块的调用状态进行切换,实现对进程的检查更新。
优选地,在获取共享内存组的状态信息之前,本发明实施例的进程更新方法还包括:将共享内存组中的每个共享内存块均划分为第一存储区域、第二存储区域和第三存储区域,图3是根据本发明实施例的进程更新方法中共享内存组的一种结构示意图,如图3所示,第一共享内存块服务于更新线程L1,该第一共享内存块包括第一存储区域A11、第二存储区域A12和第三存储区域A13;第二共享内存块服务于服务线程L2,该第二共享内存块包括第一存储区域A21、第二存储区域A22和第三存储区域A23。然后,存储用于查找键-值数据的查找数据至第一存储区域,并存储键-值数据中的第一数据至第二存储区域,以及存储键-值数据中的第二数据至第三存储区域,其中,第一数据和第二数据组成键-值数据,在本发明实施例中,第一数据是键-值数据中的key数据,第二数据是键-值数据中的value数据,查找数据是对键-值数据进行md5sum(key)%N散列运算,得到的数据,该数据可以存储在第一存储区域的Hash桶中,即,以Hash表对键-值数据进行组织,共享内存块的三个存储区域依次分别为Hash Area、NodeArea和DataArea。
其中,Hash Area由n个Hash桶组成的,一对键-值数据通过md5sum(key)%N的算法散列运算后,存储到到其中一个Hash桶内,散列运算过程中key冲突通过开链法解决。图4是根据本发明实施例的进程更新方法中共享内存组的另一种结构示意图,如图4所示,示意性示出了第一存储区域包括n个Hash桶(HB1,HB2,…,HBn),其中,HB1中存储有两对键-值数据(KN1-V1和KN2-V2)的散列运算结果,HB2中存储有一对键-值数据(KN3-V3)的散列运算结果。
NodeArea存储键-值数据中的key数据。在将共享内存组中的每个共享内存块均划分为第一存储区域、第二存储区域和第三存储区域之后,本发明实施例的进程更新方法还包括:确定第二存储区域中用于存储第一数据的字节长度为预设定长,其中,存储键-值数据中的第一数据至第二存储区域包括:将第一数据的长度转换为预设定长;以及存储转换为预设定长后的第一数据至第二存储区域。即,为每对储键-值数据分配一个定长的字节来保存键-值数据中的key数据和value地址,这样可以将变长的value抽出使得记录变成定长,更方便管理。
DataArea存储键-值数据中的value数据,value数据的存储空间可以通过分配算符(Allocator)进行分配。
通过对共享内存块进行存储区域的划分,实现了以统一的数据结构对键-值数据进行存储,达到了提高键-值数据可移植性的效果。
优选地,在存储用于查找键-值数据的查找数据至第一存储区域,并存储键-值数据中的第一数据至第二存储区域,以及存储键-值数据中的第二数据至第三存储区域之后,本发明实施例的进程更新方法还包括:保存状态信息至与共享内存组相互独立的共享内存块(以下称作第三共享内存块);以及添加用于对状态信息的读写进行保护的信号量锁。图5是根据本发明实施例的进程更新方法中第三共享内存块的结构示意图,如图5所示,示意性示出了第三共享内存块中存储有n个共享内存组(ShmP1,ShmP2,…,ShmPn)的状态信息MD,其中,信号量锁(Sem LOCK,简称SL)保护着状态信息MD的读写进行保护。
通过添加用于保护状态信息的信号量锁,在添加用于对状态信息的读写进行保护的信号量锁之后,并且在对状态信息进行获取之前,需要先获取状态信息的信号量锁,如果获取不到,则表示共享内存块中的数据正在被第三方使用(比如:第三方正在更新共享内存块中的数据),但尚未使用完成,此种情况,当前操作者不能对共享内存块中的数据进行操作,需要退出操作,实现了避免多方同时对共享内存块中数据进行操作所带来的冲突,进而达到了提高共享内存块进行数据共享的稳定性。
相应地,在更新处于未被调用状态的共享内存块中的数据之后,本发明实施例的进程更新方法还包括:释放信号量锁。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述进程更新方法的进程更新装置,该进程更新装置主要用于执行本发明实施例上述内容所提供的进程更新方法,以下对本发明实施例所提供的进程更新装置做具体介绍:
图6是根据本发明实施例的进程更新装置的示意图,如图6所示,该进程更新装置主要包括第一获取单元10、第一确定单元20和更新单元30,其中:
第一获取单元10用于获取共享内存组的状态信息,其中,共享内存组包括至少两个共享内存块,每个共享内存块均存储有进程的键-值数据,在本发明实施例中,以共享内存组包括第一共享内存块和第二共享内存块,第一共享内存块和第二共享内存块均存储有进程的键-值数据为例做具体说明,即,将进程的键-值数据存储在具有多个共享内存块的共享内存组中,其中,状态信息主要包括共享内存组是否初始化的标志、共享内存块是否被使用的标志和共享内存组中正在被使用的共享内存块的关键字(shm_key)。
第一确定单元20用于根据状态信息确定共享内存组中每个共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块,因为状态信息中保存了正在提供服务(即,正在被使用)的共享内存块的关键字(shm_key),因此能够根据状态信息确定出共享内存组中哪块共享内存块处于被调用状态,哪块共享内存块处于未被调用状态,在本发明实施例中,以确定出的处于被调用状态的共享内存块为第一共享内存块、确定出的处于未被调用状态的共享内存块为第二共享内存块进行说明。
更新单元30用于在第一共享内存块处于被调用状态时更新第二共享内存块中的键-值数据,具体地,可以先清除处于未被调用状态的共享内存块中的键-值数据,然后再向这个共享内存块中填写新的键-值数据。
本发明实施例所提供的进程更新装置,通过利用共享内存组存储进程的键-值数据,在一个共享内存块处于被调用状态时更新另一个处于未被调用状态的共享内存块中的键值-数据,实现了在一个共享内存块提供服务的时候,可以对另一个共享内存块中的键-值数据进行更新,这样,在进程重启时,只需从共享内存组进行键-值数据的加载即可,无需再次从数据源读取数据并构建自己的私有数据结构;并且,基于共享内存组加载键-值数据的方式,实现了更新线程和服务线程的相互独立,对进程键-值数据的在线更新不影响服务,解决了现有技术中键-值数据的加载方式导致进程更新不灵活的问题,进而达到了提高进程更新灵活性的效果。
进一步地,本发明实施例的进程更新装置还包括转换单元,在第一共享内存块处于被调用状态时更新处于未被调用状态的第二共享内存块中的键-值数据之后,转换单元用于将第一共享内存块由被调用状态转换为未被调用状态,并将更新后的第二共享内存块由未被调用状态转换为被调用状态块。在对第二共享内存块中的键-值数据进行更新,实现对进程的在线更新后,通过对第一共享内存块和第二共享内存块的调用状态进行切换,实现对进程的检查更新。
优选地,本发明实施例的进程更新装置还包括划分单元和存储单元,在获取共享内存组的状态信息之前,划分单元用于将共享内存组中的每个共享内存块均划分为第一存储区域、第二存储区域和第三存储区域,图3是根据本发明实施例的进程更新方法中共享内存组的一种结构示意图,如图3所示,第一共享内存块服务于更新线程L1,该第一共享内存块包括第一存储区域A11、第二存储区域A12和第三存储区域A13;第二共享内存块服务于服务线程L2,该第二共享内存块包括第一存储区域A21、第二存储区域A22和第三存储区域A23。存储单元用于存储用于查找键-值数据的查找数据至第一存储区域,并存储键-值数据中的第一数据至第二存储区域,以及存储键-值数据中的第二数据至第三存储区域,其中,第一数据和第二数据组成键-值数据,在本发明实施例中,第一数据是键-值数据中的key数据,第二数据是键-值数据中的value数据,查找数据是通过进程更新装置中的运算单元对键-值数据进行md5sum(key)%N散列运算,得到的数据,该数据可以存储在第一存储区域的Hash桶中,即,以Hash表对键-值数据进行组织,共享内存块的三个存储区域依次分别为HashArea、NodeArea和DataArea。
其中,Hash Area由n个Hash桶组成的,一对键-值数据通过md5sum(key)%N的算法散列运算后,存储到到其中一个Hash桶内,散列运算过程中key冲突通过开链法解决。图4是根据本发明实施例的进程更新方法中共享内存组的另一种结构示意图,如图4所示,示意性示出了第一存储区域包括n个Hash桶(HB1,HB2,…,HBn),其中,HB1中存储有两对键-值数据(KN1-V1和KN2-V2)的散列运算结果,HB2中存储有一对键-值数据(KN3-V3)的散列运算结果。
NodeArea存储键-值数据中的key数据。本发明实施例的进程更新装置还包括第二确定单元,在将共享内存组中的每个共享内存块均划分为第一存储区域、第二存储区域和第三存储区域之后,第二确定单元用于确定第二存储区域中用于存储第一数据的字节长度为预设定长,对应地,存储单元包括转换模块和存储模块,其中,转换模块用于将第一数据的长度转换为预设定长;存储模块用于存储转换为预设定长后的第一数据至第二存储区域。即,为每对储键-值数据分配一个定长的字节来保存键-值数据中的key数据和value地址,这样可以将变长的value抽出使得记录变成定长,更方便管理。
DataArea存储键-值数据中的value数据,value数据的存储空间可以通过分配算符(Allocator)进行分配。
通过对共享内存块进行存储区域的划分,实现了以统一的数据结构对键-值数据进行存储,达到了提高键-值数据可移植性的效果。
优选地,本发明实施例的进程更新装置还包括保存单元和添加单元,在存储用于查找键-值数据的查找数据至第一存储区域,并存储键-值数据中的第一数据至第二存储区域,以及存储键-值数据中的第二数据至第三存储区域之后,保存单元用于保存状态信息至与共享内存组相互独立的共享内存块(以下称作第三共享内存块);添加单元用于添加用于对状态信息的读写进行保护的信号量锁。图5是根据本发明实施例的进程更新方法中第三共享内存块的结构示意图,如图5所示,示意性示出了第三共享内存块中存储有n个共享内存组(ShmP1,ShmP2,…,ShmPn)的状态信息MD,其中,信号量锁(Sem LOCK,简称SL)保护着状态信息MD的读写进行保护。
通过添加用于保护状态信息的信号量锁,在添加用于对状态信息的读写进行保护的信号量锁之后,并且在对状态信息进行获取之前,需要先通过进程更新装置中的第二获取单元获取状态信息的信号量锁,如果获取不到,则表示共享内存块中的数据正在被第三方使用(比如:第三方正在更新共享内存块中的数据),但尚未使用完成,此种情况,当前操作者不能对共享内存块中的数据进行操作,需要退出操作,实现了避免多方同时对共享内存块中数据进行操作所带来的冲突,进而达到了提高共享内存块进行数据共享的稳定性。
相应地,在更新处于未被调用状态的共享内存块中的数据之后,通过进程更新装置中的释放单元释放信号量锁。
从以上的描述中,可以看出,本发明实现了对多种类型的键-值数据进行统一管理;基于共享内存,进程重启不需要重新构建数据;多进程可以共享一份数据;对内存进行配置化的使用控制。
实施例3
根据本发明实施例,还提供了一种用于实施上述进程更新方法的终端,如图7所示,该终端主要包括处理器701、显示器702、数据接口703、存储器704和网络接口705,其中:
显示器702主要用于对进程更新方法中的相关显示内容进行显示。
数据接口703主要用户连接外接设备,以向用户提供一种进行外接设备进行信息输入的方式。
存储器704主要用于存储进程更新方法中产生的中间文件。
网络接口705主要用于与服务器104进行网络通信。
处理器701主要用于执行如下操作:
获取共享内存组的状态信息,其中,共享内存组包括至少两个共享内存块,每个共享内存块均存储有进程的键-值数据;根据状态信息确定共享内存组中每个共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块;以及在第一共享内存块处于被调用状态时更新第二共享内存块中的键-值数据。
处理器701还用于将第一共享内存块由被调用状态转换为未被调用状态,并将更新后的第二共享内存块由未被调用状态转换为被调用状态块。
处理器701还用于将共享内存组中的每个共享内存块均划分为第一存储区域、第二存储区域和第三存储区域;以及存储用于查找键-值数据的查找数据至第一存储区域,并存储键-值数据中的第一数据至第二存储区域,以及存储键-值数据中的第二数据至第三存储区域,其中,第一数据和第二数据组成键-值数据。
处理器701还用于保存状态信息至与共享内存组相互独立的共享内存块;以及添加用于对状态信息的读写进行保护的信号量锁。
处理器701还用于在添加用于对状态信息的读写进行保护的信号量锁之后,并且在获取共享内存组的状态信息之前,进程更新方法还包括:获取信号量锁,在更新处于未被调用状态的共享内存块中的数据之后,进程更新方法还包括:释放信号量锁。
处理器701还用于确定第二存储区域中用于存储第一数据的字节长度为预设定长,其中,存储键-值数据中的第一数据至第二存储区域包括:将第一数据的长度转换为预设定长;以及存储转换为预设定长后的第一数据至第二存储区域。
处理器701还用于对键-值数据进行散列运算,得到查找数据。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例进程更新方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取共享内存组的状态信息,其中,共享内存组包括至少两个共享内存块,每个共享内存块均存储有进程的键-值数据;
S2,根据状态信息确定共享内存组中每个共享内存块的调用状态,以确定处于被调用状态的第一共享内存块和处于未被调用状态的第二共享内存块;
S3,在第一共享内存块处于被调用状态时更新第二共享内存块中的键-值数据。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行将第一共享内存块由被调用状态转换为未被调用状态,并将更新后的第二共享内存块由未被调用状态转换为被调用状态块。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行将共享内存组中的每个共享内存块均划分为第一存储区域、第二存储区域和第三存储区域;以及存储用于查找键-值数据的查找数据至第一存储区域,并存储键-值数据中的第一数据至第二存储区域,以及存储键-值数据中的第二数据至第三存储区域,其中,第一数据和第二数据组成键-值数据。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行保存状态信息至与共享内存组相互独立的共享内存块;以及添加用于对状态信息的读写进行保护的信号量锁。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行在添加用于对状态信息的读写进行保护的信号量锁之后,并且在获取共享内存组的状态信息之前,进程更新方法还包括:获取信号量锁,在更新处于未被调用状态的共享内存块中的数据之后,进程更新方法还包括:释放信号量锁。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行确定第二存储区域中用于存储第一数据的字节长度为预设定长,其中,存储键-值数据中的第一数据至第二存储区域包括:将第一数据的长度转换为预设定长;以及存储转换为预设定长后的第一数据至第二存储区域。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行对键-值数据进行散列运算,得到查找数据。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种进程更新方法,其特征在于,包括:
获取共享内存组的状态信息,其中,所述共享内存组包括至少两个共享内存块,每个所述共享内存块均存储有进程的键-值数据;其中,所述状态信息包括所述共享内存组中正在被使用的共享内存块的关键字;
根据所述共享内存组中正在被使用的共享内存块的关键字的状态信息确定所述共享内存组中每个所述共享内存块的调用状态,以确定出处于被调用状态的共享内存块为第一共享内存块和以确定出处于未被调用状态的共享内存块为第二共享内存块;以及
在所述第一共享内存块处于被调用状态时更新所述第二共享内存块中的所述键-值数据;所述更新所述第二共享内存块中的所述键-值数据包括先清除所述第二共享内存块中的键-值数据,再向所述第二共享内存块中填写新的键-值数据;
将所述第一共享内存块由被调用状态转换为未被调用状态,并将更新后的所述第二共享内存块由未被调用状态转换为被调用状态块。
2.根据权利要求1所述的进程更新方法,其特征在于,在获取共享内存组的状态信息之前,所述进程更新方法还包括:
将所述共享内存组中的每个所述共享内存块均划分为第一存储区域、第二存储区域和第三存储区域;以及
存储用于查找所述键-值数据的查找数据至所述第一存储区域,并存储所述键-值数据中的第一数据至所述第二存储区域,以及存储所述键-值数据中的第二数据至所述第三存储区域,其中,所述第一数据和所述第二数据组成所述键-值数据。
3.根据权利要求2所述的进程更新方法,其特征在于,在存储用于查找所述键-值数据的查找数据至所述第一存储区域,并存储所述键-值数据中的第一数据至所述第二存储区域,以及存储所述键-值数据中的第二数据至所述第三存储区域之后,所述进程更新方法还包括:
保存所述状态信息至与所述共享内存组相互独立的共享内存块;以及
添加用于对所述状态信息的读写进行保护的信号量锁。
4.根据权利要求3所述的进程更新方法,其特征在于,
在添加用于对所述状态信息的读写进行保护的信号量锁之后,并且在获取共享内存组的状态信息之前,所述进程更新方法还包括:获取所述信号量锁,
在更新处于未被调用状态的共享内存块中的数据之后,所述进程更新方法还包括:释放所述信号量锁。
5.根据权利要求2所述的进程更新方法,其特征在于,在将所述共享内存组中的每个所述共享内存块均划分为第一存储区域、第二存储区域和第三存储区域之后,所述进程更新方法还包括:
确定所述第二存储区域中用于存储所述第一数据的字节长度为预设定长,
其中,存储所述键-值数据中的第一数据至所述第二存储区域包括:将所述第一数据的长度转换为所述预设定长;以及存储转换为所述预设定长后的所述第一数据至所述第二存储区域。
6.根据权利要求2所述的进程更新方法,其特征在于,在存储用于查找所述键-值数据的查找数据至所述第一存储区域,并存储所述键-值数据中的第一数据至所述第二存储区域,以及存储所述键-值数据中的第二数据至所述第三存储区域之前,所述进程更新方法还包括:
对所述键-值数据进行散列运算,得到所述查找数据。
7.一种进程更新装置,其特征在于,包括:
第一获取单元,用于获取共享内存组的状态信息,其中,所述共享内存组包括至少两个共享内存块,每个所述共享内存块均存储有进程的键-值数据;其中,所述状态信息包括所述共享内存组中正在被使用的共享内存块的关键字;
第一确定单元,用于根据所述共享内存组中正在被使用的共享内存块的关键字的状态信息确定所述共享内存组中每个所述共享内存块的调用状态,以确定出处于被调用状态的共享内存块为第一共享内存块和以确定出处于未被调用状态的共享内存块为第二共享内存块;以及
更新单元,用于在所述第一共享内存块处于被调用状态时更新所述第二共享内存块中的所述键-值数据;所述更新所述第二共享内存块中的所述键-值数据包括先清除所述第二共享内存块中的键-值数据,再向所述第二共享内存块中填写新的键-值数据;
转换单元,用于将所述第一共享内存块由被调用状态转换为未被调用状态,并将更新后的所述第二共享内存块由未被调用状态转换为被调用状态块。
8.根据权利要求7所述的进程更新装置,其特征在于,所述进程更新装置还包括:
划分单元,用于将所述共享内存组中的每个所述共享内存块均划分为第一存储区域、第二存储区域和第三存储区域;以及
存储单元,用于存储用于查找所述键-值数据的查找数据至所述第一存储区域,并存储所述键-值数据中的第一数据至所述第二存储区域,以及存储所述键-值数据中的第二数据至所述第三存储区域,其中,所述第一数据和所述第二数据组成所述键-值数据。
9.根据权利要求8所述的进程更新装置,其特征在于,所述进程更新装置还包括:
保存单元,用于保存所述状态信息至与所述共享内存组相互独立的共享内存块;以及
添加单元,用于添加用于对所述状态信息的读写进行保护的信号量锁。
10.根据权利要求9所述的进程更新装置,其特征在于,所述进程更新装置还包括第二获取单元和释放单元,其中:
在所述添加单元添加用于对所述状态信息的读写进行保护的信号量锁之后,并且在所述第一获取单元获取共享内存组的状态信息之前,所述第二获取单元用于获取所述信号量锁,
在所述更新单元更新处于未被调用状态的共享内存块中的数据之后,所述释放单元用于释放所述信号量锁。
11.根据权利要求8所述的进程更新装置,其特征在于,所述进程更新装置还包括:第二确定单元,用于确定所述第二存储区域中用于存储所述第一数据的字节长度为预设定长,
所述存储单元包括:转换模块,用于将所述第一数据的长度转换为所述预设定长;以及存储模块,用于存储转换为所述预设定长后的所述第一数据至所述第二存储区域。
12.根据权利要求8所述的进程更新装置,其特征在于,所述进程更新装置还包括:
运算单元,用于对所述键-值数据进行散列运算,得到所述查找数据。
CN201410608827.0A 2014-10-31 2014-10-31 进程更新方法和装置 Active CN105630612B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410608827.0A CN105630612B (zh) 2014-10-31 2014-10-31 进程更新方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410608827.0A CN105630612B (zh) 2014-10-31 2014-10-31 进程更新方法和装置

Publications (2)

Publication Number Publication Date
CN105630612A CN105630612A (zh) 2016-06-01
CN105630612B true CN105630612B (zh) 2020-06-02

Family

ID=56045589

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410608827.0A Active CN105630612B (zh) 2014-10-31 2014-10-31 进程更新方法和装置

Country Status (1)

Country Link
CN (1) CN105630612B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110019005A (zh) * 2017-09-29 2019-07-16 北京嘀嘀无限科技发展有限公司 文件更新方法、装置、计算机设备和可读存储介质
CN111177143B (zh) * 2019-06-12 2024-04-12 腾讯科技(深圳)有限公司 键值数据存储方法、装置、存储介质与电子设备
CN111221668A (zh) * 2020-01-13 2020-06-02 北京奇艺世纪科技有限公司 一种rs信息更新方法、装置、电子设备及存储介质
CN113032162B (zh) * 2021-03-23 2023-10-24 重庆兰德适普信息科技有限公司 一种基于共享内存备份机制的多进程通讯方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164384A (zh) * 2011-12-15 2013-06-19 中国银联股份有限公司 多机系统共享内存的同步实现方法及其系统
CN103473314A (zh) * 2013-09-11 2013-12-25 北京思特奇信息技术股份有限公司 一种基于共享内存的键值对存储方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539199B2 (en) * 2010-03-12 2013-09-17 Lsi Corporation Hash processing in a network communications processor architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103164384A (zh) * 2011-12-15 2013-06-19 中国银联股份有限公司 多机系统共享内存的同步实现方法及其系统
CN103473314A (zh) * 2013-09-11 2013-12-25 北京思特奇信息技术股份有限公司 一种基于共享内存的键值对存储方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Dx.Yang.Node.js - 利用进程通信实现Cluster共享内存.《xbingoz.com》.2014,第2页. *
Node.js - 利用进程通信实现Cluster共享内存;Dx.Yang;《xbingoz.com》;20140408;第2页 *

Also Published As

Publication number Publication date
CN105630612A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
US10175894B1 (en) Method for populating a cache index on a deduplicated storage system
CN111176976B (zh) 测试数据的生成方法和装置、存储介质及电子装置
CN107045422B (zh) 分布式存储方法和设备
CN105630612B (zh) 进程更新方法和装置
US9489210B2 (en) Implementing configuration preserving relocation of SRIOV adapter
US7877570B2 (en) Consolidation of matching memory pages
US20210081388A1 (en) Methods, apparatuses and computer program products for managing metadata of storage object
CN108255989B (zh) 图片存储方法、装置、终端设备及计算机存储介质
CN106776795B (zh) 基于Hbase数据库的数据写入方法及装置
US11782878B2 (en) Systems and methods for searching deduplicated data
US10503717B1 (en) Method for locating data on a deduplicated storage system using a SSD cache index
CN107085613B (zh) 入库文件的过滤方法和装置
US20130185536A1 (en) Hash-based managing of storage identifiers
CN109271367A (zh) 分布式文件系统多节点快照回滚方法及系统
CN104182532B (zh) 终端文件的清理方法、装置及终端
US10248677B1 (en) Scaling an SSD index on a deduplicated storage system
US9588758B1 (en) Identifying user managed software modules
CN106528876B (zh) 分布式系统的信息处理方法及分布式信息处理系统
CN104063377A (zh) 信息处理方法和使用其的电子设备
CN112269665B (zh) 内存的处理方法和装置、电子设备和存储介质
US20210294511A1 (en) Direct Data Placement
US20220027335A1 (en) Active-active system index management
CN103870603A (zh) 目录管理方法和电子设备
US11113237B1 (en) Solid state cache index for a deduplicate storage system
US10289307B1 (en) Method for handling block errors on a deduplicated storage system

Legal Events

Date Code Title Description
C06 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