CN114253745B - 一种消息去重处理方法、装置、存储介质和电子设备 - Google Patents
一种消息去重处理方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN114253745B CN114253745B CN202111546241.2A CN202111546241A CN114253745B CN 114253745 B CN114253745 B CN 114253745B CN 202111546241 A CN202111546241 A CN 202111546241A CN 114253745 B CN114253745 B CN 114253745B
- Authority
- CN
- China
- Prior art keywords
- message
- user identifier
- database
- processes
- deduplication processing
- 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
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
Abstract
本申请实施例公开了一种消息去重处理方法和装置,以及存储介质和电子设备,其方法包括:通过多个第一进程接收消息;以及对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,以得到可推送的消息。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种消息去重处理方法、装置、存储介质、电子设备和计算机程序产品。
背景技术
在实际业务场景中,用户往往有消息去重处理的需求。例如,对于具有推荐功能的应用程序而言,在同一时间段内,应避免给同一用户多次重复推送同一推荐内容,或者推送同一推荐广告;否则,会降低用户体验度。
在上述应用场景中,为了满足速度要求,一般会响应于同一用户的推荐指令,采用多进程同步进行操作,其中,推荐指令内携带有符合用户偏好度的至少一个搜索关键词。在实际应用场景中,由于多进程消息处理的并发性较高,往往会导致消息去重处理结果的可靠性较低。
如何提高消息去重处理结果的可靠性,是待解决的技术问题。
发明内容
基于此,有必要针对基于现有的消息去重处理结果的可靠性较低的问题,提供一种消息去重处理方法、装置、存储介质和电子设备。
第一方面,本申请实施例提供了一种消息去重处理方法,所述方法包括:
通过多个第一进程接收消息;
对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,以得到可推送的消息。
在一种实施方式中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:
将通过所述多个第一进程中的每个进程接收到的消息存入去重消息队列中;
通过所述第二进程从所述去重消息队列中一一读取消息,并对读取的消息进行单进程去重处理。
在一种实施方式中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:
对通过所述多个第一进程中的每个进程接收到的消息,通过所述第二进程从所述每个进程的接口一一读取消息,并对读取的消息进行单进程去重处理。
在一种实施方式中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:
对通过所述多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第一数据库中是否已存在所述用户标识;
响应于查询到所述第一数据库中已存在所述用户标识,丢弃所述当前消息;和\或
响应于查询到所述第一数据库中不存在所述用户标识,将当前时刻作为所述用户标识的时间戳信息,并将所述时间戳信息与所述用户标识关联存入所述第一数据库,并将所述当前消息推送出去。
在一种实施方式中,还包括:
基于所述第一数据库中存入的各用户标识以及所述各用户标识的时间戳信息,周期性对所述第一数据库中满足预设条件的用户标识执行删除操作。
在一种实施方式中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:对通过所述多个第一进程中的每个进程接收到的每个消息,
提取当前消息中携带的用户标识;
查询第二数据库中是否已存在所述用户标识;
响应于查询到所述第二数据库中已存在所述用户标识,基于当前时刻和所述第二数据库中存入的所述用户标识的时间戳信息,确定所述用户标识在所述第二数据库中的存储时长是否已超出预设时长;
响应于确定所述用户标识在所述第二数据库中的存储时长没有超出所述预设时长,丢弃所述当前消息,并将所述当前时刻作为所述用户标识的时间戳信息,同时将该时间戳信息与所述用户标识关联存入所述第二数据库;和/或
响应于确定所述用户标识在所述第二数据库中的存储时长已超出所述预设时长,将所述当前时刻作为所述用户标识的时间戳信息,并将该时间戳信息与所述用户标识关联存入所述第二数据库,同时将所述当前消息推送出去。
在一种实施方式中,还包括:
响应于查询到所述第二数据库中不存在所述用户标识,将所述当前时刻作为所述用户标识的时间戳信息,并将该时间戳信息与所述用户标识关联存入所述第二数据库,同时将所述当前消息推送出去。
在一种实施方式中,还包括:
在将所述当前消息推送出去之前,先将所述当前消息存入待推送消息队列中。
在一种实施方式中,将所述当前消息推送出去,包括:
监听所述待推送消息队列;
基于所述待推送消息队列中各消息的用户标识,从多个第三进程中分别选出与所述各消息匹配的进程用以进行消息推送。
第二方面,本申请实施例提供了一种消息去重处理装置,所述装置包括:
接收模块,用于通过多个第一进程接收消息;
去重模块,用于对所述接收模块接收的通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,以得到可推送的消息。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述的方法步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行上述的方法步骤。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述的方法步骤。
在本申请实施例中,通过多个第一进程接收消息;以及对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,以得到可推送的消息。本申请实施例提供的消息去重处理方法,由于对多个第一进程中的每个进程接收到的消息,通过不同于任一第一进程的第二进程进行单进程去重处理,这样,能够有效地避免相关技术中多进程接收消息后各自进行消息去重处理而导致消息去重处理结果的可靠性较低的问题,从而可以提高去重处理结果的可靠性。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出了本申请的一些实施方式所提供的一种应用场景的示意图;
图2为根据本申请一示例性实施例提供的消息去重处理方法的流程图;
图3为根据本申请一示例性实施例提供的具体应用场景下的消息去重处理方法中消息接收过程的流程图;
图4为根据本申请一示例性实施例提供的具体应用场景下的消息去重处理方法中进行消息去重处理的一流程图;
图5为根据本申请一示例性实施例提供的具体应用场景下的消息去重处理方法中进行消息去重处理的另一流程图;
图6为根据本申请一示例性实施例提供的具体应用场景下的消息去重处理方法中多个进程同时消费的一流程图;
图7为根据本申请一示例性实施例提供的具体应用场景下的消息去重处理方法的一流程图;
图8为根据本申请一示例性实施例提供的具体应用场景下的消息去重处理方法的另一流程图;
图9为根据本申请一示例性实施例提供的消息去重处理装置900的结构示意图;
图10示出了本申请一示例性实施例提供的一种电子设备的示意图;
图11示出了本申请一示例性实施例提供的一种计算机可读介质的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
另外,术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参考图1,其示出了本申请的一些实施方式所提供的一种应用场景示意图,图1为消息去重处理后进行消息推送的展示页面图,如图1所示,随着自媒体及社交应用软件的普及,越来越多的应用提供了消息实时展示功能,用户在这些应用中可以接收消息,并对接收到的消息进行实时展示,图1中展示了“朋友圈”的消息去重处理后进行消息推送的展示页面的示意图。如图1所示,展示了用户名为佛系在1小时前发送的消息“人生就像巧克力”。实际应用中,通过本申请实施例提供的消息去重处理方法,可以对重复的消息进行去重处理,大大地提高了去重处理结果的可靠性,确保在如图1所示的展示页面上,针对相同的消息,仅展示一条消息的内容,例如,如图1所示的,展示一条1小时前佛系的消息“人生就像巧克力”。
基于上述应用场景的介绍,本申请实施例提供一种消息去重处理方法及装置、一种电子设备以及计算机可读介质,下面结合附图进行说明。
请参考图2,其示出了本申请的一些实施方式所提供的一种消息去重处理方法的流程图,如图所示,消息去重处理方法可以包括以下步骤:
步骤S201:通过多个第一进程接收消息。
在本申请实施例中,对通过多个第一进程接收到的消息的内容不做具体限制,可以为如图1所示的在1小时前接收到的消息的内容为“人生就像巧克力”。
实际应用场景中,为了避免拥塞而导致消息延迟现象的发生,可以通过多个第一进程接收消息。
如图3所示,为具体应用场景下的消息去重处理方法中消息接收过程的流程图,该消息接收过程可以包括以下步骤:
步骤S301:多进程接收待去重的消息;
步骤S302:将待去重的消息加入至去重redis队列中。
针对如图3所示应用场景下的消息接收过程的描述,参见前述相同或相似部分的描述,在此不再赘述。
步骤S202:对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,以得到可推送的消息。
在本申请实施例中,在通过多个第一进程接收消息之后,对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,这样,能够有效地避免现有多进程消息处理方法因并发性较高而导致消息去重处理结果的可靠性较低的现象,从而大大地提高了去重处理结果的可靠性。
在本申请实施例中,可以根据不同应用场景中通过多个第一进程接收到的消息的消息量的不同,采用不同的方式通过第二进程对接收到的消息进程单进程去重处理。根据所采用的消息去重处理方式的不同,本步骤S202至少可以有以下不同的实施方式:
实施方式一:
当通过多个第一进程接收到的消息的消息量过多时,为了保证数据匀速处理,避免因数据量激增而导致异常现象的出现,可以采用去重消息队列的方式,在实际应用场景中,可以采用去重消息redis队列的方式,对通过多个第一进程接收到的消息进行消息去重处理,以得到可推送的消息。
具体地,对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,包括以下步骤:
将通过多个第一进程中的每个进程接收到的消息存入去重消息队列中;
通过第二进程从去重消息队列中一一读取消息,并对读取的消息进行单进程去重处理。
实施方式二:
当通过多个第一进程接收到的消息的消息量并不多时,为了保证数据快速处理,且易于实现,可以采用接口的方式进行消息单进程去重处理。
具体地,对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,包括以下步骤:
对通过多个第一进程中的每个进程接收到的消息,通过第二进程从每个进程的接口一一读取消息,并对读取的消息进行单进程去重处理。
在本申请实施例中,可以根据单进程消息去重所采用的的数据库不同,对通过多个第一进程接收到的消息,采用多种单进程消息去重处理方式。基于单进程消息去重所采用的数据库不同,例如,可以采用与预设时间周期的第一数据库对应的单进程消息去重方式,还可以采用与任意一个带有存储功能的第二数据库对应的单进程消息去重方式。根据所采用的单进程消息去重处理方式的不同,本步骤S202至少可以有以下不同的实施方式:
实施方式三:
对通过多个第一进程接收到的消息采用的单进程消息去重处理方式可以为,采用与第一数据库对应的单进程消息去重处理方式,其中,第一数据库为具有生命周期(预设时间周期)的第一数据库。
在实际应用场景中,第一数据库的预设时间周期可以基于不同应用场景的需求进行灵活配置。例如,设置的预设时间周期可以为一天,若消息的用户标识为{user_id:1234},则一天后,该具有用户标识为{user_id:1234}的消息会被自动删除,这种方式在实际应用场景中易于实现。
在一种可能的实现方式中,对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,包括以下步骤:
对通过多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第一数据库中是否已存在用户标识;
响应于查询到第一数据库中已存在用户标识,丢弃当前消息;这样,能够节省有限的存储空间。或者,在一种可能的实现方式中,响应于查询到第一数据库中已存在用户标识,丢弃当前消息,同时将当前时刻作为该用户标识的时间戳信息,并将该时间戳信息与该用户标识关联存入第一数据库中。
在一种可能的实现方式中,对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,包括以下步骤:
响应于查询到第一数据库中不存在用户标识,将当前时刻作为用户标识的时间戳信息,并将时间戳信息与用户标识关联存入第一数据库,并将当前消息推送出去。
在一种可能的实现方式中,本申请实施例提供的消息去重处理方法还包括以下步骤:
基于第一数据库中存入的各用户标识以及各用户标识的时间戳信息,周期性对第一数据库中满足预设条件的用户标识执行删除操作;这样,通过周期性删除满足预设条件的用户标识,可以节省有限的存储空间。
在本申请实施例中,对上述步骤中周期性对应的预设时间周期并不做具体限制。
如图4所示,本申请一示例性实施例提供的具体应用场景下的消息去重处理方法中进行消息去重处理的一流程图。
针对如图4所示应用场景下的消息去重处理过程的描述,参见前述相同或相似部分的描述,在此不再赘述。
需要说明的是,如图4所示的具有生命周期的数据库为前述所描述的第一数据库,该实例中的生命周期即为预设时间周期。此外,下游的redis队列是前述描述中去重消息队列(例如,去重redis消息队列)而言的。
实施方式四:
对通过多个第一进程接收到的消息采用的单进程消息去重处理方式可以为,采用与第二数据库对应的单进程消息去重处理方式,其中,第二数据库为具有存储功能的数据库。
上述消息去重处理方式的优点为:可以设置任意预设间隔时长,并根据不同应用场景的需求,对预设间隔时长进行调整,增加了适用于的应用场景的灵活性。
在一种可能的实现方式中,对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,包括以下步骤:
对通过多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第二数据库中是否已存在用户标识;
响应于查询到第二数据库中已存在用户标识,基于当前时刻和第二数据库中存入的用户标识的时间戳信息,确定用户标识在第二数据库中的存储时长是否已超出预设时长;
响应于确定用户标识在第二数据库中的存储时长没有超出预设时长,丢弃当前消息,并将当前时刻作为用户标识的时间戳信息,同时将该时间戳信息与用户标识关联存入第二数据库。
在一种可能的实现方式中,对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,包括以下步骤:
对通过多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第二数据库中是否已存在用户标识;
响应于查询到第二数据库中已存在用户标识,基于当前时刻和第二数据库中存入的用户标识的时间戳信息,确定用户标识在第二数据库中的存储时长是否已超出预设时长;
响应于确定用户标识在第二数据库中的存储时长已超出预设时长,将当前时刻作为用户标识的时间戳信息,并将该时间戳信息与用户标识关联存入第二数据库,同时将当前消息推送出去;这样,能够保证存储于第二数据库中的时间戳和关联的用户标识均是最新的数据。
在一种可能的实现方式中,本申请实施例提供的消息去重处理方法还包括以下步骤:
响应于查询到第二数据库中不存在用户标识,将当前时刻作为用户标识的时间戳信息,并将该时间戳信息与用户标识关联存入第二数据库,同时将当前消息推送出去。
在某一具体应用场景中,将时间戳信息与用户标识关联存储的存储格式可以为:{user_id:1234,time_stamp:20211001010334}。
如图5所示,本申请一示例性实施例提供的具体应用场景下的消息去重处理方法中进行消息去重处理的另一流程图。
针对如图5所示应用场景下的消息去重处理过程的描述,参见前述相同或相似部分的描述,在此不再赘述。
需要说明的是,如图5所示的具有任意存储功能的数据库为前述所描述的第二数据库。此外,下游的redis队列是前述描述中去重消息队列(例如,去重redis消息队列)而言的。
在一种可能的实现方式中,为了保证数据匀速处理,避免因数据量激增而导致异常现象出现,本申请实施例提供的消息去重处理方法还包括以下步骤:在将当前消息推送出去之前,先将当前消息存入待推送消息队列中。
在一种可能的实现方式中,将当前消息推送出去,包括以下步骤:
监听待推送消息队列;
基于待推送消息队列中各消息的用户标识,从多个第三进程中分别选出与各消息匹配的进程用以进行消息推送;这样,能够做到基于预先配置的匹配的进程,对消息进行有序推送,同时也提高了消息推送的精准度。
在实际应用场景中,除了采用上述与各消息匹配的第三进程用以进行消息推送之外,还可以由多个第三进程随机抢待推送的消息以进行消息推送。
如图6所示,为根据本申请一示例性实施例提供的具体应用场景下的消息去重处理方法中多个进程同时消费的一流程图,多个进程同时消费的过程可以包括以下步骤:
步骤S601:监听redis队列;
步骤S602:多个消费者同时消费。
在本申请实施例中,多个消费者就相当于步骤S203中的多个待选进程,消费过程就相当于步骤S203中抢第二消息的过程,在此不再赘述。
如图7所示的应用场景中,在确定第一数据库(具有预设时间周期)中存在具有用户标识“1234”的消息“人生就像巧克力”、且该消息为没有重复的消息时,从三个待选进程中,B待选进程优先抢到具有用户标识“1234”的消息“人生就像巧克力”,就确定为用于处理该消息的目标进程。
同理,如图8所示的应用场景中,在确定第二数据库(具有预设间隔时长)中存在具有用户标识“1234”的消息“人生就像巧克力”、且该消息为没有重复的消息时,从三个待选进程中,C待选进程优先抢到具有用户标识“1234”的消息“人生就像巧克力”,就确定为用于处理该消息的目标进程。
如图7所示,在确定目标进程为B进程时,将经由去重处理后的消息推送至目标用户A的终端设备上。
或者,如图8所示,在确定目标进程为C进程时,将经由去重处理后的消息推送至目标用户A的终端设备上。
在上述的实施例中,提供了一种消息去重处理方法,与之相对应的,本申请还提供一种消息去重处理装置。本申请实施例提供的消息去重处理装置可以实施上述消息去重处理方法,该消息去重处理装置可以通过软件、硬件或软硬结合的方式来实现。例如,该消息去重处理装置可以包括集成的或分开的功能模块或单元来执行上述各方法中的对应步骤。
请参考图9,其示出了本申请的一些实施方式所提供的一种消息去重处理装置的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
如图9所示,消息去重处理装置900可以包括:
接收模块901,用于通过多个第一进程接收消息;
去重模块902,用于对通过多个第一进程中的每个进程接收到的消息,通过不同于多个第一进程的第二进程进行单进程去重处理,以得到可推送的消息。
在本申请实施例的一些实施方式中,去重模块902用于:将通过多个第一进程中的每个进程接收到的消息存入去重消息队列中;
通过第二进程从去重消息队列中一一读取消息,并对读取的消息进行单进程去重处理。
在本申请实施例的一些实施方式中,去重模块902用于:
对通过多个第一进程中的每个进程接收到的消息,通过第二进程从每个进程的接口一一读取消息,并对读取的消息进行单进程去重处理。
在本申请实施例的一些实施方式中,去重模块902具体用于:
对通过多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第一数据库中是否已存在用户标识;
响应于查询到第一数据库中已存在用户标识,丢弃当前消息;和\或
响应于查询到第一数据库中不存在用户标识,将当前时刻作为用户标识的时间戳信息,并将时间戳信息与用户标识关联存入第一数据库,并将当前消息推送出去。
在本申请实施例的一些实施方式中,所述装置900,还可以包括:
删除模块(在图9中未示出),用于基于第一数据库中存入的各用户标识以及各用户标识的时间戳信息,周期性对第一数据库中满足预设条件的用户标识执行删除操作。
在本申请实施例的一些实施方式中,去重模块902具体用于:
对通过多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第二数据库中是否已存在用户标识;
响应于查询到第二数据库中已存在用户标识,基于当前时刻和第二数据库中存入的用户标识的时间戳信息,确定用户标识在第二数据库中的存储时长是否已超出预设时长;
响应于确定用户标识在第二数据库中的存储时长没有超出预设时长,丢弃当前消息,并将当前时刻作为用户标识的时间戳信息,同时将该时间戳信息与用户标识关联存入第二数据库;和/或
响应于确定用户标识在第二数据库中的存储时长已超出预设时长,将当前时刻作为用户标识的时间戳信息,并将该时间戳信息与用户标识关联存入第二数据库,同时将当前消息推送出去。
在本申请实施例的一些实施方式中,所述装置900,还可以包括:
关联存储模块(在图9中未示出),用于响应于查询到第二数据库中不存在用户标识,将当前时刻作为用户标识的时间戳信息,并将该时间戳信息与用户标识关联存入第二数据库;
信息推送模块(在图9中未示出),用于同时将当前消息推送出去。
在本申请实施例的一些实施方式中,所述装置900,还可以包括:
缓存模块(在图9中未示出),用于在将当前消息推送出去之前,先将当前消息存入待推送消息队列中。
在本申请实施例的一些实施方式中,信息推送模块具体用于:
监听待推送消息队列;
基于待推送消息队列中各消息的用户标识,从多个第三进程中分别选出与各消息匹配的进程用以进行消息推送。
在本申请实施例的一些实施方式中本申请实施例提供的消息去重处理装置900,与本申请前述实施例提供的消息去重处理方法出于相同的发明构思,具有相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的消息去重处理方法对应的电子设备,所述电子设备可以是用于服务端的电子设备,例如服务器,包括独立的服务器和分布式服务器集群等,以执行上述消息去重处理方法;所述电子设备也可以是用于客户端的电子设备,例如手机、笔记本电脑、平板电脑、台式机电脑等,以执行上述消息去重处理方法。
请参考图10,其示出了本申请的一些实施方式所提供的一种电子设备的示意图。如图10所示,所述电子设备40包括:处理器400,存储器401,总线402和通信接口403,所述处理器400、通信接口403和存储器401通过总线402连接;所述存储器401中存储有可在所述处理器400上运行的计算机程序,所述处理器400运行所述计算机程序时执行本申请前述消息去重处理方法。
其中,存储器401可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口403(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
总线402可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器401用于存储程序,所述处理器400在接收到执行指令后,执行所述程序,前述本申请实施例任一实施方式揭示的消息去重处理方法可以应用于处理器400中,或者由处理器400实现。
处理器400可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器400中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器400可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器400读取存储器401中的信息,结合其硬件完成上述方法的步骤。
本申请实施例提供的电子设备与本申请实施例提供的消息去重处理方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
本申请实施方式还提供一种与前述实施方式所提供的消息去重处理方法对应的计算机可读介质,请参考图11,其示出的计算机可读存储介质为光盘50,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述消息去重处理方法。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的消息去重处理方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
需要说明的是,附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围,其均应涵盖在本申请的权利要求和说明书的范围当中。
Claims (11)
1.一种消息去重处理方法,包括:
通过多个第一进程接收消息;
对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,以得到可推送的消息;
其中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:
对通过所述多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第二数据库中是否已存在所述用户标识;
响应于查询到所述第二数据库中已存在所述用户标识,基于当前时刻和所述第二数据库中存入的所述用户标识的时间戳信息,确定所述用户标识在所述第二数据库中的存储时长是否已超出预设时长;
响应于确定所述用户标识在所述第二数据库中的存储时长没有超出所述预设时长,丢弃所述当前消息,并将所述当前时刻作为所述用户标识的时间戳信息,同时将该时间戳信息与所述用户标识关联存入所述第二数据库;和/或
响应于确定所述用户标识在所述第二数据库中的存储时长已超出所述预设时长,将所述当前时刻作为所述用户标识的时间戳信息,并将该时间戳信息与所述用户标识关联存入所述第二数据库,同时将所述当前消息推送出去。
2.根据权利要求1所述的方法,其中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:
将通过所述多个第一进程中的每个进程接收到的消息存入去重消息队列中;
通过所述第二进程从所述去重消息队列中一一读取消息,并对读取的消息进行单进程去重处理。
3.根据权利要求1所述的方法,其中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:
对通过所述多个第一进程中的每个进程接收到的消息,通过所述第二进程从所述每个进程的接口一一读取消息,并对读取的消息进行单进程去重处理。
4.根据权利要求1所述的方法,其中,对通过所述多个第一进程中的每个进程接收到的消息,通过不同于所述多个第一进程的第二进程进行单进程去重处理,包括:对通过所述多个第一进程中的每个进程接收到的每个消息,
提取当前消息中携带的用户标识;
查询第一数据库中是否已存在所述用户标识;
响应于查询到所述第一数据库中已存在所述用户标识,丢弃所述当前消息;和\或
响应于查询到所述第一数据库中不存在所述用户标识,将当前时刻作为所述用户标识的时间戳信息,并将所述时间戳信息与所述用户标识关联存入所述第一数据库,并将所述当前消息推送出去。
5.根据权利要求4所述的方法,还包括:
基于所述第一数据库中存入的各用户标识以及所述各用户标识的时间戳信息,周期性对所述第一数据库中满足预设条件的用户标识执行删除操作。
6.根据权利要求1所述的方法,还包括:
响应于查询到所述第二数据库中不存在所述用户标识,将所述当前时刻作为所述用户标识的时间戳信息,并将该时间戳信息与所述用户标识关联存入所述第二数据库,同时将所述当前消息推送出去。
7.根据权利要求1或4或6所述的方法,还包括:
在将所述当前消息推送出去之前,先将所述当前消息存入待推送消息队列中。
8.根据权利要求7所述的方法,其中,将所述当前消息推送出去,包括:
监听所述待推送消息队列;
基于所述待推送消息队列中各消息的用户标识,从多个第三进程中分别选出与所述各消息匹配的进程用以进行消息推送。
9.一种消息去重处理装置,包括:
接收模块,用于通过多个第一进程接收消息;
去重模块,用于:
对通过所述多个第一进程中的每个进程接收到的每个消息,提取当前消息中携带的用户标识;
查询第二数据库中是否已存在所述用户标识;
响应于查询到所述第二数据库中已存在所述用户标识,基于当前时刻和所述第二数据库中存入的所述用户标识的时间戳信息,确定所述用户标识在所述第二数据库中的存储时长是否已超出预设时长;
响应于确定所述用户标识在所述第二数据库中的存储时长没有超出所述预设时长,丢弃所述当前消息,并将所述当前时刻作为所述用户标识的时间戳信息,同时将该时间戳信息与所述用户标识关联存入所述第二数据库;和/或
响应于确定所述用户标识在所述第二数据库中的存储时长已超出所述预设时长,将所述当前时刻作为所述用户标识的时间戳信息,并将该时间戳信息与所述用户标识关联存入所述第二数据库,同时将所述当前消息推送出去。
10.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现上述权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111546241.2A CN114253745B (zh) | 2021-12-16 | 2021-12-16 | 一种消息去重处理方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111546241.2A CN114253745B (zh) | 2021-12-16 | 2021-12-16 | 一种消息去重处理方法、装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114253745A CN114253745A (zh) | 2022-03-29 |
CN114253745B true CN114253745B (zh) | 2023-06-20 |
Family
ID=80792743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111546241.2A Active CN114253745B (zh) | 2021-12-16 | 2021-12-16 | 一种消息去重处理方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114253745B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109510859A (zh) * | 2018-08-27 | 2019-03-22 | 北京奇虎科技有限公司 | 一种推送消息的到达量的统计方法和装置 |
CN112597138A (zh) * | 2020-12-10 | 2021-04-02 | 浙江岩华文化科技有限公司 | 数据去重方法、装置、计算机设备和计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE0001674D0 (sv) * | 2000-05-05 | 2000-05-05 | Stig Petersson | Förfarande för tillverkning av invid varandra anordnade vågledarkanaler |
WO2012162969A1 (zh) * | 2011-09-01 | 2012-12-06 | 华为技术有限公司 | 一种分布式队列消息读取方法及设备、系统 |
CN105630658B (zh) * | 2015-12-22 | 2018-10-09 | 北京奇虎科技有限公司 | 数据处理的方法及装置 |
CN107656966A (zh) * | 2017-08-28 | 2018-02-02 | 深圳市诚壹科技有限公司 | 一种处理数据的方法及服务器 |
CN110837423A (zh) * | 2018-08-17 | 2020-02-25 | 天津京东深拓机器人科技有限公司 | 一种自动导引运输车数据采集的方法和装置 |
CN112152937B (zh) * | 2020-09-29 | 2022-08-19 | 锐捷网络股份有限公司 | 一种报文去重的方法、装置、电子设备及存储介质 |
-
2021
- 2021-12-16 CN CN202111546241.2A patent/CN114253745B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109510859A (zh) * | 2018-08-27 | 2019-03-22 | 北京奇虎科技有限公司 | 一种推送消息的到达量的统计方法和装置 |
CN112597138A (zh) * | 2020-12-10 | 2021-04-02 | 浙江岩华文化科技有限公司 | 数据去重方法、装置、计算机设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114253745A (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110086877B (zh) | 应用程序分享、分享信息显示方法、装置、设备及介质 | |
CN111475483B (zh) | 数据库迁移方法、装置及计算设备 | |
CN110535944B (zh) | 用户活跃数据处理的方法及装置 | |
CN111914520A (zh) | 文档协同编辑方法、装置、计算机装置及存储介质 | |
US20170201566A1 (en) | File downloading method, apparatus, and terminal device | |
CN113704243A (zh) | 数据分析方法、装置、计算机装置及存储介质 | |
CN112182010B (zh) | 脏页刷新方法和装置、存储介质和电子设备 | |
CN112925783A (zh) | 业务数据处理方法和装置、电子设备和存储介质 | |
CN104461404A (zh) | 元数据存储方法、装置以及系统 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN114253745B (zh) | 一种消息去重处理方法、装置、存储介质和电子设备 | |
CN102523112B (zh) | 信息处理方法及设备 | |
CN110555020B (zh) | 一种映射关系建立、数据查询方法、装置及设备 | |
CN114611039B (zh) | 异步加载规则的解析方法、装置、存储介质和电子设备 | |
CN109739883B (zh) | 提升数据查询性能的方法、装置和电子设备 | |
CN114443319A (zh) | 消息去重处理方法、装置、存储介质和电子设备 | |
CN113411364B (zh) | 资源获取方法、装置及服务器 | |
CN114625502A (zh) | 一种投词任务处理方法、装置、存储介质和电子设备 | |
CN113342270A (zh) | 卷卸载方法、装置和电子设备 | |
CN112799863A (zh) | 用于输出信息的方法和装置 | |
CN111435332B (zh) | 数据处理方法及设备 | |
CN115794876A (zh) | 针对业务数据包的分片处理方法、装置、设备及存储介质 | |
CN113342813A (zh) | 键值数据处理方法、装置、计算机设备及可读存储介质 | |
CN109981697B (zh) | 一种文件转存方法、系统、服务器及存储介质 | |
CN112463741A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |