CN107391269A - 一种用于通过持久化队列处理消息的方法与设备 - Google Patents
一种用于通过持久化队列处理消息的方法与设备 Download PDFInfo
- Publication number
- CN107391269A CN107391269A CN201710193817.9A CN201710193817A CN107391269A CN 107391269 A CN107391269 A CN 107391269A CN 201710193817 A CN201710193817 A CN 201710193817A CN 107391269 A CN107391269 A CN 107391269A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- persistence
- write
- preposition
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种用于通过持久化队列处理消息的方法与设备。具体地,根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;根据读消息请求从所述内存队列读取并处理对应第二消息;在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。与现有技术相比,本申请中增加持久化队列对应的前置缓存,通过将消息写入持久化队列对应的前置缓存及内存队列,并在处理时从所述内存队列读取并处理,最终在消息被处理完成后,将消息从所述前置缓存中删除,减少了消息从持久化队列对应文件***的读写次数,减少了IO操作,提升了消息的处理速度。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种用于通过持久化队列处理消息的技术。
背景技术
随着时代的发展,数据消息处理量日益增大,为保障数据消息处理的过程中数据的安全,避免出现因程序重启等原因造成的内存队列数据消息丢失,现有技术会布置由内存队列和文件***组成持久化队列,确保在程序重启等情况下数据消息被存储在文件存统中。然而,现有技术在处理数据消息时会出现从文件***中写入或读取的操作,产生大量的IO操作,使得数据消息的处理速度受限。
发明内容
本申请的一个目的是提供一种用于通过持久化队列处理消息的方法与设备,用以解决持久化队列处理消息速度受限的问题。
为实现上述目的,本申请提供了一种用于通过持久化队列处理消息的方法,该方法解决了持久化队列处理消息速度受限的问题,该方法包括:
根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存
队列;
根据读消息请求从所述内存队列读取并处理对应第二消息;
在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
为实现上述目的,本申请还提供了一种用于通过持久化队列处理消息的设备,该设备解决了持久化队列处理消息速度受限的问题,该设备包括:
消息写入装置,用于根据写消息请求将对应第一消息写入持久化队列对
应的前置缓存及内存队列;
消息处理装置,用于根据读消息请求从所述内存队列读取并处理对应第二消息;
消息再处理装置,用于在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
为实现上述目的,本申请还提供了一种用于通过持久化队列处理消息的设备,包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;
根据读消息请求从所述内存队列读取并处理对应第二消息;
在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
与现有技术相比,本申请中增加持久化队列对应的前置缓存,通过将消息写入持久化队列对应的前置缓存及内存队列,并在处理时从所述内存队列读取并处理,最终在消息被处理完成后,将消息从所述前置缓存中删除,减少了消息从持久化队列对应文件***的读写次数,减少了IO操作,提升了消息的处理速度。进一步地,在消息对应应用程序重启时,将所述前置缓存中的消息存储至所述文件***,保障消息在应用程序重启过程中的安全性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于通过持久化队列处理消息的方法流程图;
图2示出根据本申请一个优选实施例的步骤S3的方法流程图;
图3示出根据本申请另一个方面的一种用于通过持久化队列处理消息的方法流程图;
图4示出根据本申请又一个方面的一种用于通过持久化队列处理消息的设备示意图;
图5示出根据本申请另一个优选实施例的消息再处理装置的设备示意图;
图6示出根据本申请再一个方面的一种用于通过持久化队列处理消息的设备示意图;
图7示出根据本申请又一个优选实施例的示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请一个方面的一种用于通过持久化队列处理消息的方法流程图。所述方法包括步骤S1、步骤S2以及步骤S3。
其中,在步骤S1中设备1根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;在步骤S2中设备1根据读消息请求从所述内存队列读取并处理对应第二消息;在步骤S3中设备1在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
具体地,在步骤S1中设备1根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列。其中,所述消息是指调用持久化队列的用户待处理信息,所有可放入内存进行处理的数据消息均包含于此,图7中举例的各箭头方向是指所述消息的流转动向。所述写消息请求是指向持久化队列写入消息的请求、命令或相关接口,例如,在图7中所示的“PUSH”操作。所述第一消息是指尚未写入持久化队列对应模块中的消息。所述前置缓存是指用于快速读写和查找数据或信息的结构,前置缓存的读写和查找时间或空间复杂度都较低,在此,用于快速查找和读写消息,即如图7中的“前置缓存Map”即为前置缓存的示例。所述内存队列是指用于消息读写和查找的内存中的队列,例如图7中的“持久化队列内存Queue”。因此,根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列,即如图7所示是指根据写消息的请求“PUSH”将为写入过持久化队列的消息顺“PUSH”引出的箭头方向写入持久化队列对应的前置缓存和内存队列。在此,持久化队列是保障数据安全,防止数据在消息对应程序或应用在重启时丢失的模块,其通常对应内存队列以及相应的存储***或文件***,在此,还对应前置缓存,如图7所示虚线所框的范围即指持久化队列对应的两种情况,但不限于本例,其它由前置缓存、内存队列以及文件***三种模块的任意一种或几种构成的持久化队列均包含于此。优选地,所述第一消息写入持久化队列对应的前置缓存及内存队列的顺序,包括但不限于先写入前置缓存,然后写入内存队列;或者同时写入前置缓存以及内存队列。在持久化队列中设置对应的前置缓存,使得消息可以直接从前置缓存和内存队列中进行消息的读写、查找或删除等操作,从而在前置缓存的容量范围内可以不用进行文件或存储***的写入,从而降低IO操作的产生,提升消息的处理速度。
本领域技术人员应能理解上述第一消息写入持久化队列对应的前置缓存及内存队列的方式仅为举例,其他现有的或今后可能出现的第一消息写入持久化队列对应的前置缓存及内存队列的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述前置缓存的消息容量小于所述内存队列,即前置缓存的容量小于其对应的内存队列的容量,使得仅在在前置缓存和内存队列进行快速读写和处理的消息数量较少,当消息过多超出前置缓存容量后即结合持久化队列对应的文件***进行处理,从而保障数据的安全性。在此,前置缓存的消息容量可根据具体的消息对应的应用情况进行调节。
更优选地,所述前置缓存基于哈希映射结构,即所述前置缓存是一种快速的哈希映射结构,对消息的读写、查找等操作的时间复杂度均为O(1),因为哈希映射结构是性能最快的字典类型,从而优选应用于前置缓存。在此,所述前置缓存所基于的结构包括但不限于哈希映射结构,例如树形结构等亦包含于此。
优选地,在步骤S1中设备1若持久化队列对应的前置缓存未满,根据写消息请求将对应第一消息写入所述前置缓存及所述持久化队列对应的内存队列;若所述前置缓存已满,将所述第一消息写入所述内存队列及所述持久化队列对应的文件***。所述持久化队列对应的文件***是指一种持久化的存储结构或模块,在读写时会产生IO操作,例如阿里巴巴集团在阿里云产品中所采用的盘古文件***,或图7中所示的“持久化队列RedoLog文件***”。在根据写消息请求将对应第一消息写入持久化队列对应的前置缓存的过程中,对前置缓存是否已满进行预警设置或进行容量检查,其中,获知前置缓存是否已满的方法包括但不限于此处举例,现有技术中对内存或快速读写结构进行检测的方式均包含于此。当所述前置缓存未满,则将所述第一消息写入所述前置缓存与所述持久化队列,即如图7中上方所示从“PUSH”请求中延伸的箭头抵达“前置缓存Map”以及“持久化队列内存Queue”,表示将消息写入箭头所抵达的模块;当所述前置缓存已满,则将所述第一消息写入所述内存队列以及所述持久化队列对应的文件***,即如图7中下方所示从“PUSH”请求中延伸的箭头抵达“持久化队列内存Queue”以及“持久化队列RedoLog文件***”,表示将消息写入箭头所抵达的模块。通过对所述前置缓存的容量进行判断,而选择第一消息不同的写入路径组合,使得前置满后,也就是***处理比较慢的情况下,则将消息在文件***进行保存,保障消息安全,一旦发生断电等故障,丢失是仅有MAP中少量消息,提升所述持久化队列的安全保障性能。
本领域技术人员应能理解上述根据所述前置缓存容量选择第一消息写入路径组合的方式仅为举例,其他现有的或今后可能出现的根据所述前置缓存容量选择第一消息写入路径组合的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S2中设备1根据读消息请求从所述内存队列读取并处理对应第二消息。其中,所述第二消息是指已被写入所述持久化队列中的消息,包括但不限于写入持久化队列的组成模块中的任意一个或多个。所述读消息请求是指向持久化队列读取消息的请求、命令或相关接口,例如,在图7中所示的“POP”操作。根据读消息请求从所述内存队列读取并处理对应第二消息,即指将消息从内存队列中取出并进行处理,在此,处理消息是根据消息所携带的信息将消息进行相应处理操作,例如为调用所述持久化队列的用户取出消息进行处理,即如图7中所示箭头顺“持久化队列内存Queue”指向“POP”操作的接口,表示消息从内存队列中取出进行处理。将所述第二消息从所述内存队列中取出进行处理的过程中,所述消息是从内存直接读取,不产生存储或文件***的读写,即不产生IO操作,从而使得取出处理速度快。
本领域技术人员应能理解上述根据读消息请求从所述内存队列读取并处理对应第二消息的方式仅为举例,其他现有的或今后可能出现的根据读消息请求从所述内存队列读取并处理对应第二消息的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S3中设备1在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。即将处理完成后的消息从所述前置缓存中删除,从而释放前置缓存中的空间,避免前置缓存容量已满后溢出,或转而进行持久化队列对应的文件***的写入,导致处理消息的速度变慢。其中,对所述第二消息处理完成后进行删除或其它操作的再处理工作的进程可由固定命令或接口完成但不限于此,例如图7上方所示,设置“DONE”操作接口,在消息处理完成后对“前置缓存Map”中的已处理消息进行删除。在所述前置缓存直接进行已处理完成消息的删除,使得删除工作也在快速读写结构中进行,从而免去在存储或文件***中标记或查找产生的IO操作,从而提升消息处理的速度。
本领域技术人员应能理解上述对处理完后的消息进行删除的方式仅为举例,其他现有的或今后可能出现的对处理完后的消息进行删除的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
图2示出根据本申请一个优选实施例的步骤S3的方法流程图。所述步骤S3包括步骤S31以及步骤S32。
其中,在步骤S31中设备1在所述第二消息被处理完成后,若所述第二消息未存在于所述文件***,将所述第二消息从所述前置缓存中清除;否则,在步骤S32中设备1将所述第二消息添加至所述持久化队列对应的消息完成文件。
具体地,在步骤S31中设备1在所述第二消息被处理完成后,若所述第二消息未存在于所述文件***,将所述第二消息从所述前置缓存中清除。其中,所述第二消息未存于所述文件***,是指所述消息在写入所述持久化队列后,未写入过持久化队列所对应的文件***。在此,检测消息是否存在于文件***的方式包括但不限于直接从文件***检查是否存在第二消息,或者在消息写入文件***时均记录在指定空间或文件中,在所述消息被处理完后对指定的空间或文件进行检测。如图7中所示的持久化队列实例中,写入“持久化队列RedoLog文件***”的消息均列入指定的in文件,“DONE”操作即检测in文件中是否存在处理完成后的消息,若未存在,则直接从“前置缓存Map”中删除所述第二消息,即图7上方的“DONE”操作所示的过程。
本领域技术人员应能理解上述检测消息是否存在于文件***的方式仅为举例,其他现有的或今后可能出现的检测消息是否存在于文件***的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S32中设备1在所述第二消息被处理完成后,若所述第二消息存在于所述文件***,将所述第二消息添加至所述持久化队列对应的消息完成文件。其中,所述持久化队列对应的消息完成文件是指保存于持久化队列中的用于记录已完成处理消息信息的文件,优选地,将所述消息完成文件保存于持久化队列对应的文件***,从而避免断电等故障情况下丢失所述消息完成文件。同样,检测消息是否存在于文件***的方式包括但不限于直接从文件***检查是否存在第二消息,或者在消息写入文件***时均记录在指定空间或文件中,在所述消息被处理完后对指定的空间或文件进行检测。如图7中所示的持久化队列实例中,写入“持久化队列RedoLog文件***”的消息均列入指定的in文件,优选地,in文件存储于所述文件***中,避免断电等故障导致文件丢失,“DONE”操作即为检测in文件中是否存在处理完成后的消息,若存在,则将所述第二消息的相关信息或直接将所述第二消息添加至ou文件,在此ou文件即为所述消息完成文件的举例,即图7下方的“DONE”操作所示的过程,顺着箭头方向指向“持久化队列RedoLog文件***”,将完成处理的消息写入其中的ou文件中。
在此,判断处理后的所述第二消息是否存在文件***中并对所述第二消息进行不同情况下的再处理,使得所述持久化队列更为灵活,可以兼容前置缓存和文件***并存情况下的处理完消息的再处理过程,即前置缓存中的消息直接删除不留记录,提升消息处理速度,在文件***中写入过的消息在处理后均进行记录,从而保障消息的安全。
本领域技术人员应能理解上述判断处理后的所述第二消息是否存在文件***中的方式仅为举例,其他现有的或今后可能出现的判断处理后的所述第二消息是否存在文件***中的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
进一步地,所述方法还包括步骤S4(未示出),其中,在步骤S4中设备1将所述持久化队列中未记录于所述消息完成文件的消息加载至所述内存队列。即在所述持久化队列中未记录于所述消息完成文件中的消息,均属于未处理过的消息或在重启或其它事件所致的处理过程中的消息未完成的情况,包括在前置缓存已满的情况下,将消息写入所述内存队列以及所述文件***,内存队列中的消息尚未取出处理或取出处理过程中,在突然断电或重启的情况下,会全部丢失,但因为在文件***中有备份,例如,保存于上文举例的in文件中,则将in文件中存在但ou文件中不存在的消息加载至内存队列,即可重新进行处理,为了避免重复处理,因此查询所述消息完成文件中是否有消息记载,将未有记载的消息进行处理,保障了数据的安全性。或结合下文所述的重启后所述持久化队列对应的前置缓存中的未处理消息均转存至文件***,此时,这些转存的消息也属于尚未处理的在所述消息完成文件中不存在的消息,从而可以在重启后继续对之前在前置缓存中尚未处理完的消息进行处理,从而保障了前置缓存在重启后消息处理的连续性。在此,这一将消息加载至所述内存队列中的过程即为图7中所示的“Reload”的过程,这一过程避免了在断电或重启等情况之后数据丢失的情况,并能够保障在***恢复正常后继续进行消息的处理。
本领域技术人员应能理解上述检测消息是否已处理并加载至内存队列的方式仅为举例,其他现有的或今后可能出现的检测消息是否已处理并加载至内存队列的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
图3示出根据本申请另一个方面的一种用于通过持久化队列处理消息的方法流程图。所述方法包括步骤S1、步骤S2、步骤S3、步骤S5以及步骤S6。
其中,在步骤S1中设备1根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;在步骤S2中设备1根据读消息请求从所述内存队列读取并处理对应第二消息在步骤S3中设备1在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除;在步骤S5中设备1若对应消息应用重新启动,将所述前置缓存中的消息写入所述持久化队列对应的文件***;在步骤S6中设备1在所述消息应用启动成功后,将所述文件***中待处理的消息加载至所述内存队列。
在此,图3中步骤S1、步骤S2、步骤S3与图1中步骤S1、步骤S2、步骤S3相同或相似,不再赘述。
具体地,在步骤S5中设备1若对应消息应用重新启动,将所述前置缓存中的消息写入所述持久化队列对应的文件***。即在对应消息应用或所述***进行重新启动时,将所述前置缓存中的消息存入所述文件***,从而保障重启情况下前置缓存以及内存队列中消息的安全性。其中,在重启过程中将所述消息写入文件***的方法包括但不限于设置固定的转存接口或程序在获取重启信息后即进行保存,例如,在阿里巴巴集团的阿里云产品中即通过设置StopToDump接口将图7中Map的消息保存至“持久化队列RedoLog文件***”中。
本领域技术人员应能理解上述在重启时将前置缓存中消息写入文件***的方式仅为举例,其他现有的或今后可能出现的在重启时将前置缓存中消息写入文件***的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S6中设备1在所述消息应用启动成功后,将所述文件***中待处理的消息加载至所述内存队列。即将重启后所述持久化队列对应的前置缓存中转存至文件***的未处理消息加载至内存队列进行消息的取出和处理,在此,识别所述待处理消息的方法,包括在前置缓存重启情况下保存至所述文件***的消息打上标记或统一保存,在重启成功后直接从指定地点读取或识别标签进行读取,后加载至所述内存队列进行处理;或者同上文判断方法,在将前置缓存中的消息写入文件***时记录在in文件中,对比重启后转存到文件***的消息在ou文件即所述消息完成文件中是不存在的,因此将转存至文件***中的原前置缓存中的消息加载至所述内存队列中进行处理,从而可以在重启后继续对之前在前置缓存中尚未处理完的消息进行处理,保障了前置缓存在重启后消息处理的连续性。在此,这一将消息加载至所述内存队列中的过程即为图7中所示的“Reload”的过程,这一过程避免了在重启之后数据丢失的情况,并能够保障在***恢复正常后继续进行消息的处理。
图4示出根据本申请又一个方面的一种用于通过持久化队列处理消息的设备示意图。所述设备1包括消息写入装置11、消息处理装置12以及消息再处理装置13。
其中,所述设备1中消息写入装置11根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;消息处理装置12根据读消息请求从所述内存队列读取并处理对应第二消息;消息再处理装置13在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
具体地,消息写入装置11根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列。其中,所述消息是指调用持久化队列的用户待处理信息,所有可放入内存进行处理的数据消息均包含于此,图7中举例的各箭头方向是指所述消息的流转动向。所述写消息请求是指向持久化队列写入消息的请求、命令或相关接口,例如,在图7中所示的“PUSH”操作。所述第一消息是指尚未写入持久化队列对应模块中的消息。所述前置缓存是指用于快速读写和查找数据或信息的结构,前置缓存的读写和查找时间或空间复杂度都较低,在此,用于快速查找和读写消息,即如图7中的“前置缓存Map”即为前置缓存的示例。所述内存队列是指用于消息读写和查找的内存中的队列,例如图7中的“持久化队列内存Queue”。因此,根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列,即如图7所示是指根据写消息的请求“PUSH”将为写入过持久化队列的消息顺“PUSH”引出的箭头方向写入持久化队列对应的前置缓存和内存队列。在此,持久化队列是保障数据安全,防止数据在消息对应程序或应用在重启时丢失的模块,其通常对应内存队列以及相应的存储***或文件***,在此,还对应前置缓存,如图7所示虚线所框的范围即指持久化队列对应的两种情况,但不限于本例,其它由前置缓存、内存队列以及文件***三种模块的任意一种或几种构成的持久化队列均包含于此。优选地,所述第一消息写入持久化队列对应的前置缓存及内存队列的顺序,包括但不限于先写入前置缓存,然后写入内存队列;或者同时写入前置缓存以及内存队列。在持久化队列中设置对应的前置缓存,使得消息可以直接从前置缓存和内存队列中进行消息的读写、查找或删除等操作,从而在前置缓存的容量范围内可以不用进行文件或存储***的写入,从而降低IO操作的产生,提升消息的处理速度。
本领域技术人员应能理解上述第一消息写入持久化队列对应的前置缓存及内存队列的方式仅为举例,其他现有的或今后可能出现的第一消息写入持久化队列对应的前置缓存及内存队列的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述前置缓存的消息容量小于所述内存队列,即前置缓存的容量小于其对应的内存队列的容量,使得仅在在前置缓存和内存队列进行快速读写和处理的消息数量较少,当消息过多超出前置缓存容量后即结合持久化队列对应的文件***进行处理,从而保障数据的安全性。在此,前置缓存的消息容量可根据具体的消息对应的应用情况进行调节。
更优选地,所述前置缓存基于哈希映射结构,即所述前置缓存是一种快速的哈希映射结构,对消息的读写、查找等操作的时间复杂度均为O(1),因为哈希映射结构是性能最快的字典类型,从而优选应用于前置缓存。在此,所述前置缓存所基于的结构包括但不限于哈希映射结构,例如树形结构等亦包含于此。
优选地,所述消息写入装置11若持久化队列对应的前置缓存未满,根据写消息请求将对应第一消息写入所述前置缓存及所述持久化队列对应的内存队列;若所述前置缓存已满,将所述第一消息写入所述内存队列及所述持久化队列对应的文件***。所述持久化队列对应的文件***是指一种持久化的存储结构或模块,在读写时会产生IO操作,例如阿里巴巴集团在阿里云产品中所采用的盘古文件***,或图7中所示的“持久化队列RedoLog文件***”。在根据写消息请求将对应第一消息写入持久化队列对应的前置缓存的过程中,对前置缓存是否已满进行预警设置或进行容量检查,其中,获知前置缓存是否已满的方法包括但不限于此处举例,现有技术中对内存或快速读写结构进行检测的方式均包含于此。当所述前置缓存未满,则将所述第一消息写入所述前置缓存与所述持久化队列,即如图7中上方所示从“PUSH”请求中延伸的箭头抵达“前置缓存Map”以及“持久化队列内存Queue”,表示将消息写入箭头所抵达的模块;当所述前置缓存已满,则将所述第一消息写入所述内存队列以及所述持久化队列对应的文件***,即如图7中下方所示从“PUSH”请求中延伸的箭头抵达“持久化队列内存Queue”以及“持久化队列RedoLog文件***”,表示将消息写入箭头所抵达的模块。通过对所述前置缓存的容量进行判断,而选择第一消息不同的写入路径组合,使得前置满后,也就是***处理比较慢的情况下,则将消息在文件***进行保存,保障消息安全,一旦发生断电等故障,丢失是仅有MAP中少量消息,提升所述持久化队列的安全保障性能。
本领域技术人员应能理解上述根据所述前置缓存容量选择第一消息写入路径组合的方式仅为举例,其他现有的或今后可能出现的根据所述前置缓存容量选择第一消息写入路径组合的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,消息处理装置12根据读消息请求从所述内存队列读取并处理对应第二消息。其中,所述第二消息是指已被写入所述持久化队列中的消息,包括但不限于写入持久化队列的组成模块中的任意一个或多个。所述读消息请求是指向持久化队列读取消息的请求、命令或相关接口,例如,在图7中所示的“POP”操作。根据读消息请求从所述内存队列读取并处理对应第二消息,即指将消息从内存队列中取出并进行处理,在此,处理消息是根据消息所携带的信息将消息进行相应处理操作,例如为调用所述持久化队列的用户取出消息进行处理,即如图7中所示箭头顺“持久化队列内存Queue”指向“POP”操作的接口,表示消息从内存队列中取出进行处理。将所述第二消息从所述内存队列中取出进行处理的过程中,所述消息是从内存直接读取,不产生存储或文件***的读写,即不产生IO操作,从而使得取出处理速度快。
本领域技术人员应能理解上述根据读消息请求从所述内存队列读取并处理对应第二消息的方式仅为举例,其他现有的或今后可能出现的根据读消息请求从所述内存队列读取并处理对应第二消息的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,消息再处理装置13在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。即将处理完成后的消息从所述前置缓存中删除,从而释放前置缓存中的空间,避免前置缓存容量已满后溢出,或转而进行持久化队列对应的文件***的写入,导致处理消息的速度变慢。其中,对所述第二消息处理完成后进行删除或其它操作的再处理工作的进程可由固定命令或接口完成但不限于此,例如图7上方所示,设置“DONE”操作接口,在消息处理完成后对“前置缓存Map”中的已处理消息进行删除。在所述前置缓存直接进行已处理完成消息的删除,使得删除工作也在快速读写结构中进行,从而免去在存储或文件***中标记或查找产生的IO操作,从而提升消息处理的速度。
本领域技术人员应能理解上述对处理完后的消息进行删除的方式仅为举例,其他现有的或今后可能出现的对处理完后的消息进行删除的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
图5示出根据本申请另一个优选实施例的消息再处理装置13的设备示意图。所述消息再处理装置13包括消息清理单元131以及消息记录单元132。
其中,所述消息清理单元131在所述第二消息被处理完成后,若所述第二消息未存在于所述文件***,将所述第二消息从所述前置缓存中清除;否则,消息记录单元132将所述第二消息添加至所述持久化队列对应的消息完成文件。
具体地,消息清理单元131在所述第二消息被处理完成后,若所述第二消息未存在于所述文件***,将所述第二消息从所述前置缓存中清除。其中,所述第二消息未存于所述文件***,是指所述消息在写入所述持久化队列后,未写入过持久化队列所对应的文件***。在此,检测消息是否存在于文件***的方式包括但不限于直接从文件***检查是否存在第二消息,或者在消息写入文件***时均记录在指定空间或文件中,在所述消息被处理完后对指定的空间或文件进行检测。如图7中所示的持久化队列实例中,写入“持久化队列RedoLog文件***”的消息均列入指定的in文件,“DONE”操作即检测in文件中是否存在处理完成后的消息,若未存在,则直接从“前置缓存Map”中删除所述第二消息,即图7上方的“DONE”操作所示的过程。
本领域技术人员应能理解上述检测消息是否存在于文件***的方式仅为举例,其他现有的或今后可能出现的检测消息是否存在于文件***的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,消息记录单元132在所述第二消息被处理完成后,若所述第二消息存在于所述文件***,将所述第二消息添加至所述持久化队列对应的消息完成文件。其中,所述持久化队列对应的消息完成文件是指保存于持久化队列中的用于记录已完成处理消息信息的文件,优选地,将所述消息完成文件保存于持久化队列对应的文件***,从而避免断电等故障情况下丢失所述消息完成文件。同样,检测消息是否存在于文件***的方式包括但不限于直接从文件***检查是否存在第二消息,或者在消息写入文件***时均记录在指定空间或文件中,在所述消息被处理完后对指定的空间或文件进行检测。如图7中所示的持久化队列实例中,写入“持久化队列RedoLog文件***”的消息均列入指定的in文件,优选地,in文件存储于所述文件***中,避免断电等故障导致文件丢失,“DONE”操作即为检测in文件中是否存在处理完成后的消息,若存在,则将所述第二消息的相关信息或直接将所述第二消息添加至ou文件,在此ou文件即为所述消息完成文件的举例,即图7下方的“DONE”操作所示的过程,顺着箭头方向指向“持久化队列RedoLog文件***”,将完成处理的消息写入其中的ou文件中。
在此,判断处理后的所述第二消息是否存在文件***中并对所述第二消息进行不同情况下的再处理,使得所述持久化队列更为灵活,可以兼容前置缓存和文件***并存情况下的处理完消息的再处理过程,即前置缓存中的消息直接删除不留记录,提升消息处理速度,在文件***中写入过的消息在处理后均进行记录,从而保障消息的安全。
本领域技术人员应能理解上述判断处理后的所述第二消息是否存在文件***中的方式仅为举例,其他现有的或今后可能出现的判断处理后的所述第二消息是否存在文件***中的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
进一步地,所述设备1还包括消息加载装置14(未示出),其中,所述消息加载装置14将所述持久化队列中未记录于所述消息完成文件的消息加载至所述内存队列。即在所述持久化队列中未记录于所述消息完成文件中的消息,均属于未处理过的消息或在重启或其它事件所致的处理过程中的消息未完成的情况,包括在前置缓存已满的情况下,将消息写入所述内存队列以及所述文件***,内存队列中的消息尚未取出处理或取出处理过程中,在突然断电或重启的情况下,会全部丢失,但因为在文件***中有备份,例如,保存于上文举例的in文件中,则将in文件中存在但ou文件中不存在的消息加载至内存队列,即可重新进行处理,为了避免重复处理,因此查询所述消息完成文件中是否有消息记载,将未有记载的消息进行处理,保障了数据的安全性。或结合下文所述的重启后所述持久化队列对应的前置缓存中的未处理消息均转存至文件***,此时,这些转存的消息也属于尚未处理的在所述消息完成文件中不存在的消息,从而可以在重启后继续对之前在前置缓存中尚未处理完的消息进行处理,从而保障了前置缓存在重启后消息处理的连续性。在此,这一将消息加载至所述内存队列中的过程即为图7中所示的“Reload”的过程,这一过程避免了在断电或重启等情况之后数据丢失的情况,并能够保障在***恢复正常后继续进行消息的处理。
本领域技术人员应能理解上述检测消息是否已处理并加载至内存队列的方式仅为举例,其他现有的或今后可能出现的检测消息是否已处理并加载至内存队列的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
图6示出根据本申请再一个方面的一种用于通过持久化队列处理消息的设备示意图。所述设备1包括消息写入装置21、消息处理装置22、消息再处理装置23、消息应用重启处理装置25以及消息应用重启加载装置26。
其中,所述设备1中消息写入装置21根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;消息处理装置22根据读消息请求从所述内存队列读取并处理对应第二消息;消息再处理装置23在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除;消息应用重启处理装置25若对应消息应用重新启动,将所述前置缓存中的消息写入所述持久化队列对应的文件***;消息应用重启加载装置26在所述消息应用启动成功后,将所述文件***中待处理的消息加载至所述内存队列。
在此,图6中消息写入装置21、消息处理装置22、消息再处理装置23与图4中消息写入装置11、消息处理装置12、消息再处理装置13相同或相似,不再赘述。
具体地,消息应用重启处理装置25若对应消息应用重新启动,将所述前置缓存中的消息写入所述持久化队列对应的文件***。即在对应消息应用或所述***进行重新启动时,将所述前置缓存中的消息存入所述文件***,从而保障重启情况下前置缓存以及内存队列中消息的安全性。其中,在重启过程中将所述消息写入文件***的方法包括但不限于设置固定的转存接口或程序在获取重启信息后即进行保存,例如,在阿里巴巴集团的阿里云产品中即通过设置StopToDump接口将图7中Map的消息保存至“持久化队列RedoLog文件***”中。
本领域技术人员应能理解上述在重启时将前置缓存中消息写入文件***的方式仅为举例,其他现有的或今后可能出现的在重启时将前置缓存中消息写入文件***的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,消息应用重启加载装置26在所述消息应用启动成功后,将所述文件***中待处理的消息加载至所述内存队列。即将重启后所述持久化队列对应的前置缓存中转存至文件***的未处理消息加载至内存队列进行消息的取出和处理,在此,识别所述待处理消息的方法,包括在前置缓存重启情况下保存至所述文件***的消息打上标记或统一保存,在重启成功后直接从指定地点读取或识别标签进行读取,后加载至所述内存队列进行处理;或者同上文判断方法,在将前置缓存中的消息写入文件***时记录在in文件中,对比重启后转存到文件***的消息在ou文件即所述消息完成文件中是不存在的,因此将转存至文件***中的原前置缓存中的消息加载至所述内存队列中进行处理,从而可以在重启后继续对之前在前置缓存中尚未处理完的消息进行处理,保障了前置缓存在重启后消息处理的连续性。在此,这一将消息加载至所述内存队列中的过程即为图7中所示的“Reload”的过程,这一过程避免了在重启之后数据丢失的情况,并能够保障在***恢复正常后继续进行消息的处理。
此外,本申请还提供了一种用于通过持久化队列处理消息的设备,包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;
根据读消息请求从所述内存队列读取并处理对应第二消息;
在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (15)
1.一种用于通过持久化队列处理消息的方法,包括:
根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;
根据读消息请求从所述内存队列读取并处理对应第二消息;
在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
2.根据权利要求1所述的方法,其中,所述根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列包括:
若持久化队列对应的前置缓存未满,根据写消息请求将对应第一消息写入所述前置缓存及所述持久化队列对应的内存队列;
若所述前置缓存已满,将所述第一消息写入所述内存队列及所述持久化队列对应的文件***。
3.根据权利要求2所述的方法,其中,所述在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除包括:
在所述第二消息被处理完成后,若所述第二消息未存在于所述文件***,将所述第二消息从所述前置缓存中清除;否则,
将所述第二消息添加至所述持久化队列对应的消息完成文件。
4.根据权利要求3所述的方法,其中,所述方法还包括:
将所述持久化队列中未记录于所述消息完成文件的消息加载至所述内存队列。
5.根据权利要求1至.4中任一项所述的方法,其中,所述方法还包括:
若对应消息应用重新启动,将所述前置缓存中的消息写入所述持久化队列对应的文件***;
在所述消息应用启动成功后,将所述文件***中待处理的消息加载至所述内存队列。
6.根据权利要求1所述的方法,其中,所述前置缓存的消息容量小于所述内存队列。
7.根据权利要求1所述的方法,其中,所述前置缓存基于哈希映射结构。
8.一种用于通过持久化队列处理消息的设备,包括:
消息写入装置,用于根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;
消息处理装置,用于根据读消息请求从所述内存队列读取并处理对应第二消息;
消息再处理装置,用于在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
9.根据权利要求8所述的设备,其中,所述消息写入装置用于:
若持久化队列对应的前置缓存未满,根据写消息请求将对应第一消息写入所述前置缓存及所述持久化队列对应的内存队列;
若所述前置缓存已满,将所述第一消息写入所述内存队列及所述持久化队列对应的文件***。
10.根据权利要求9所述的设备,其中,所述消息再处理装置包括:
消息清理单元,用于在所述第二消息被处理完成后,若所述第二消息未存在于所述文件***,将所述第二消息从所述前置缓存中清除;否则,
消息记录单元,用于将所述第二消息添加至所述持久化队列对应的消息完成文件。
11.根据权利要求10所述的设备,其中,所述设备还包括:
消息加载装置,用于将所述持久化队列中未记录于所述消息完成文件的消息加载至所述内存队列。
12.根据权利要求8至11中任一项所述的设备,其中,所述设备还包括:
消息应用重启处理装置,用于若对应消息应用重新启动,将所述前置缓存中的消息写入所述持久化队列对应的文件***;
消息应用重启加载装置,用于在所述消息应用启动成功后,将所述文件***中待处理的消息加载至所述内存队列。
13.根据权利要求8所述的设备,其中,所述前置缓存的消息容量小于所述内存队列。
14.根据权利要求8所述的设备,其中,所述前置缓存基于哈希映射结构。
15.一种用于通过持久化队列处理消息的设备,包括:
处理器;
以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
根据写消息请求将对应第一消息写入持久化队列对应的前置缓存及内存队列;
根据读消息请求从所述内存队列读取并处理对应第二消息;
在所述第二消息被处理完成后,将所述第二消息从所述前置缓存中删除。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610183827 | 2016-03-28 | ||
CN201610183827X | 2016-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391269A true CN107391269A (zh) | 2017-11-24 |
CN107391269B CN107391269B (zh) | 2021-04-20 |
Family
ID=60338345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710193817.9A Active CN107391269B (zh) | 2016-03-28 | 2017-03-28 | 一种用于通过持久化队列处理消息的方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391269B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108512943A (zh) * | 2018-05-07 | 2018-09-07 | 苏州德姆斯信息技术有限公司 | 基于消息队列的嵌入式设备数据保存***及保存方法 |
CN108762944A (zh) * | 2018-04-20 | 2018-11-06 | 北京奇艺世纪科技有限公司 | 一种业务***的处理方法、装置、设备及介质 |
CN109358805A (zh) * | 2018-09-03 | 2019-02-19 | 中新网络信息安全股份有限公司 | 一种数据缓存方法 |
CN110750503A (zh) * | 2019-09-27 | 2020-02-04 | 浪潮电子信息产业股份有限公司 | 一种文件删除速度控制方法、装置、设备及可读存储介质 |
CN111770030A (zh) * | 2019-05-17 | 2020-10-13 | 北京京东尚科信息技术有限公司 | 消息持久化处理方法、装置和存储介质 |
CN112181671A (zh) * | 2019-07-02 | 2021-01-05 | 中移(苏州)软件技术有限公司 | 一种延时消息处理的方法及装置 |
CN112559198A (zh) * | 2019-09-10 | 2021-03-26 | 北京东土科技股份有限公司 | 总线数据存储到存储器上的方法、存储装置及存储介质 |
CN114915659A (zh) * | 2021-02-09 | 2022-08-16 | 腾讯科技(深圳)有限公司 | 网络请求处理方法、装置、电子设备及存储介质 |
WO2023040399A1 (zh) * | 2021-09-18 | 2023-03-23 | 深圳前海微众银行股份有限公司 | 一种业务持久化方法及装置 |
CN115951846A (zh) * | 2023-03-15 | 2023-04-11 | 苏州浪潮智能科技有限公司 | 数据写入方法、装置、设备及介质 |
CN117520018A (zh) * | 2023-11-24 | 2024-02-06 | 北京海量数据技术股份有限公司 | 一种实现可持久化消息队列的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510838A (zh) * | 2009-02-26 | 2009-08-19 | 北京北纬点易信息技术有限公司 | 实现持久化数据队列的方法 |
CN102541746A (zh) * | 2010-12-07 | 2012-07-04 | 深圳市金蝶中间件有限公司 | 一种队列的数据处理方法和*** |
CN103389884A (zh) * | 2013-07-29 | 2013-11-13 | 华为技术有限公司 | 处理输入/输出请求的方法、宿主机、服务器和虚拟机 |
CN104866339A (zh) * | 2015-04-27 | 2015-08-26 | 努比亚技术有限公司 | Fota数据的分布式持久化管理方法、***和装置 |
US20160085791A1 (en) * | 2012-09-06 | 2016-03-24 | Empire Technology Development Llc | Tree comparison to manage progressive data store switchover with assured performance |
-
2017
- 2017-03-28 CN CN201710193817.9A patent/CN107391269B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510838A (zh) * | 2009-02-26 | 2009-08-19 | 北京北纬点易信息技术有限公司 | 实现持久化数据队列的方法 |
CN102541746A (zh) * | 2010-12-07 | 2012-07-04 | 深圳市金蝶中间件有限公司 | 一种队列的数据处理方法和*** |
US20160085791A1 (en) * | 2012-09-06 | 2016-03-24 | Empire Technology Development Llc | Tree comparison to manage progressive data store switchover with assured performance |
CN103389884A (zh) * | 2013-07-29 | 2013-11-13 | 华为技术有限公司 | 处理输入/输出请求的方法、宿主机、服务器和虚拟机 |
US20150154227A1 (en) * | 2013-07-29 | 2015-06-04 | Huawei Technologies Co., Ltd. | Method for processing input/output request, host, server, and virtual machine |
CN104866339A (zh) * | 2015-04-27 | 2015-08-26 | 努比亚技术有限公司 | Fota数据的分布式持久化管理方法、***和装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762944A (zh) * | 2018-04-20 | 2018-11-06 | 北京奇艺世纪科技有限公司 | 一种业务***的处理方法、装置、设备及介质 |
CN108762944B (zh) * | 2018-04-20 | 2021-02-12 | 北京奇艺世纪科技有限公司 | 一种业务***的处理方法、装置、设备及介质 |
CN108512943A (zh) * | 2018-05-07 | 2018-09-07 | 苏州德姆斯信息技术有限公司 | 基于消息队列的嵌入式设备数据保存***及保存方法 |
CN109358805A (zh) * | 2018-09-03 | 2019-02-19 | 中新网络信息安全股份有限公司 | 一种数据缓存方法 |
CN109358805B (zh) * | 2018-09-03 | 2021-11-30 | 中新网络信息安全股份有限公司 | 一种数据缓存方法 |
CN111770030A (zh) * | 2019-05-17 | 2020-10-13 | 北京京东尚科信息技术有限公司 | 消息持久化处理方法、装置和存储介质 |
CN112181671B (zh) * | 2019-07-02 | 2022-12-16 | 中移(苏州)软件技术有限公司 | 一种延时消息处理的方法及装置 |
CN112181671A (zh) * | 2019-07-02 | 2021-01-05 | 中移(苏州)软件技术有限公司 | 一种延时消息处理的方法及装置 |
CN112559198A (zh) * | 2019-09-10 | 2021-03-26 | 北京东土科技股份有限公司 | 总线数据存储到存储器上的方法、存储装置及存储介质 |
CN110750503A (zh) * | 2019-09-27 | 2020-02-04 | 浪潮电子信息产业股份有限公司 | 一种文件删除速度控制方法、装置、设备及可读存储介质 |
CN114915659A (zh) * | 2021-02-09 | 2022-08-16 | 腾讯科技(深圳)有限公司 | 网络请求处理方法、装置、电子设备及存储介质 |
CN114915659B (zh) * | 2021-02-09 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 网络请求处理方法、装置、电子设备及存储介质 |
WO2023040399A1 (zh) * | 2021-09-18 | 2023-03-23 | 深圳前海微众银行股份有限公司 | 一种业务持久化方法及装置 |
CN115951846A (zh) * | 2023-03-15 | 2023-04-11 | 苏州浪潮智能科技有限公司 | 数据写入方法、装置、设备及介质 |
CN117520018A (zh) * | 2023-11-24 | 2024-02-06 | 北京海量数据技术股份有限公司 | 一种实现可持久化消息队列的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107391269B (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391269A (zh) | 一种用于通过持久化队列处理消息的方法与设备 | |
FR3023030B1 (fr) | Zone de donnees d'invalidation pour cache | |
US9921955B1 (en) | Flash write amplification reduction | |
US8954398B1 (en) | Systems and methods for managing deduplication reference data | |
US8984027B1 (en) | Systems and methods for migrating files to tiered storage systems | |
US20210019404A1 (en) | System and method of inspecting archive slices for malware | |
CN107807797B (zh) | 数据写入的方法、装置及服务器 | |
US10114765B2 (en) | Automatic recovery of application cache warmth | |
CN106815275A (zh) | 一种通过备用数据库实现主备数据库同步的方法与设备 | |
US9207877B1 (en) | Detection and avoidance of stalled filesystems to prevent stalling of virtual tape drives during tape mounts | |
US11681623B1 (en) | Pre-read data caching method and apparatus, device, and storage medium | |
EP0805392B1 (en) | Method and computer program product to reuse directory search handles | |
US7895164B1 (en) | Efficient checkpoint process | |
JPS63255748A (ja) | 記憶装置 | |
US20160283152A1 (en) | Resource access control | |
CN106055372A (zh) | 一种卸载应用程序的方法和装置 | |
US11194765B2 (en) | Accelerating and atomically moving files in an overlay optimizer | |
CN106254806A (zh) | 一种录像数据保护方法和装置 | |
CN105830067B (zh) | 一种文件信息处理方法、装置及文件处理设备、*** | |
CN106599236A (zh) | 一种文件***的元数据存储方法和装置 | |
CN105005519B (zh) | 清除客户端缓存的方法和装置 | |
CN116069261A (zh) | 一种数据处理方法、***、设备以及存储介质 | |
CN114446328B (zh) | 光盘刻录审计方法及装置 | |
CN108459925A (zh) | 私有云设备及其数据库的修复方法、具有存储功能的装置 | |
JP2022184735A (ja) | プログラム起動方法及び機器、記憶媒体 |
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 |