CN115809153A - 消息处理方法、设备及电子设备 - Google Patents
消息处理方法、设备及电子设备 Download PDFInfo
- Publication number
- CN115809153A CN115809153A CN202111076629.0A CN202111076629A CN115809153A CN 115809153 A CN115809153 A CN 115809153A CN 202111076629 A CN202111076629 A CN 202111076629A CN 115809153 A CN115809153 A CN 115809153A
- Authority
- CN
- China
- Prior art keywords
- message
- messages
- target database
- preset
- hash value
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种消息处理方法、设备及电子设备,该方法包括:获取第一消息,并确定所述第一消息对应的第一哈希值;根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中,由于是存在多个预设窗口,即多个预设窗口均可以将接收到消息写入至目标数据库中,实现消息的并发写入,提高消息的写入效率。
Description
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种消息处理方法、设备及电子设备。
背景技术
数据实时处理系统是一个通用的、实时的数据接入系统,用于将来自不同业务方的消息实时存储至目标数据库,以便于利用目标数据库中的消息进行数据分析。
目前,在将消息写入至目标数据库中时,一般利用单并行度方式进行写入,即每次将单条消息写入目标数据库中。然而,由于是利用单并行度方式将消息写入至目标数据库,而同时写入处理的数据量巨大,这样会使得消息的写入效率较低,导致无法及时将消息写入至目标数据库中。
发明内容
本公开实施例提供一种消息处理方法、设备及电子设备,以提高消息的写入效率。
第一方面,本公开实施例提供一种消息处理方法,包括:
获取第一消息,并确定所述第一消息对应的第一哈希值;
根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。
第二方面,本公开实施例提供一种消息处理方法,包括:
接收第一设备发送的第一消息,其中,所述第一消息是所述第一设备根据所述第一消息对应的第一哈希值发送的;
通过预设写入算子,将所述第一消息保存至目标数据库中。
第三方面,本公开实施例提供一种消息处理设备,包括:
第一处理模块,用于获取第一消息,并确定所述第一消息对应的第一哈希值;
第一收发模块,用于根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。
第四方面,本公开实施例提供一种消息处理设备,包括:
第二收发模块,用于接收第一设备发送的第一消息,其中,所述第一消息是所述第一设备根据所述第一消息对应的第一哈希值发送的;
第二处理模块,用于通过预设写入算子,将所述第一消息保存至目标数据库中。
第五方面,本公开实施例提供一种电子设备,包括:至少一个处理器和存储器。
所述存储器存储计算机执行指令。
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的消息处理方法。
第六方面,本公开实施例提供一种电子设备,包括:至少一个处理器和存储器。
所述存储器存储计算机执行指令。
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第二方面以及第二方面各种可能的设计所述的消息处理方法。
第七方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的消息处理方法。
第八方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第二方面以及第二方面各种可能的设计所述的消息处理方法。
第九方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的消息处理方法。
第十方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第二方面以及第二方面各种可能的设计所述的消息处理方法。
本公开实施例提供的消息处理方法、设备及电子设备,该方法包括获取第一消息,并确定所述第一消息对应的第一哈希值;根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。本公开实施例通过在获取到需写入目标数据库中的第一消息时,计算第一消息对应的第一哈希值,并为第一消息分配相应的预设窗口,即从多个预设窗口中确定该第一哈希值对应的第一窗口,即确定该第一消息对应的第一窗口。在确定第一消息对应的预设窗口后,将第一消息发送至对应的第一窗口,以使该第一窗口通过预设写入算子将该第一消息写入至目标数据库中,由于是存在多个预设窗口,即多个预设窗口均可以将接收到消息写入至目标数据库中,实现消息的并发写入,提高消息的写入效率,即使当第一消息的数量较多时,也可以在较短时间内将大量消息写入至目标数据库中,即可以及时将消息写入至目标数据库中,保证数据处理的实时性,提高用户体验。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的消息处理方法的场景示意图;
图2为本公开实施例提供的消息处理方法的流程示意图一;
图3为本公开实施例提供的哈希映射的示意图;
图4为本公开实施例提供的消息处理方法的流程示意图二;
图5为本公开实施例提供的消息处理方法的流程示意图三;
图6为本公开实施例提供的消息处理方法的流程示意图四;
图7为本公开实施例提供的消息处理过程的示意图;
图8为本公开实施例提供的消息处理设备的结构框图一;
图9为本公开实施例提供的消息处理设备的结构框图二;
图10为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
数据实时处理系统是一个通用的、实时的异构数据接入系统,用于将来自不同业务方的异构数据实时转储到统一的目标数据库,为后续的数据分析过程提供便利。
现有技术中,在将消息写入至目标数据库中时,一般利用单并行度方式进行写入,即每次仅将单条消息发送至窗口,以使窗口将该条消息写入目标数据库中。然而,当需写入的消息的数量较多时,即进入数据实时处理系统的消息的数量较多时,利用单并行度方式进行写入时,消息的写入效率较低,会导致数据实时处理系统无需及时将消息写入目标数据库中,数据实时处理系统中的未被处理的消息的数目越来越多,造成数据实时处理系统的崩溃。
因此,针对上述问题,本发明的技术构思是基于大数据实时处理框架Flink进行实现,即基于Flink算子实现,Flink的相关算子利用哈希算法将待处理消息进行散列分发给多个窗口进行处理,以使多个窗口可以并发将其接收到的待处理消息批量写入目标数据库中,从而大大提高数据的写入效率,实现在短时间内处理大量数据的高并发的效果,降低数据的延迟,实现真正的异构数据实时接入,保证数据实时处理系统的稳定性和可靠性,避免出现数据实时处理系统由于未被处理的消息的数目过多,导致数据实时处理系统崩溃的问题。
图1为本发明实施例提供的消息处理方法的场景示意图,如图1所示,数据实时处理系统100包括第一设备101、预设窗口102和目标数据库103,第一设备102在获取到需要保存至目标数据库的第一消息后,确定第一消息对应的预设窗口102,并将该第一消息发送至对应的预设窗口102,以使预设窗口102将相应的第一消息写入至目标数据库103。
其中,第一设备101包括服务器、电脑等具有数据处理能力的设备。
其中,预设窗口为Window窗口,即Flink Window窗口,预设窗口的数量为至少一个,图1所示的预设窗口的数量仅为一种示例,本公开不对其进行限制。另外,在将第一消息发送至预设窗口时,可以将其发送至该预设窗口所在的终端,即第二设备。
可选的,第一设备101和第二设备102可以为同一台设备,也可以为不同设备。
参考图2,图2为本公开实施例提供的消息处理方法流程示意图一。本实施例的方法可以应用于图1中的第一设备上,具体的,应用于第一设备上的处理装置,该消息处理方法包括:
S201:获取第一消息,并确定第一消息对应的第一哈希值。
在本公开实施例中,在接收到需要保存到目标数据库中的消息时,将其确定为第一消息,即待处理消息,并分别计算第一消息的哈希值,以得到第一消息对应的第一哈希值。
其中,第一消息包括评论消息,即评论数据,例如,该评论数据为用户针对短视频应用程序中的发布内容(例如,短视频)发表的评论。当然,第一消息也可以为其它类型的需要进行实时处理,即保存至目标数据库中的消息,例如,用户购买商品的订单消息,在此,不对其进行限制。第一消息的数量为至少一个。
可选的,目标数据库包括实时数据库。相关业务处理系统可以接入实时数据库,以供利用实时数据库存储的数据,即第一消息进行相关业务处理,例如,当第一消息为评论消息时,相关业务处理系统对该评论消息进行合法性检测,即确定该评论消息是否存在违规内容,若存在,则不在该短视频应用程序中进行显示。
另外,可选的,第一消息是基于原始数据,即原始消息得到的,即在获取到原始消息后,对其进行复制,以得到原始消息的副本,并在该原始消息的副本中添加特定字段,和/或过滤掉一些无用的字段,即,删除原始消息的副本中的无用的字段,得到第一消息,从而使得第一消息具备一些相同的属性,进而保证在将第一消息保存至目标数据库后,相关业务处理系统可以基于目标数据库中的数据之间的相同的属性进行数据分析。
其中,特定字段包括消息主键、消息文本内容、消息创建时间、消息消费时间等。其中,消息主键字段对应的具体值可以是原始消息中的消息标识,例如,评论ID(Identitydocument,身份标识号)。
其中,原始信息包括不同类型的数据,即异构数据,例如,评论数据、订单数据,其为接入的业务方所产生的数据。
其中,通过对原始消息进行处理得到第一消息的过程是利用Map算子完成的。
另外,业务方的数据,即原始消息可以来自不同的消息队列,消息的格式可能不同,因此,需要对原始信息进行格式转换,即进行反序列化,以筛选出有用的字段、并增加一些必要的字段,同时也可以对原始消息进行某些操作,例如打标、分词、聚类、分类等。在将原始消息的格式转换完成后,对该原始消息进行处理以得到第一消息。
其中,在对原始消息进行格式转换,即反序列化时,可以基于现有反序列化方式进行,在此,不对其进行赘述。
S202:根据第一哈希值从多个预设窗口中确定第一哈希值对应的第一窗口,并将第一消息发送至第一窗口,以使第一窗口通过预设写入算子将第一消息存储至目标数据库中。
在本公开实施例中,在得到第一消息后,需要将该第一消息写入至目标数据库中,则对于每个第一消息,基于该第一消息对应的哈希值,从至少一个预设窗口中选择与该第一消息匹配的预设窗口,即确定与该第一消息对应的第一哈希值匹配的预设窗口,并将其确定为该第一处理消息对应的第一窗口,即该第一哈希值对应的第一窗口。
在确定每个第一消息对应的第一窗口后,分别将每个第一消息发送至对应的第一窗口中,即在为第一窗口分配第一消息后,第一窗口利用相应的预设写入算子将其接收到的第一消息,即其分配的第一消息写入至目标数据库中,即通过第一窗口,将第一窗口对应的第一消息写入至目标数据库中。
可选的,每个预设窗口存在对应的哈希值范围。相应的,在确定第一消息对应的第一窗口时,将与第一消息对应的第一哈希值所在的哈希值范围对应的预设窗口作为该第一消息对应的第一窗口,即当第一消息对应的哈希值在某个预设窗口对应的哈希值范围内时,确定该预设窗口为该第一消息对应的第一窗口,即为与该第一消息对应的第一哈希值对应的第一窗口。
举例来说,如图3所示,第一消息A的哈希值为22,预设窗口包括预设窗口1和预设窗口2。预设窗口1对应的哈希值范围为0~50,预设窗口2对应的哈希值范围为51~100,则确定预设窗口1为第一消息A对应的第一窗口。
另外,可选的,第一窗口的数量为至少一个。相应的,当各个第一消息对应的第一哈希值均在一个预设窗口对应的哈希值范围内,则第一窗口的数量为一个,当不同第一消息对应的第一哈希值在不同预设窗口对应的哈希值范围内,则第一窗口的数量为多个。
另外,可选的,在获取到第二消息时,确定第二消息对应的第二哈希值。根据第二哈希值从多个预设窗口中确定第二哈希值对应的第二窗口,并将第二消息发送至第二窗口,以使第二窗口通过相应的写入算子将第二消息存储至目标数据库中。
具体的,在获取到第二消息时,根据该第二消息对应的哈希值,即第二哈希值,从多个预设窗口中确定该第二消息对应的第二窗口,即该第二哈希值对应的第二窗口,以利用第二窗口处理该第二处理消息,实现通过不同窗口,即多个窗口同时处理待处理消息。
其中,第二消息的数量为至少一个。另外,第二消息可以为第一消息,也可以不为,在此,不对其进行限定。
在本公开实施例中,在获取到至少一个第一消息后,根据每个第一消息对应的哈希值,将第一消息散列发送到不同的窗口,以使不同窗口同时将其接收到的第一消息写入至目标数据库中,从而实现在短时间内处理大量数据的高并发效果,提高数据写入的效率,进而可以保证数据写入的及时性,避免目标数据库由于未处理的数据过多导致运行崩溃,保证目标数据库的可靠性及稳定性,提高用户体验。
在本实施例中,在获取到需写入目标数据库中的第一消息时,计算第一消息对应的第一哈希值,并为第一消息分配相应的预设窗口,即从多个预设窗口中确定该第一哈希值对应的第一窗口,即确定该第一消息对应的第一窗口。在确定第一消息对应的预设窗口后,将第一消息发送至对应的第一窗口,以使该第一窗口通过预设写入算子将该第一消息写入至目标数据库中,由于是存在多个预设窗口,因此,多个预设窗口均可以将接收到消息写入至目标数据库中,实现消息的并发写入,提高消息的写入效率,即使当第一消息的数量较多时,也可以在较短时间内将大量消息写入至目标数据库中,即可以及时将消息写入至目标数据库中,保证数据处理的实时性,提高用户体验。
参考图4,图4为本公开实施例提供的消息处理方法流程示意图二。本实施例中详细描述在获取到第一消息后,需要先过滤掉不符合规范的第一消息的过程,该消息处理方法包括:
S401:获取第一消息,并获取消息筛选规则。
在本公开实施例中,在得到第一消息后,需要对其进行过滤,即过滤第一消息中不符合规范的消息,则获取消息筛选规则,以供利用该消息筛选规则对第一消息进行过滤。
在本公开实施例中,可选的,消息筛选规则包括消息覆盖规则和/或时效筛选规则。
其中,消息覆盖规则表示利用较晚的消息覆盖较早的消息。
其中,时效筛选规则表示筛选在特定时间内的消息,即过滤掉未在特定时间内的消息。可选的,时效筛选规则包括有效时段。
可以理解,消息筛选规则也可以包括其它定制规则,用户可以根据实际需求进行规则定制,以筛选出所需的第一消息。
在任意实施例中,可选的,第一消息包括消息标识、消息时间、消息文本内容等。
其中,消息标识为第一消息的消息主键,其具有唯一性。具体的,消息标识包括ID标识,例如,评论ID、订单ID等。
其中,消息时间包括消息创建时间和/或消息消费时间。
具体的,第一消息对应的消息创建时间表示生成该第一消息的时间,即该第一消息对应的原始消息的生成时间。第一消息对应的消息消费时间表示第一设备从消息队列中消费该第一消息,即该第一消息对应的原始消息的时间,相当于第一设备接收到该第一消息对应的原始消息的时间。
S402:从第一消息中确定满足消息筛选规则的第一消息,并将其确定为待删除消息。
在本公开实施例中,在得到消息筛选规则后,从至少一个第一消息中确定满足消息筛选规则的第一消息,即按照该消息筛选规则从第一消息中确定满足该消息筛选规则的第一消息,即不符合规范的第一消息。
可选的,当消息筛选规则包括时效筛选规则时,获取第一消息中的消息时间。若第一消息中的消息时间不在有效时段内,则确定第一消息为满足时效筛选规则的第一消息。
具体的,当消息筛选规则包括时效筛选规则时,表明要过滤掉不属于特定时间内的第一消息,则对于每个第一消息,在确定该第一消息中的消息时间,即消息创建时间不在有效时段内时,表明该第一消息不是所需的第一消息,即为不符合规范的消息,则确定该第一消息满足时效筛选规则,并将该第一消息作为待删除消息,即为需过滤掉的第一消息。
在确定第一消息中的消息时间在有效时段内时,表明该第一消息为不满足时效筛选规则的第一消息,该第一消息符合规范。
可选的,当消息筛选规则包括消息覆盖规则时,获取第一消息中的消息标识。从第一消息中获取消息标识相同的第一消息,并将消息标识相同的第一消息作为消息组。获取消息组中除消息时间最晚的第一消息以外的第一消息,并将其确定为满足消息覆盖规则的第一消息。
具体的,当消息筛选规则包括消息覆盖规则时,表明需要用创建时间较晚的消息覆盖创建时间较早的消息,则获取各个第一消息中的消息标识。按照消息标识对至少一个第一消息进行分组,得到至少一个消息组,每个消息组包括至少一个第一消息,且消息组所包括的第一消息的消息标识均相同。
对于每个消息组,查找该消息组中的消息时间,即创建时间最晚,即最大的第一消息,并将其确定为该消息组对应的最新消息,该最新消息表示业务方最新产生的第一消息,即为创建时间最晚的第一消息,该消息组中的除最新消息以外的第一消息便为创建时间较早产生的消息,因此,将消息组中的除最新消息以外的第一消息确定为满足消息覆盖规则的第一消息,即需要过滤掉的第一消息。
举例来说,第一消息为评论消息,一条评论内容的创建、回复、点赞、状态修改等都会产生一条消息。当接收到评论消息1后,该评论消息1中的评论ID,即消息标识为1。当用户对评论消息1对应的评论内容点赞后,又产生的一条新的评论消息,即评论消息2,该评论消息2中的评论ID也为1,该新的评论消息2便为最新消息,评论消息1为较早产生的消息,即为满足消息覆盖规则的第一消息。
另外,在对第一消息进行过滤时,可以利用Flink中的Filter算子进行过滤。
S403:从第一消息中删除待删除消息。
在本公开实施例中,在确定待删除消息后,从所有第一消息,即获取到的第一消息中过滤掉该待删除消息,即去除不符合规范的第一消息,以使剩余的第一消息均为符合规范的第一消息,即该剩余的第一消息为需要写入至目标数据库中的消息。
S404:确定第一消息对应的第一哈希值。
在本公开实施例中,对于每个第一消息,即删除后的第一消息中的每个第一消息,获取第一消息中的消息标识。通过预设均匀散列算法,计算消息主键,即消息标识对应的哈希值以得到第一消息对应的哈希值,并将其作为该待处理消息对应的第一哈希值。
在本公开实施例中,在计算第一消息对应的哈希值时,可以基于预设均匀散列算法计算该第一消息中的消息标识对应的哈希值,以得到该第一消息对应的哈希值,从而可以根据第一消息对应的哈希值,即第一哈希值将第一消息均匀分配到相应的预设窗口。
可选的,预设均匀散列算法包括FNV(Fowler-Noll-Vo)哈希算法。
具体的,在计算哈希值、第一消息分发时,可以利用KeyBy算子,即KeyBy函数进行计算,并将第一消息分发至对应的窗口。
S405:根据第一哈希值从多个预设窗口中确定第一哈希值对应的第一窗口,并将第一消息发送至第一窗口,以使第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。
在本公开实施例中,在从所有第一消息,即至少一个第一消息删除待删除消息后,对于删除后的第一消息,即剩余的第一消息中的每个第一消息,基于该第一消息对应的哈希值为该第一消息分配预设窗口,即确定该第一消息对应的第一窗口,从而将第一消息均匀分配相应的第一窗口,以利用该第一窗口将该第一消息写入至目标数据库中。
在本公开实施例中,第一消息可能存在主键重复的情况,因此,可以按照消息筛选规则筛选出最新产生的消息,即有效的消息,从而可以仅将有效的消息写入至目标数据库中,避免无效消息的写入,从而减少资源的浪费。
在本公开实施例中,由于预设均匀散列算法能快速散列大量数据并保持较小的冲突率,它的高度分散使它适用于散列一些非常相近的字符串,因此,在按照根据预设均匀散列算法计算得到的哈希值散列第一消息时,可以将第一消息尽可能地均匀散列到不同的预设窗口,即第一窗口,从而有效避免因散列不均匀而引起的窗口倾斜问题,即不会出现部分预设窗口分配的第一消息过多,而部分预设窗口分配的第一消息过少的问题,进而提高消息写入的效率。
在本公开实施例中,在将第一消息写入目标数据库之前,先按照消息筛选规则对其进行筛选,以过滤掉不符合规范的第一消息,仅将符合规范的第一消息写入至目标数据库,减少数据的写入量,从而提高数据的写入效率以及减少资源的浪费,同时在利用目标数据库中的数据进行业务处理时,可以避免不符合规范的消息的干扰。
参考图5,图5为本公开实施例提供的消息处理方法流程示意图三。本实施例的方法可以应用于预设窗口,具体的,应用于预设窗口所在的第二设备上,即第二设备上的处理装置上,该消息处理方法包括:
S501:接收第一设备发送的第一消息,其中,第一消息是第一设备根据第一消息对应的第一哈希值发送的。
S502:通过预设写入算子,将多个第一消息保存至目标数据库中。
在本公开实施例中,第二设备,即预设窗口在接收到第一设备发送的第一消息后,表明需要将其接收到得第一消息写入至目标数据库中,则利用预设写入算子,将其保存至目标数据库中,以实现第一消息的及时写入。
在本公开实施例中,由于进行消息写入时,至少一个预设窗口,即第一窗口可以同时将其接收到的,即分配的第一消息写入至目标数据库中,从而实现短时间内处理大量数据的高并发效果,降低数据的延迟,实现数据实时处理。
参考图6,图6为本公开实施例提供的消息处理方法流程示意图四。本实施例中详细描述在将第一消息写入至目标数据库中时,可以利用写入算子进行写入的过程,该消息处理方法包括:
S601:接收第一设备发送的第一消息,其中,第一消息是第一设备根据第一消息对应的第一哈希值发送的。
在本公开实施例中,在第一消息抵达第二设备,即预设窗口时,该第一消息便为该预设窗口需保存至目标数据库的第一消息。获取当前未保存的所有第一消息的数目,即预设窗口,即第一窗口内需保存至目标数据库的第一消息的数目。若数目等于或大于预设数目,则将所有第一消息保存至目标数据库中。和/或,对于每个第一消息,获取第一消息对应的到达时长。若到达时长大于预设时长,则将第一消息保存至目标数据库中。
其中,当前未保存的所有第一消息的数目表示一个预设窗口,即第一窗口对应的当前需保存至目标数据库的所有第一消息的数目,即表示预设窗口接收到,但还未处理的第一消息的数目。
其中,第一消息对应的到达时长表示第一消息抵达第一窗口的时长,即从第一窗口接收到该第一消息到当前时刻所经历的时长。
在本公开实施例中,在窗口内加入内存缓存,即当抵达窗口中的第一消息超过一定时间和/或一定数量后,才将其写入至目标数据库,从而避免数据的频繁地写入。
在本公开实施例中,可选的,预设窗口还可以对当前未保存的第一消息进行消息合并,以减少消息的写入数量,从而提高消息的写入效率,其具体过程为:获取第一消息中的消息标识。获取消息标识相同的第一消息,并对其进行合并处理。
具体的,获取各个第一消息中的消息标识。对消息标识相同的第一消息进行合并处理,即将创建时间较晚的第一消息中的字段值覆盖创建时间较早的第一消息中的字段值,同时为了保证信息完整,还会保留创建时间较早的第一消息中存在但创建时间较晚的第一消息中未存在的字段及其对应的字段值。
举例来说,预设窗口,即第一窗口中的当前未保存的第一消息包括第一消息1和第一消息1。第一消息1包括字段1及字段1对应的字段值、字段2及其对应的字段值,第一消息2包括字段1及字段1对应的字段值。第一消息1的消息时间,即消息创建时间早于第一消息2的消息创建时间,且第一消息1和第一消息2的消息标识相同,则需要对第一消息1和第一消息1进行合并处理,即将第一消息2中的字段1对应的字段值覆盖第一消息1中的字段1对应的字段值,并保留第一消息1中的字段2及其对应的字段值,即合并后的第一消息包括字段1和字段2,该字段1对应的字段值为第一消息2中的字段1对应的字段值,该字段2对应的字段值为第一消息1中的字段2对应的字段值。
可以理解,在对第一消息进行合并处理时,也可以根据其它合并规则进行合并,本公开不对其进行限制。
S602:基于预设均匀分配算法,从预设写入算子中确定第一消息对应的预设写入算子。
在本公开实施例中,在将第一消息写入至目标数据库中时,可以利用写入算子对其进行写入。为了保证第一消息的写入消息,基于预设均匀分配算法,为第一消息分配一个预设写入算子,即对于每个第一消息,确定该第一消息对应的预设写入算子,以供利用该预设写入算子将该第一消息写入至目标数据库。
可选的,预设写入算子包括Sink算子,即Sink函数。预设均匀分配算法包括Rebalance分区算法。相应的,在基于Rebalance分区算法,从预设写入算子中确定第一消息对应的预设写入算子的过程为现有利用Rebalance分区算法进行均匀分配的过程类似,即根据各写入算子对应的未处理的消息的数目进行分配的,从而使得各个写入算子对应的未处理的消息的数目相差较小。
S603:通过第一消息对应的预设写入算子,将第一消息保存至目标数据库中。
在本公开实施例中,在确定每个第一消息对应的写入算子后,通过写入算子,将相应的第一消息保存至目标数据库中,以实现第一消息的成功保存,即成功处理。
在本公开实施例中,在需要利用写入算子将第一消息写入至目标数据库中时,利用预设均匀分配算法,将第一消息均匀分配至不同的写入算子,该第一消息便为其对应的写入算子的未处理的消息,以使不同写入算子对应的未处理的消息的总数目相差较小,从而可以保证消息的写入效率,实现高并发写入。
在任意公开实施例中,可选的,在将第一消息写入至目标数据库中时,根据第一消息中的消息标识对目标数据库进行消息查询,得到第一消息对应的查询结果。根据第一消息对应的查询结果,将第一消息保存至目标数据库中。
具体的,为了保证目标数据库中的消息主键的唯一性,在将第一消息保存至目标数据库之前,需要按照消息主键,即消息标识进行批量查询,以根据查询结果进行写入。
进一步的,可选的,根据第一消息对应的查询结果,将第一消息保存至目标数据库中,包括:
若第一消息对应的查询结果为消息未存在,则将第一消息添加至目标数据库中。
若第一消息对应的查询结果为消息已存在,则根据第一消息对目标数据库中与第一消息的消息标识相同的消息进行更新。
具体的,对于每条第一消息,从目标数据库中是否存在与该第一消息中的消息标识相同的标识,若存在,则确定该第一消息对应的查询结果为消息已存在,即表明目标数据库中已经存在与该消息标识相同的标识,则只需对该标识对应的消息,即记录进行更新即可,例如,该记录对应的点赞数为11,则利用该第一消息将该点赞数更新为12。
若不存在,则确定该第一消息对应的查询结果为消息不存在,即表明目标数据库中未存在与该消息标识相同的标识,则可以直接在目标数据库中插入该第一消息。
另外,在进行更新或插入时,可以进行批量操作,即根据需要写入数据库中的第一消息对应的查询结果,将第一消息分为两组,一组为查询结果为消息未存在的第一消息,则将该组内的第一消息批量插入至目标数据库中;另一组为查询结果为消息已存在的第一消息,则根据该组内的第一消息对目标数据库中的对应数据,即记录进行更新,从而保证消息的写入效率。
在本公开实施例中,在利用写入算子将第一消息写入至目标数据库时,可以利用预设均匀分区算法,将第一消息均匀分配至不同的写入算子,以使各写入算子需处理的第一消息的数目相差较小,实现消息的均匀分配,从而可以保证消息的写入效率,进而实现在短时间内处理大量数据的高并发的效果。
下面通过一个具体的应用实例,对消息处理过程的进行描述,如图7所示,其包括:
1)从消息队列(例如,Kafka)中获取接入的业务方所产生的原始数据。
2)对原始数据进行反序列化处理,即进行格式转换,以得到反序列化的原始数据,即格式相同的原始数据。
3)实时数据处理框架Flink中的相关算子对格式相同的原始消息进行相关处理,以得到第一消息,并将第一消息分发至不同预设窗口(例如,Window窗口)。具体过程为:Map算子对格式相同的原始消息的字段进行处理,以得到具备相同属性的第一消息,并将其发送至下游算子,即Filter算子。Filter算子过滤掉第一消息中的不符合规范的第一消息,并将其发送至下游算子,即KeyBy算子。KeyBy算子根据过滤后的第一消息的哈希值,将其均匀分配至对应的Window窗口。
4)预设窗口,即Window窗口对窗口内的第一消息进行重复主键的合并处理,并利用Rebalance分区算法将当前窗口内第一消息均匀分发至对应的写入算子,即Sink算子。
5)Sink算子将接收到的第一消息分批写入至目标数据库。
可以理解,图7中的算子的数量仅为一种示例,本公开不对其进行限制。
在本公开实施例中,在按照上述消息处理的流程将业务方产生的数据写入至目标数据库中时,数据实时处理系统的吞吐量得到了很大的提升,可以完成海量数据的实时转储,真正的异构数据实时接入。
对应于上文图2至图4实施例所述的消息处理方法,图8为本公开实施例提供的消息处理设备的结构框图一。为了便于说明,仅示出了与本公开实施例相关的部分。参照图8,消息处理设备80包括:第一处理模块801和第一收发模块802。
其中,第一处理模块801,用于获取第一消息,并确定第一消息对应的第一哈希值。
第一收发模块802,用于根据第一哈希值从多个预设窗口中确定第一哈希值对应的第一窗口,并将第一消息发送至第一窗口,以使第一窗口通过预设写入算子将第一消息存储至目标数据库中。
在本公开的一个实施例中,第一处理模块801还用于:
获取第一消息中的消息标识。
通过预设均匀散列算法,计算消息标识对应的哈希值以得到第一消息对应的哈希值。
在本公开的一个实施例中,第一处理模块801还用于:
获取消息筛选规则。
从第一消息中确定满足消息筛选规则的第一消息,并将其确定为待删除消息。
从第一消息中删除待删除消息。
在本公开的一个实施例中,消息筛选规则包括消息覆盖规则。
第一处理模块801还用于:
获取第一消息中的消息标识。
从第一消息中获取消息标识相同的第一消息,并将消息标识相同的第一消息作为消息组。
获取消息组中除消息时间最晚的第一消息以外的第一消息,并将其确定为满足消息覆盖规则的第一消息。
在本公开的一个实施例中,消息筛选规则包括时效筛选规则。其中,时效筛选规则包括有效时段。
第一处理模块801还用于:
获取第一消息中的消息时间。
若第一消息中的消息时间不在有效时段内,则确定第一消息为满足时效筛选规则的第一消息。
本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
对应于上文图5至图6实施例所述的消息处理方法,图9为本公开实施例提供的消息处理设备的结构框图二。为了便于说明,仅示出了与本公开实施例相关的部分。参照图9,消息处理设备90包括:第二收发模块901和第二处理模块902。
其中,第二收发模块901,用于接收第一设备发送的第一消息,其中,第一消息是第一设备根据第一消息对应的第一哈希值发送的。
第二处理模块902,用于通过预设写入算子,将第一消息保存至目标数据库中。
在本公开的一个实施例中,第二处理模块902还用于:
基于预设均匀分配算法,从预设写入算子中确定第一消息对应的预设写入算子。
通过第一消息对应的预设写入算子,将第一消息保存至目标数据库中。
在本公开的一个实施例中,第二处理模块902还用于:
根据第一消息中的消息标识对目标数据库进行消息查询,得到第一消息对应的查询结果。
根据第一消息对应的查询结果,将第一消息保存至目标数据库中。
在本公开的一个实施例中,第二处理模块902还用于:
若第一消息对应的查询结果为消息未存在,则将第一消息添加至目标数据库中。
若第一消息对应的查询结果为消息已存在,则根据第一消息对目标数据库中与第一消息的消息标识相同的消息进行更新。
在本公开的一个实施例中,第二处理模块902还用于:
获取当前未保存的所有第一消息的数目。
若数目等于或大于预设数目,则将所有第一消息保存至目标数据库中。
和/或,
获取第一消息对应的到达时长。
若到达时长大于预设时长,则将第一消息保存至目标数据库中。
在本公开的一个实施例中,第二处理模块902还用于:
获取第一消息中的消息标识。
获取消息标识相同的第一消息,并对其进行合并处理。
参考图10,其示出了适于用来实现本公开实施例的电子设备1000的结构示意图,该电子设备1000可以为第一设备和/或第二设备。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(PortableMedia Player,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图10示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000可以包括处理装置(例如中央处理器、图形处理器等)1001,其可以根据存储在只读存储器(Read Only Memory,简称ROM)1002中的程序或者从存储装置1009加载到随机访问存储器(Random Access Memory,简称RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有电子设备1000操作所需的各种程序和数据。处理装置1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
通常,以下装置可以连接至I/O接口1005:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1006;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置1007;包括例如磁带、硬盘等的存储装置1009;以及通信装置1009。通信装置1009可以允许电子设备1000与其他设备进行无线或有线通信以交换数据。虽然图10示出了具有各种装置的电子设备1000,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1009从网络上被下载和安装,或者从存储装置1009被安装,或者从ROM1002被安装。在该计算机程序被处理装置1001执行时,执行本公开实施例的方法中限定的上述功能。
本公开实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的消息处理方法。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种消息处理方法,包括:
获取第一消息,并确定所述第一消息对应的第一哈希值;
根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。
根据本公开的一个或多个实施例,所述确定所述第一消息对应的第一哈希值,包括:
获取所述第一消息中的消息标识;
通过预设均匀散列算法,计算所述消息标识对应的哈希值以得到所述第一消息对应的哈希值。
根据本公开的一个或多个实施例,所述方法还包括:
获取消息筛选规则;
从所述第一消息中确定满足所述消息筛选规则的第一消息,并将其确定为待删除消息;
从所述第一消息中删除所述待删除消息。
根据本公开的一个或多个实施例,所述消息筛选规则包括消息覆盖规则;
所述从所述第一消息中确定满足所述消息筛选规则的第一消息,包括:
获取第一消息中的消息标识;
从所述第一消息中获取消息标识相同的第一消息,并将消息标识相同的第一消息作为消息组;
获取所述消息组中除消息时间最晚的第一消息以外的第一消息,并将其确定为满足所述消息覆盖规则的第一消息。
根据本公开的一个或多个实施例,所述消息筛选规则包括时效筛选规则;其中,所述时效筛选规则包括有效时段;
所述从所述第一消息中确定满足所述消息筛选规则的第一消息,包括:
获取所述第一消息中的消息时间;
若所述第一消息中的消息时间不在所述有效时段内,则确定所述第一消息为满足所述时效筛选规则的第一消息。
第二方面,根据本公开的一个或多个实施例,提供了一种消息处理方法,包括:
接收第一设备发送的第一消息,其中,所述第一消息是所述第一设备根据所述第一消息对应的第一哈希值发送的;
通过预设写入算子,将所述第一消息保存至目标数据库中。
根据本公开的一个或多个实施例,所述通过预设写入算子,将所述第一消息保存至目标数据库中,包括:
基于预设均匀分配算法,从预设写入算子中确定所述第一消息对应的预设写入算子;
通过所述第一消息对应的预设写入算子,将所述第一消息保存至所述目标数据库中。
根据本公开的一个或多个实施例,所述将所述第一消息保存至目标数据库中,包括:
根据所述第一消息中的消息标识对所述目标数据库进行消息查询,得到所述第一消息对应的查询结果;
根据所述第一消息对应的查询结果,将所述第一消息保存至所述目标数据库中。
根据本公开的一个或多个实施例,所述根据所述第一消息对应的查询结果,将所述第一消息保存至所述目标数据库中,包括:
若所述第一消息对应的查询结果为消息未存在,则将所述第一消息添加至所述目标数据库中;
若所述第一消息对应的查询结果为消息已存在,则根据所述第一消息对所述目标数据库中与所述第一消息的消息标识相同的消息进行更新。
根据本公开的一个或多个实施例,所述将所述第一消息保存至目标数据库中,包括:
获取当前未保存的所有第一消息的数目;
若所述数目等于或大于预设数目,则将所有第一消息保存至所述目标数据库中;
和/或,
获取第一消息对应的到达时长;
若所述到达时长大于预设时长,则将所述第一消息保存至所述目标数据库中。
根据本公开的一个或多个实施例,所述方法还包括:
获取所述第一消息中的消息标识;
获取消息标识相同的第一消息,并对其进行合并处理。
第三方面,根据本公开的一个或多个实施例,提供了一种消息处理设备,包括:
第一处理模块,用于获取第一消息,并确定所述第一消息对应的第一哈希值;
第一收发模块,用于根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。
根据本公开的一个或多个实施例,所述第一处理模块还用于:
获取所述第一消息中的消息标识;
通过预设均匀散列算法,计算所述消息标识对应的哈希值以得到所述第一消息对应的哈希值。
根据本公开的一个或多个实施例,所述第一处理模块还用于:
获取消息筛选规则;
从所述第一消息中确定满足所述消息筛选规则的第一消息,并将其确定为待删除消息;
从所述第一消息中删除所述待删除消息。
根据本公开的一个或多个实施例,所述消息筛选规则包括消息覆盖规则;
所述第一处理模块还用于:
获取第一消息中的消息标识;
从所述第一消息中获取消息标识相同的第一消息,并将消息标识相同的第一消息作为消息组;
获取所述消息组中除消息时间最晚的第一消息以外的第一消息,并将其确定为满足所述消息覆盖规则的第一消息。
根据本公开的一个或多个实施例,所述消息筛选规则包括时效筛选规则;其中,所述时效筛选规则包括有效时段;
所述第一处理模块还用于:
获取所述第一消息中的消息时间;
若所述第一消息中的消息时间不在所述有效时段内,则确定所述第一消息为满足所述时效筛选规则的第一消息。
第四方面,根据本公开的一个或多个实施例,提供了一种消息处理设备,包括:
第二收发模块,用于接收第一设备发送的第一消息,其中,所述第一消息是所述第一设备根据所述第一消息对应的第一哈希值发送的;
第二处理模块,用于通过预设写入算子,将所述第一消息保存至目标数据库中。
根据本公开的一个或多个实施例,所述第二处理模块还用于:
基于预设均匀分配算法,从预设写入算子中确定所述第一消息对应的预设写入算子;
通过所述第一消息对应的预设写入算子,将所述第一消息保存至所述目标数据库中。
根据本公开的一个或多个实施例,所述第二处理模块还用于:
根据所述第一消息中的消息标识对所述目标数据库进行消息查询,得到所述第一消息对应的查询结果;
根据所述第一消息对应的查询结果,将所述第一消息保存至所述目标数据库中。
根据本公开的一个或多个实施例,所述第二处理模块还用于:
若所述第一消息对应的查询结果为消息未存在,则将所述第一消息添加至所述目标数据库中;
若所述第一消息对应的查询结果为消息已存在,则根据所述第一消息对所述目标数据库中与所述第一消息的消息标识相同的消息进行更新。
根据本公开的一个或多个实施例,所述第二处理模块还用于:
获取当前未保存的所有第一消息的数目;
若所述数目等于或大于预设数目,则将所有第一消息保存至所述目标数据库中;
和/或,
获取第一消息对应的到达时长;
若所述到达时长大于预设时长,则将所述第一消息保存至所述目标数据库中。
根据本公开的一个或多个实施例,所述第二处理模块还用于:
获取所述第一消息中的消息标识;
获取消息标识相同的第一消息,并对其进行合并处理。
第五方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的消息处理方法。
第六方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第二方面以及第二方面各种可能的设计所述的消息处理方法。
第七方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的消息处理方法。
第八方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第二方面以及第二方面各种可能的设计所述的消息处理方法。
第九方面,根据本公开的一个或多个实施例,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的消息处理方法。
第十方面,根据本公开的一个或多个实施例,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第二方面以及第二方面各种可能的设计所述的消息处理方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (19)
1.一种消息处理方法,其特征在于,包括:
获取第一消息,并确定所述第一消息对应的第一哈希值;
根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一消息对应的第一哈希值,包括:
获取所述第一消息中的消息标识;
通过预设均匀散列算法,计算所述消息标识对应的哈希值以得到所述第一消息对应的哈希值。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获取消息筛选规则;
从所述第一消息中确定满足所述消息筛选规则的第一消息,并将其确定为待删除消息;
从所述第一消息中删除所述待删除消息。
4.根据权利要求3所述的方法,其特征在于,所述消息筛选规则包括消息覆盖规则;
所述从所述第一消息中确定满足所述消息筛选规则的第一消息,包括:
获取第一消息中的消息标识;
从所述第一消息中获取消息标识相同的第一消息,并将消息标识相同的第一消息作为消息组;
获取所述消息组中除消息时间最晚的第一消息以外的第一消息,并将其确定为满足所述消息覆盖规则的第一消息。
5.根据权利要求3所述的方法,其特征在于,所述消息筛选规则包括时效筛选规则;其中,所述时效筛选规则包括有效时段;
所述从所述第一消息中确定满足所述消息筛选规则的第一消息,包括:
获取所述第一消息中的消息时间;
若所述第一消息中的消息时间不在所述有效时段内,则确定所述第一消息为满足所述时效筛选规则的第一消息。
6.一种消息处理方法,其特征在于,包括:
接收第一设备发送的第一消息,其中,所述第一消息是所述第一设备根据所述第一消息对应的第一哈希值发送的;
通过预设写入算子,将所述第一消息保存至目标数据库中。
7.根据权利要求6所述的方法,其特征在于,所述通过预设写入算子,将所述第一消息保存至目标数据库中,包括:
基于预设均匀分配算法,从预设写入算子中确定所述第一消息对应的预设写入算子;
通过所述第一消息对应的预设写入算子,将所述第一消息保存至所述目标数据库中。
8.根据权利要求6所述的方法,其特征在于,所述将所述第一消息保存至目标数据库中,包括:
根据所述第一消息中的消息标识对所述目标数据库进行消息查询,得到所述第一消息对应的查询结果;
根据所述第一消息对应的查询结果,将所述第一消息保存至所述目标数据库中。
9.根据权利要求8所述的方法,其特征在于,所述根据所述第一消息对应的查询结果,将所述第一消息保存至所述目标数据库中,包括:
若所述第一消息对应的查询结果为消息未存在,则将所述第一消息添加至所述目标数据库中;
若所述第一消息对应的查询结果为消息已存在,则根据所述第一消息对所述目标数据库中与所述第一消息的消息标识相同的消息进行更新。
10.根据权利要求8所述的方法,其特征在于,所述将所述第一消息保存至目标数据库中,包括:
获取当前未保存的所有第一消息的数目;
若所述数目等于或大于预设数目,则将所有第一消息保存至所述目标数据库中;
和/或,
获取第一消息对应的到达时长;
若所述到达时长大于预设时长,则将所述第一消息保存至所述目标数据库中。
11.根据权利要求6至10任一项所述的方法,其特征在于,所述方法还包括:
获取所述第一消息中的消息标识;
获取消息标识相同的第一消息,并对其进行合并处理。
12.一种消息处理设备,其特征在于,包括:
第一处理模块,用于获取第一消息,并确定所述第一消息对应的第一哈希值;
第一收发模块,用于根据所述第一哈希值从多个预设窗口中确定所述第一哈希值对应的第一窗口,并将所述第一消息发送至所述第一窗口,以使所述第一窗口通过预设写入算子将所述第一消息存储至目标数据库中。
13.一种消息处理设备,其特征在于,包括:
第二收发模块,用于接收第一设备发送的第一消息,其中,所述第一消息是所述第一设备根据所述第一消息对应的第一哈希值发送的;
第二处理模块,用于通过预设写入算子,将所述第一消息保存至目标数据库中。
14.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至5任一项所述的消息处理方法。
15.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求6至11任一项所述的消息处理方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至5任一项所述的消息处理方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求6至11任一项所述的消息处理方法。
18.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述的消息处理方法。
19.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求6至11任一项所述的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111076629.0A CN115809153A (zh) | 2021-09-14 | 2021-09-14 | 消息处理方法、设备及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111076629.0A CN115809153A (zh) | 2021-09-14 | 2021-09-14 | 消息处理方法、设备及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115809153A true CN115809153A (zh) | 2023-03-17 |
Family
ID=85481613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111076629.0A Pending CN115809153A (zh) | 2021-09-14 | 2021-09-14 | 消息处理方法、设备及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115809153A (zh) |
-
2021
- 2021-09-14 CN CN202111076629.0A patent/CN115809153A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209306A (zh) | 业务逻辑判断方法、装置、电子设备和存储介质 | |
CN111241137A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113347276B (zh) | 一种基于gis的移动式访问系统 | |
CN110852720A (zh) | 文档的处理方法、装置、设备及存储介质 | |
CN111641690B (zh) | 会话消息处理方法、装置及电子设备 | |
CN117130998A (zh) | 日志信息的处理方法、装置、设备及存储介质 | |
CN113807056B (zh) | 一种文档名称序号纠错方法、装置和设备 | |
CN115809153A (zh) | 消息处理方法、设备及电子设备 | |
CN115344688A (zh) | 业务数据展示方法、装置、电子设备和计算机可读介质 | |
CN114969044A (zh) | 一种基于数据湖的物化列创建方法以及数据查询方法 | |
CN113918659A (zh) | 数据操作方法、装置、存储介质及电子设备 | |
CN111787043A (zh) | 数据请求方法和装置 | |
CN112100159A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
CN110716885B (zh) | 数据管理方法、装置、电子设备和存储介质 | |
CN111143355A (zh) | 数据处理方法及装置 | |
CN111753238A (zh) | 数据映射方法、装置和电子设备 | |
CN110752958A (zh) | 用户行为分析方法、装置、设备及存储介质 | |
CN115994120B (zh) | 数据文件合并方法、装置、电子设备和计算机可读介质 | |
CN115225586B (zh) | 数据包发送方法、装置、设备及计算机可读存储介质 | |
CN116431523B (zh) | 一种测试数据管理方法、装置、设备及存储介质 | |
CN116541421B (zh) | 地址查询信息生成方法、装置、电子设备与计算机介质 | |
CN111258670B (zh) | 组件数据的管理方法、装置、电子设备和存储介质 | |
CN109710673B (zh) | 作品处理方法、装置、设备和介质 | |
CN110619093B (zh) | 确定搜索项目的顺序的方法、装置、电子设备和计算机可读存储介质 | |
CN114969042A (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 |