CN114896086A - 消息处理方法、装置、计算机设备及存储介质 - Google Patents
消息处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114896086A CN114896086A CN202210554615.3A CN202210554615A CN114896086A CN 114896086 A CN114896086 A CN 114896086A CN 202210554615 A CN202210554615 A CN 202210554615A CN 114896086 A CN114896086 A CN 114896086A
- Authority
- CN
- China
- Prior art keywords
- message
- storage space
- speed
- data
- target storage
- 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.)
- Pending
Links
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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 Transfer Between Computers (AREA)
Abstract
本申请揭示了一种消息处理方法、装置、计算机设备及存储介质,属于通信技术领域。该方法包括:将第一消息添加到第一存储空间中;第一存储空间是非持久化存储数据的存储空间;基于检测到的目标存储空间的数据写入速度,获取第一时间;目标存储空间是持久化存储数据的存储空间;数据写入速度是目标存储空间在单位时间内的数据存储量;响应于检测到第一消息在第一存储空间中的存在时间大于等于第一时间,且第一消息未被消费,将第一消息写入到目标存储空间。通过上述方案,可以灵活的确定将消息进行持久化的时机,在保证了服务器存储消息达到一定的吞吐量的情况下,降低了积压消息的丢失量,从而提高了消息存储性能的平衡效果。
Description
技术领域
本公开涉及通信技术领域,特别是涉及一种消息处理方法、装置、计算机设备及存储介质。
背景技术
消息队列是一种应用程序间的通信方式,消息发送后可以立刻返回,由消息系统来确保消息的可靠传递。
目前,在进行应用程序之间的通信过程中,采用的是统计积压的消息数量,当积压的消息数量达到一定程度时,对后续进入消息队列的消息进行持久化的方案。
然而,相关技术中的方案,当消息数量没有达到指定阈值时,等效于无持久化,当积压的消息数量超过指定阈值时,等效于对消息进行实时持久化,使得进行消息持久化判断的灵活性较差。
发明内容
本申请提供一种消息处理方法、装置、计算机设备及存储介质。提高了消息存储性能的平衡效果。所述技术方案如下:
一方面,提供了一种消息处理方法,所述方法包括:
将第一消息添加到第一存储空间中;所述第一存储空间是非持久化存储数据的存储空间;
基于检测到的目标存储空间的数据写入速度,获取第一时间;所述目标存储空间是持久化存储数据的存储空间;所述数据写入速度是所述目标存储空间在单位时间内的数据存储量;
响应于检测到所述第一消息在所述第一存储空间中的存在时间大于等于所述第一时间,且所述第一消息未被消费,将所述第一消息写入到所述目标存储空间。
在一种可能的实现方式中,所述基于检测到的目标存储空间的数据写入速度,获取第一时间,包括:
获取所述目标存储空间的允许写入速度;所述允许写入速度是所述目标存储空间的占用量在小于等于第一比例的情况下,单位时间内允许写入所述目标存储空间的数据量;所述允许写入速度小于等于最大写入速度;所述最大写入速度是所述目标存储空间在空载情况下单位时间内的数据存储量;
基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间。
在一种可能的实现方式中,所述基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间,包括:
响应于检测到的所述目标存储空间的所述数据写入速度小于允许写入速度区间,减少所述第一时间直到所述数据写入速度进入所述允许写入速度区间;所述允许写入速度区间是基于所述允许写入速度确定的速度区间;
响应于检测到的所述目标存储空间的所述数据写入速度大于所述允许写入速度区间,增加所述第一时间直到所述数据写入速度进入所述允许写入速度区间。
在一种可能的实现方式中,所述基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间之前,还包括:
根据所述允许写入速度,获取所述允许写入速度区间;
其中,所述允许写入速度区间的下限是所述允许写入速度减去第一速度阈值得到的;所述允许写入速度区间的上限是所述允许写入速度加上第二速度阈值得到的。
在一种可能的实现方式中,所述将所述第一消息写入到所述目标存储空间,包括:
将所述第一消息存储到第一文件中,所述第一文件是所述目标存储空间中的任一文件;
创建所述第一文件对应的第一索引文件,所述第一索引文件中包括所述第一消息对应的索引信息。
在一种可能的实现方式中,所述方法还包括:
响应于所述第一消息被消费,将所述第一消息从所述第一存储空间中删除;
将所述第一文件中的所述第一消息标记为第一状态;
响应于所述第一文件中的各个消息均为所述第一状态,且所述第一文件对应的数据量达到第二阈值,删除所述第一文件。
在一种可能的实现方式中,所述第一消息具有指定格式;所述指定格式包括偏移量、时间戳、消息总长以及消息内容中的至少一种。
一方面,提供了一种消息处理装置,所述装置包括:
第一存储模块,用于将第一消息添加到第一存储空间中;所述第一存储空间是持久化非持久化存储数据的存储空间;
时间获取模块,用于基于检测到的目标存储空间的数据写入速度,获取第一时间;所述目标存储空间是持久化存储数据的存储空间;所述数据写入速度是所述目标存储空间在单位时间内的数据存储量;
目标存储模块,用于响应于检测到所述第一消息在所述第一存储空间中的存在时间大于等于所述第一时间,且所述第一消息未被消费,将所述第一消息写入到所述目标存储空间。
在一种可能的实现方式中,所述时间获取模块,包括:
允许速度获取子模块,用于获取所述目标存储空间的允许写入速度;所述允许写入速度是所述目标存储空间的占用量在小于等于第一比例的情况下,单位时间内允许写入所述目标存储空间的数据量;所述允许写入速度小于等于最大写入速度;所述最大写入速度是所述目标存储空间在空载情况下单位时间内的数据存储量;
时间修改子模块,用于基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间。
在一种可能的实现方式中,所述时间修改子模块,包括:
第一修改单元,用于响应于检测到的所述目标存储空间的所述数据写入速度小于允许写入速度区间,减少所述第一时间直到所述数据写入速度进入所述允许写入速度区间;所述允许写入速度区间是基于所述允许写入速度确定的速度区间;
第二修改单元,用于响应于检测到的所述目标存储空间的所述数据写入速度大于所述允许写入速度区间,增加所述第一时间直到所述数据写入速度进入所述允许写入速度区间。
在一种可能的实现方式中,所述装置还包括:
区间获取模块,用于基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间之前,根据所述允许写入速度,获取所述允许写入速度区间;
其中,所述允许写入速度区间的下限是所述允许写入速度减去第一速度阈值得到的;所述允许写入速度区间的上限是所述允许写入速度加上第二速度阈值得到的。
在一种可能的实现方式中,所述目标存储模块,包括:
文件存储子模块,用于将所述第一消息存储到第一文件中,所述第一文件是所述目标存储空间中的任一文件;
索引创建子模块,用于创建所述第一文件对应的第一索引文件,所述第一索引文件中包括所述第一消息对应的索引信息。
在一种可能的实现方式中,所述装置还包括:
消息删除子模块,用于响应于所述第一消息被消费,将所述第一消息从所述第一存储空间中删除;
状态标记子模块,用于将所述第一文件中的所述第一消息标记为第一状态;
文件删除子模块,用于响应于所述第一文件中的各个消息均为所述第一状态,且所述第一文件对应的数据量达到第二阈值,删除所述第一文件。
在一种可能的实现方式中,所述第一消息具有指定格式;所述指定格式包括偏移量、时间戳、消息总长以及消息内容中的至少一种。
另一方面,提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述消息处理方法。
又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述消息处理方法。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的消息处理方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
在本申请实施例所示的方案中,服务器通过获取持久化保存的目标存储空间对应的数据写入速度,确定当前情况对应的第一时间,当服务器中存储的某一消息的时间大于等于第一时间,可以将该消息进行持久化,通过上述方案,可以灵活的确定将消息进行持久化的时机,在保证了服务器存储消息达到一定的吞吐量的情况下,降低了积压消息的丢失量,从而提高了消息存储性能的平衡效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种消息处理系统的示意图;
图2是根据一示例性实施例示出的一种消息处理方法的流程图;
图3是根据一示例性实施例示出的一种消息处理方法的流程图;
图4是根据一示例性实施例示出的一种消息处理装置的框图;
图5是根据一示例性实施例示出的一种计算机设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
应当理解的是,在本文中提及的“若干个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
图1是根据一示例性实施例示出的一种消息处理系统的示意图。该消息处理系统中包括第一终端110、第二终端130以及服务器集群120。
其中,第一终端110、第二终端130以及服务器集群120可以应用于边缘计算场景中。
第一终端110可以是向服务器集群120发送消息的至少一个用户终端,第一终端110上对应的是第一客户端,第二终端130可以是从服务器集群120获取消息的至少一个用户终端,第二终端130上对应的是第二客户端。
第一终端110可以通过有线或者无线网络与服务器集群120进行数据传输,第二终端130也可以通过有线或者无线网络与服务器集群120进行数据传输。
服务器集群120可以是由若干台服务器构成的服务器集群,也可以是由若干个边缘服务器构成的服务器集群,或者可以包含一个或多个虚拟化平台,或者也可以是一个云计算服务中心,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是云服务器。第一终端110以及第二终端130可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
可选地,上述的有线或者无线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
图2是根据一示例性实施例示出的一种消息处理方法的流程图。该消息处理方法可以应用于计算机设备中。该计算机设备可以是上述图1所示系统中的服务器集群120。如图2所示,该消息处理方法可以包括以下步骤:
在步骤201中,将第一消息添加到第一存储空间中,第一存储空间是非持久化存储数据的存储空间。
在本申请实施例中,服务器将获取到的第一消息存储在第一存储空间中,第一存储空间可以是包括内存在内的至少一种非持久化进行存储数据的存储空间。
在一种可能的实现方式中,第一消息是由生产者客户端产生的消息数据,由生产值客户端发送给服务器端进行存储的。
在步骤202中,基于检测到的目标存储空间的数据写入速度,获取第一时间;目标存储空间是持久化存储数据的存储空间;数据写入速度是目标存储空间在单位时间内的数据存储量。
在本申请实施例中,服务器可以实时获取目标存储空间对应的数据写入速度,基于获取到的数据写入速度,确定第一时间。
其中,目标存储空间可以是包括磁盘、数据库在内的持久化存储数据的服务器中的存储空间。
在步骤203中,响应于检测到第一消息在第一存储空间中的存在时间大于等于第一时间,且第一消息未被消费,将第一消息写入到目标存储空间。
在本申请实施例中,当检测到第一消息在第一存储空间中存储的时间大于等于获取到的第一时间,则可以将第一消息存储到目标存储空间中。
综上所述,本申请实施例中提供的一种消息处理方法。通过获取持久化保存的目标存储空间对应的数据写入速度,确定当前情况对应的第一时间,当服务器中存储的某一消息的时间大于等于第一时间,可以将该消息进行持久化,通过上述方案,可以灵活的确定将消息进行持久化的时机,在保证了服务器存储消息达到一定的吞吐量的情况下,降低了积压消息的丢失量,从而提高了消息存储性能的平衡效果。
图3是根据另一示例性实施例示出的一种消息处理方法的流程图。该消息处理方法可以应用于计算机设备中。该计算机设备可以是上述图1所示系统中的服务器集群120。如图3所示,该消息处理方法可以包括如下步骤:
在步骤301中,将第一消息添加到第一存储空间中。
在本申请实施例中,服务器将从生产者客户端获取到的第一消息添加到第一存储空间中。
其中,第一存储空间是非持久化存储数据的存储空间。
比如,第一存储空间可以是缓存空间或者内存空间。
在一种可能的实现方式中,第一消息具有指定格式,指定格式包括文件索引、偏移量、时间戳、消息总长以及消息内容中的至少一种。
示例性的,第一消息的指定格式可以如下表1所示,
文件索引 | 偏移量 | 时间戳 | 消息总长 | 消息内容 |
表1
其中,第一消息的文件索引占用4个字节、偏移量占用4个字节、时间戳占用8个字节、消息总长占用4个字节。
在一种可能的实现方式中,由生产者客户端获取到的第一消息,加入服务器的消息队列中。
其中,该消息队列可以存储在内存中。消息队列用于在服务器中保留消息,以供消费者客户端获取消息。
比如,若服务器可以从生产者客户端获取到消息A、消息B以及消息C,可以将消息A、消息B以及消息C按照获取到的时间顺序加入服务器内存中的消息队列。
在步骤302中,获取目标存储空间的允许写入速度。
在本申请实施例中,服务器获取各个时刻下,目标存储空间对应的允许写入速度。
其中,允许写入速度是目标存储空间在正常运行的情况下单位时间内允许写入目标存储空间的数据量;目标存储空间可以在空间占用量小于等于第一比例时维持正常运行,允许写入速度小于等于最大写入速度;最大写入速度是目标存储空间在空载情况下单位时间内的数据存储量。
其中,当目标存储空间是磁盘时,磁盘空载时该磁盘对应的写入速度最大。
在一种可能的实现方式中,目标存储空间的允许写入速度取决于该目标存储空间对应的固有的磁盘属性。
在一种可能的实现方式中,通过检测目标存储空间空载时的单位时间内的数据存储量,通过对检测得到的最大写入速度进行计算,获得允许写入速度。
其中,对检测得到的最大写入速度进行计算可以是取最大写入速度的中间值作为允许写入速度。
比如,检测得到磁盘空载时的最大写入速度为K,可以确定该磁盘对应的允许写入速度K1满足0<K1<=K,或者,可以确定K1=K/2。
在步骤303中,根据允许写入速度,获取允许写入速度区间。
在本申请实施例中,服务器基于确定的允许写入速度,获取对应的允许写入速度区间,允许写入速度区间可以是基于允许写入速度确定的速度区间。
在一种可能的实现方式中,允许写入速度区间是将允许写入速度分别加上第一速度阈值以及减去第二速度阈值后生成的速度区间。
其中,允许写入速度区间的下限可以是允许写入速度减去第一速度阈值得到的;允许写入速度区间的上限可以是允许写入速度加上第二速度阈值得到的。第一速度阈值和第二速度阈值可以是相同的数值或者也可以是不同的数值。
在一种可能的实现方式中,第一速度阈值与第二速度阈值的数值相同,均为速度死区阈值。
比如,若磁盘对应的写入速度死区阈值为x,该磁盘对应的允许写入速度可以为K1,则允许写入速度区间可以为(K1-x,K1+x)。
在步骤304中,基于检测到的目标存储空间的数据写入速度与允许写入速度之间的大小关系,修改第一时间。
在本申请实施例中,服务器将检测到的目标存储空间的数据写入速度与允许写入速度或者允许写入速度区间进行大小关系比较,基于比较结果,修改第一时间的数值大小。
在一种可能的实现方式中,响应于检测到的目标存储空间的数据写入速度小于允许写入速度区间,减少第一时间直到数据写入速度进入允许写入速度区间。响应于检测到的目标存储空间的数据写入速度大于允许写入速度区间,增加第一时间直到数据写入速度进入允许写入速度区间。
比如,若目标存储空间对应的磁盘的允许写入速度为K1,监视检测当前磁盘对应的数据写入速度为K2,如果K2<K1,说明该磁盘没有被充分利用,则可以减小第一时间,若K2>K1,说明该磁盘当前的负载过重,可以增大第一时间。
或者,如果允许写入速度区间为(K1-x,K1+x),若K2<K1-x,说明该磁盘没有被充分利用,则可以减小第一时间,若K2>K1+x,说明该磁盘当前的负载过重,可以增大第一时间。通过上述对第一时间的调整,可以保持磁盘的最佳利用状态。
示例性的,在时刻t1时,服务器检测到当前磁盘对应的数据写入速度为K2=10MB/s,其中,K1-x=20-1=19MB/s,K1+x=20+1=21MB/s,由于K2<K1-x,可以将第一时间M置为M-m=50-1=49ms。当第一时间M置为49ms后,在时刻t1的下一时刻时刻t2,服务器检测到当前磁盘的数据写入速度为K2=12MB/s,由于K2<K1-x,可以继续调整第一时间M,将M置为M-m=49-1=48ms,持续进行步长m为1的第一时间调整过程,直到当时刻tk时,服务器检测到当前磁盘对应的数据写入速度为K2=19.5MB/s,由于K1-x=<K2<=K1+x,若此时第一时间M为35ms,则保持第一时间M不变。持续进行数据写入速度的检测,当在时刻tn进行检测时,检测到当前磁盘的数据写入速度为K2=25MB/s,由于K1+x<K2,若此时第一时间M为30ms,则可以将第一时间M置为M+m=30+1=31ms。通过这种不断调整的方式,可以使当前磁盘对应的数据写入速度维持在(K1-x,K1+x)区间内。
也就是说,通过上述第一时间的调整方式,当消息队列中数据量较小,磁盘负载较轻时,第一时间M可以调整至0,即可以转化为实时进行消息持久化,当消息队列数据量较大,磁盘负载较重时,M可以调整为一个比较大的数值,接近于只使用内存进行消息存储,即不进行消息持久化,可以充分利用磁盘性能,以达到最优的消息队列持久化方式。
其中,消息持久化是把内存中的对象保存到持久化保存的存储设备(如磁盘)中,或者将内存中的对象存储在关系型的数据库中,也可以存储在磁盘文件中、XML数据文件中。
在步骤305中,响应于检测到第一消息在第一存储空间中的存在时间大于等于第一时间,将第一消息写入到目标存储空间。
在本申请实施例中,当检测到第一消息在第一存储空间中的存在时间大于等于第一时间时,将第一存储空间中的第一消息写入到目标存储空间中,实现第一消息的持久化。
在一种可能的实现方式中,服务器将第一消息存储到第一文件中,创建第一文件对应的第一索引文件,第一索引文件中包括第一消息对应的索引信息。
其中,第一文件是目标存储空间中的任一文件。
其中,每一个持久化文件对应的索引文件中包含对应的持久化文件最后一条消息的偏移量offsetLast、对应的持久化文件最后一条已被消费的消息偏移量offsetDeleteLast以及文件总大小Fsize。在持久化文件中每一条消息的格式可以包括消息总长与消息内容,消息总长占用4个字节。
示例性的,生产者客户端向消息队列发送消息,消费者客户端从消息队列消费消息。若第一时间M的初始值设置为50ms,单次变化步长为m=1ms,并且单个持久化文件最大大小为100MB,持久化文件命名方式为F0,F1到FN,对应的索引文件为FX0,FX1到FXN。若检测得到磁盘空载时数据写入速度为K=30MB/s,可以确定磁盘正常运行时允许写入速度为K1=20MB/s,磁盘允许写入速度的死区阈值为x=1MB/s,则可以确定若检测到当前磁盘的允许写入速度K2,满足K1-x<=K2<=K1+x时,不再调整第一时间M的数值。
在一种可能的实现方式中,将第一消息写入到目标存储空间后,在第一存储空间中仍然存在第一消息,并且将第一存储空间中的第一消息进行持久化索引的标记。
在步骤306中,响应于第一消息被消费,将第一消息从第一存储空间中删除。
在本申请实施例中,当消费者客户端对应的第二应用程序获取第一消息时,第一消息被消费,将第一存储空间的消息队列中的第一消息进行删除。
在步骤307中,将第一文件中的第一消息标记为第一状态。
在本申请实施例中,服务器将目标存储空间中的第一文件中的第一消息进行第一状态的标记,确定该第一消息已经被消费。
在一种可能的实现方式中,消费者客户端消费第一消息时,直接消费第一存储空间中的第一消息,如果该第一消息已经写入第一文件进行持久化,则将持久化文件中的第一消息打上已消费标记,不立即删除。
在步骤308中,响应于第一文件中的各个消息均为第一状态,且第一文件对应的数据量达到第二阈值,删除第一文件。
在一种可能的实现方式中,当第一文件中的各个消息均打上已消费标记,并且第一文件中存储的数据量达到指定的第二阈值,则直接一次性删除该第一文件。
其中,第二阈值可以是第一文件的存储数据量的上限数值。
示例性的,服务器中的消息队列接收到生产者客户端发送的消息A,消息B,消息C以及消息D,并且依次将消息A,消息B,消息C以及消息D写入内存中,将消息A,消息B,消息C以及消息D对应的文件索引置为-1,偏移量置为-1,分别将写入消息队列的时间作为消息对应的时间戳(比如,可以设置为距离1970年1月1日的毫秒数),其中消息A,消息B,消息C以及消息D的时间戳分别为ta,tb,tc以及td,并且ta<tb<tc<td,若ta=100,tb=110,tc=120,td=190,并且消费者客户端在时间t=101时,将消息A消费掉,由于此时消息A尚未持久化,直接从内存中的消息队列中删除消息A,此时,消息队列中只有消息B,消息C以及消息D。然后,若线程1按照消息D,消息C,消息B的顺序扫描内存中的消息队列,若扫描时间为t=200,对于消息D,t-td=10,小于第一时间M,所以此时消息D不进行持久化,对于消息C,由于t-tc=80,大于第一时间M,则服务器可以直接将消息C以及消息B进行持久化,其中,可以优先持久化消息B。若消息B写入目标存储空间中的文件F3,消息B对应的偏移量为1000,消息C写入的同样为文件F3,消息B对应的偏移量为1500,该文件F3对应的索引文件FX3中最后一条已被消费的消息偏移量(offsetDeleteLast)为1500,并在内存中的消息队列中修改消息C以及消息B的文件索引和偏移量为对应值。若消费者客户端在t=203时刻,消费消息B,则直接从内存中的消息队列中删除消息B,由于此时消息B已经进行持久化,将索引文件FX3中最后一条已被消费的消息偏移量offsetDeleteLast置为1000,同理消费消息C,将索引文件FX3中最后一条已被消费的消息偏移量offsetDeleteLast置为1500。若服务器通过线程2,扫描目标存储空间中的所有持久化文件时,当offsetDeleteLast>=最后一条消息偏移量(offsetLast),且持久化文件大小大于等于指定值100MB时,删除该持久化文件。
综上所述,本申请实施例中提供的一种消息处理方法。通过获取持久化保存的目标存储空间对应的数据写入速度,确定当前情况对应的第一时间,当服务器中存储的某一消息的时间大于等于第一时间,可以将该消息进行持久化,通过上述方案,可以灵活的确定将消息进行持久化的时机,在保证了服务器存储消息达到一定的吞吐量的情况下,降低了积压消息的丢失量,从而提高了消息存储性能的平衡效果。
图4是根据一示例性实施例示出的一种消息处理装置的框图,如图4所示,该消息处理装置可以通过硬件或者软硬结合的方式实现为计算机设备中的全部或者部分,以执行图2或图3对应实施例所示的方法的全部或部分步骤。该消息处理装置可以包括:
第一存储模块410,用于将第一消息添加到第一存储空间中;所述第一存储空间是非持久化存储数据的存储空间;
时间获取模块420,用于基于检测到的目标存储空间的数据写入速度,获取第一时间;所述目标存储空间是持久化存储数据的存储空间;所述数据写入速度是所述目标存储空间在单位时间内的数据存储量;
目标存储模块430,用于响应于检测到所述第一消息在所述第一存储空间中的存在时间大于等于所述第一时间,且所述第一消息未被消费,将所述第一消息写入到所述目标存储空间。
在一种可能的实现方式中,所述时间获取模块420,包括:
允许速度获取子模块,用于获取所述目标存储空间的允许写入速度;所述允许写入速度是所述目标存储空间的占用量在小于等于第一比例的情况下,单位时间内允许写入所述目标存储空间的数据量;所述允许写入速度小于等于最大写入速度;所述最大写入速度是所述目标存储空间在空载情况下单位时间内的数据存储量;
时间修改子模块,用于基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间。
在一种可能的实现方式中,所述时间修改子模块,包括:
第一修改单元,用于响应于检测到的所述目标存储空间的所述数据写入速度小于允许写入速度区间,减少所述第一时间直到所述数据写入速度进入所述允许写入速度区间;所述允许写入速度区间是基于所述允许写入速度确定的速度区间;
第二修改单元,用于响应于检测到的所述目标存储空间的所述数据写入速度大于所述允许写入速度区间,增加所述第一时间直到所述数据写入速度进入所述允许写入速度区间。
在一种可能的实现方式中,所述装置还包括:
区间获取模块,用于基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间之前,根据所述允许写入速度,获取所述允许写入速度区间;
其中,所述允许写入速度区间的下限是所述允许写入速度减去第一速度阈值得到的;所述允许写入速度区间的上限是所述允许写入速度加上第二速度阈值得到的。
在一种可能的实现方式中,所述目标存储模块430,包括:
文件存储子模块,用于将所述第一消息存储到第一文件中,所述第一文件是所述目标存储空间中的任一文件;
索引创建子模块,用于创建所述第一文件对应的第一索引文件,所述第一索引文件中包括所述第一消息对应的索引信息。
在一种可能的实现方式中,所述装置还包括:
消息删除子模块,用于响应于所述第一消息被消费,将所述第一消息从所述第一存储空间中删除;
状态标记子模块,用于将所述第一文件中的所述第一消息标记为第一状态;
文件删除子模块,用于响应于所述第一文件中的各个消息均为所述第一状态,且所述第一文件对应的数据量达到第二阈值,删除所述第一文件。
在一种可能的实现方式中,所述第一消息具有指定格式;所述指定格式包括偏移量、时间戳、消息总长以及消息内容中的至少一种。
综上所述,本申请实施例中提供的一种消息处理方法。通过获取持久化保存的目标存储空间对应的数据写入速度,确定当前情况对应的第一时间,当服务器中存储的某一消息的时间大于等于第一时间,可以将该消息进行持久化,通过上述方案,可以灵活的确定将消息进行持久化的时机,在保证了服务器存储消息达到一定的吞吐量的情况下,降低了积压消息的丢失量,从而提高了消息存储性能的平衡效果。
需要说明的一点是,上述实施例提供的装置在实现其功能时,仅以上述各个功能模块的划分进行举例说明,实际应用中,可以根据实际需要而将上述功能分配由不同的功能模块完成,即将设备的内容结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种计算机设备的结构示意图。所述计算机设备500包括中央处理单元(Central Processing Unit,CPU)501、包括随机存取存储器(Random Access Memory,RAM)502和只读存储器(Read-Only Memory,ROM)503的系统存储器504,以及连接系统存储器504和中央处理单元501的系统总线505。所述计算机设备500还包括帮助计算机设备内的各个器件之间传输信息的基本输入/输出系统(Input/Output,I/O系统)506,和用于存储操作系统513、应用程序514和其他程序模块515的大容量存储设备507。
所述基本输入/输出系统506包括有用于显示信息的显示器508和用于用户输入信息的诸如鼠标、键盘之类的输入设备509。其中所述显示器508和输入设备509都通过连接到系统总线505的输入输出控制器510连接到中央处理单元501。所述基本输入/输出系统506还可以包括输入输出控制器510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器510还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备507通过连接到系统总线505的大容量存储控制器(未示出)连接到中央处理单元501。所述大容量存储设备507及其相关联的计算机设备可读介质为计算机设备500提供非易失性存储。也就是说,所述大容量存储设备507可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机设备可读介质(未示出)。
不失一般性,所述计算机设备可读介质可以包括计算机设备存储介质和通信介质。计算机设备存储介质包括以用于存储诸如计算机设备可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机设备存储介质包括RAM、ROM、可擦除可编程只读存储器(Erasable Programmable ReadOnly Memory,EPROM)、带电可擦可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM),CD-ROM、数字视频光盘(Digital Video Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机设备存储介质不局限于上述几种。上述的系统存储器504和大容量存储设备508可以统称为存储器。
根据本申请的各种实施例,所述计算机设备500还可以通过诸如因特网等网络连接到网络上的远程计算机设备运行。也即计算机设备500可以通过连接在所述系统总线505上的网络接口单元511连接到网络512,或者说,也可以使用网络接口单元511来连接到其他类型的网络或远程计算机设备系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器501通过执行该一个或一个以上程序来实现图2或图3所示的方法的全部或者部分步骤。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机设备可读介质中或者作为计算机设备可读介质上的一个或多个指令或代码进行传输。计算机设备可读介质包括计算机设备存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机设备程序的任何介质。存储介质可以是通用或专用计算机设备能够存取的任何可用介质。
本申请实施例还提供了一种计算机设备存储介质,用于储存为上述测试装置所用的计算机设备软件指令,其包含用于执行上述任务调度方法所设计的程序。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的消息处理方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种消息处理方法,其特征在于,所述方法包括:
将第一消息添加到第一存储空间中;所述第一存储空间是非持久化存储数据的存储空间;
基于检测到的目标存储空间的数据写入速度,获取第一时间;所述目标存储空间是持久化存储数据的存储空间;所述数据写入速度是所述目标存储空间在单位时间内的数据存储量;
响应于检测到所述第一消息在所述第一存储空间中的存在时间大于等于所述第一时间,且所述第一消息未被消费,将所述第一消息写入到所述目标存储空间。
2.根据权利要求1所述的方法,其特征在于,所述基于检测到的目标存储空间的数据写入速度,获取第一时间,包括:
获取所述目标存储空间的允许写入速度;所述允许写入速度是所述目标存储空间的占用量在小于等于第一比例的情况下,单位时间内允许写入所述目标存储空间的数据量;所述允许写入速度小于等于最大写入速度;所述最大写入速度是所述目标存储空间在空载情况下单位时间内的数据存储量;
基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间。
3.根据权利要求2所述的方法,其特征在于,所述基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间,包括:
响应于检测到的所述目标存储空间的所述数据写入速度小于允许写入速度区间,减少所述第一时间直到所述数据写入速度进入所述允许写入速度区间;所述允许写入速度区间是基于所述允许写入速度确定的速度区间;
响应于检测到的所述目标存储空间的所述数据写入速度大于所述允许写入速度区间,增加所述第一时间直到所述数据写入速度进入所述允许写入速度区间。
4.根据权利要求3所述的方法,其特征在于,所述基于检测到的所述目标存储空间的所述数据写入速度与所述允许写入速度之间的大小关系,修改所述第一时间之前,还包括:
根据所述允许写入速度,获取所述允许写入速度区间;
其中,所述允许写入速度区间的下限是所述允许写入速度减去第一速度阈值得到的;所述允许写入速度区间的上限是所述允许写入速度加上第二速度阈值得到的。
5.根据权利要求1所述的方法,其特征在于,所述将所述第一消息写入到所述目标存储空间,包括:
将所述第一消息存储到第一文件中,所述第一文件是所述目标存储空间中的任一文件;
创建所述第一文件对应的第一索引文件,所述第一索引文件中包括所述第一消息对应的索引信息。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
响应于所述第一消息被消费,将所述第一消息从所述第一存储空间中删除;
将所述第一文件中的所述第一消息标记为第一状态;
响应于所述第一文件中的各个消息均为所述第一状态,且所述第一文件对应的数据量达到第二阈值,删除所述第一文件。
7.根据权利要求1所述的方法,其特征在于,所述第一消息具有指定格式;所述指定格式包括偏移量、时间戳、消息总长以及消息内容中的至少一种。
8.一种消息处理装置,其特征在于,所述装置包括:
第一存储模块,用于将第一消息添加到第一存储空间中;所述第一存储空间是非持久化存储数据的存储空间;
时间获取模块,用于基于检测到的目标存储空间的数据写入速度,获取第一时间;所述目标存储空间是持久化存储数据的存储空间;所述数据写入速度是所述目标存储空间在单位时间内的数据存储量;
目标存储模块,用于响应于检测到所述第一消息在所述第一存储空间中的存在时间大于等于所述第一时间,且所述第一消息未被消费,将所述第一消息写入到所述目标存储空间。
9.一种计算机设备,其特征在于,计算机设备包含处理器和存储器,所述存储器中存储由至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至权利要求7中任一项所述的消息处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至权利要求7中任一项所述的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210554615.3A CN114896086A (zh) | 2022-05-20 | 2022-05-20 | 消息处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210554615.3A CN114896086A (zh) | 2022-05-20 | 2022-05-20 | 消息处理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114896086A true CN114896086A (zh) | 2022-08-12 |
Family
ID=82724615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210554615.3A Pending CN114896086A (zh) | 2022-05-20 | 2022-05-20 | 消息处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114896086A (zh) |
-
2022
- 2022-05-20 CN CN202210554615.3A patent/CN114896086A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108848039B (zh) | 服务器、消息分配的方法及存储介质 | |
CN107870981B (zh) | 电子装置、数据表归档处理的方法及存储介质 | |
CN112650576A (zh) | 资源调度方法、装置、设备、存储介质及计算机程序产品 | |
CN111813573A (zh) | 管理平台与机器人软件的通信方法及其相关设备 | |
CN112860953A (zh) | 图数据库的数据导入方法、装置、设备及存储介质 | |
US8922828B2 (en) | Determining scan priority of documents | |
EP3945420A1 (en) | Method and apparatus for data processing, server and storage medium | |
CN113535726A (zh) | 数据库扩容方法及装置 | |
CN110347546B (zh) | 监控任务动态调整方法、装置、介质及电子设备 | |
CN114070847A (zh) | 服务器的限流方法、装置、设备及存储介质 | |
CN114896086A (zh) | 消息处理方法、装置、计算机设备及存储介质 | |
CN113779412B (zh) | 一种基于区块链网络的消息触达方法、节点和系统 | |
CN114896215A (zh) | 元数据的存储方法及装置 | |
CN114048059A (zh) | 接口的超时时间调整方法、装置、计算机设备及存储介质 | |
CN113760854A (zh) | Hdfs内存中数据的识别方法及相关设备 | |
US10489370B1 (en) | Optimizing data loss prevention performance during file transfer operations by front loading content extraction | |
US11169725B1 (en) | System for processing of log data in memory | |
EP4163863A1 (en) | Program, information processing method, and information processing device | |
CN110677463B (zh) | 并行数据传输方法、装置、介质及电子设备 | |
CN114491674A (zh) | 基于区块链的日志处理方法、装置和设备 | |
CN114063879B (zh) | 用于处理操作命令的方法、电子设备和存储介质 | |
US20200143081A1 (en) | Secure commingling of tenant isolated data | |
CN110096483B (zh) | 一种重复文件检测方法、终端和服务器 | |
CN114650252A (zh) | 基于企业服务总线的路由方法、装置及计算机设备 | |
CN116821251A (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 |