排行榜生成方法、装置、设备及存储介质制造方法及图纸

技术编号:32136458 阅读:22 留言:0更新日期:2022-01-29 19:46
本发明专利技术涉及一种排行榜生成方法、装置、设备及存储介质,该方法包括:利用生产者将排名消息写入消息队列,其中排名消息包括排名对象信息、排名对象的排名分数和消息生成时间;利用消费者来消费消息队列中的排名消息以根据动态时间段内的排名消息更新排行榜,具体包括,对排名消息进行实时消费,以将属于动态时间段内的排名消息中的排名分数增加至对应的排名对象,和延迟动态时间段的时间长度对应的一段时间,对排名消息进行再一次消费,以将不再属于动态时间段内的排名消息中的排名分数从对应的排名对象的得分中减掉。利用本发明专利技术的排行榜生成方法,能够实现小容量存储、提高排行榜精度和提高排行榜的更新效率。行榜精度和提高排行榜的更新效率。行榜精度和提高排行榜的更新效率。

【技术实现步骤摘要】
排行榜生成方法、装置、设备及存储介质


[0001]本专利技术涉及计算机
,特别是涉及一种排行榜生成方法、装置、设备及存储介质。

技术介绍

[0002]此处的陈述仅提供与本专利技术有关的背景信息,而不必然地构成现有技术。
[0003]现有排行榜一般是静态时间段的排行榜,以小时榜为例,所统计的时间段是当前时间点所在小时内的00分00秒至59分59秒内的数据。而动态时间段的排行榜要求统计当前时间点往前的固定长度的时间段内的数据,并随当前时间点动态更新统计的时间段,例如,根据当前时间点往前1小时内的数据生成排行榜,并随当前时间点的向后推移而更新时间段进而更新排行榜。
[0004]目前业界实现动态时间段的排行榜主要采用聚合数据的方式,将需要统计的时间段划分为多个小量级的时间段,将排行榜对象和排行榜数据按产生时间所对应的小量级时间段存储至数据库中,每隔一定时间获取多个小量级时间段内的数据,聚合后排序得到结果。以24小时排行榜例,将24小时划分为24个小时,数据按小时存储至数据库中,每隔一定时间获取当前时间点的前24个小时内的数据聚合生成排行榜。
[0005]现有的聚合数据的方式具有以下缺点:一、所有数据都需要存储至数据库,占用的存储空间大;二、每次聚合都需要读取大量数据,效率底下;三、排行榜的精度受到时间段的划分精度的影响,而划分越细存储越复杂,读取效率也会下降;四、排行榜的更新时间受到聚合间隔的影响,频繁聚合也会产生效率问题。

技术实现思路

[0006]本专利技术的目的在于提供一种新的排行榜生成方法、装置、设备及存储介质,用以实现小容量存储、提高排行榜精度和提高排行榜的更新效率。
[0007]本专利技术的目的采用以下技术方案来实现。依据本专利技术提出的一种排行榜生成方法,包括以下步骤:利用生产者将排名消息写入消息队列,其中所述排名消息包括排名对象信息、排名对象的排名分数和消息生成时间;利用消费者来消费所述消息队列中的所述排名消息以根据动态时间段内的排名消息更新排行榜。其中,所述利用消费者来消费所述消息队列中的所述排名消息以根据动态时间段内的排名消息更新排行榜包括:对所述排名消息进行实时消费,以将属于动态时间段内的所述排名消息中的所述排名分数增加至对应的排名对象;和,延迟动态时间段的时间长度对应的一段时间,对所述排名消息进行再一次消费,以将不再属于动态时间段内的所述排名消息中的所述排名分数从对应的排名对象的得分中减掉。
[0008]本专利技术的目的还采用以下技术方案来实现。依据本公开提出的一种排行榜生成装置,包括:生产者模块,用于将排名消息写入消息队列,其中所述排名消息包括排名对象信息、排名对象的排名分数和消息生成时间;消费者模块,用于利用消费者来消费所述消息队
列中的所述排名消息以根据动态时间段内的排名消息来更新排行榜。其中,所述消费者模块包括第一子模块和第二子模块;所述第一子模块用于:对所述排名消息进行实时消费,以将属于动态时间段内的所述排名消息中的所述排名分数增加至对应的排名对象;所述第二子模块用于:延迟动态时间段的时间长度对应的一段时间,对所述排名消息进行再一次消费,以将不再属于动态时间段内的所述排名消息中的所述排名分数从对应的排名对象的得分中减掉。
[0009]本专利技术的目的还采用以下技术方案来实现。依据本公开提出的一种排行榜生成装置,包括:接收模块,用于接收生产者发送来的排名消息并写入消息队列,其中所述排名消息包括排名对象信息、排名对象的排名分数和消息生成时间;发送模块,用于消费者发送指令,以利用所述消费者来消费所述消息队列中的所述排名消息以根据动态时间段内的排名消息更新排行榜;其中,所述发送模块具体用于:向所述第一消费者组发送指令,用以对所述排名消息进行实时消费,以将属于动态时间段内的所述排名消息中的所述排名分数增加至对应的排名对象;和,向所述第二消费者组发送指令,用以延迟动态时间段的时间长度对应的一段时间,对所述排名消息进行再一次消费,以将不再属于动态时间段内的所述排名消息中的所述排名分数从对应的排名对象的得分中减掉。
[0010]本专利技术的目的还采用以下技术方案来实现。依据本公开提出的一种排行榜生成设备,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现前述任意一种排行榜生成方法。
[0011]本专利技术的目的还采用以下技术方案来实现。依据本公开提出的一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行前述任意一种排行榜生成方法。
[0012]本专利技术与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本专利技术提出的排行榜生成方法、装置、设备及存储介质至少具有下列优点及有益效果:
[0013]1、鉴于现有方案存在存储消耗大、排行榜精度低、更新效率低等问题,本专利技术提出了一种基于消息队列的动态时间段的排行榜生成方法,使用消息队列的延迟消费机制,生成动态时间段内的排行榜,达到小容量存储、秒级精度和实时更新的最终效果。
[0014]2、本专利技术提出的方法只需存储排行榜对象的实时数据,而不必存储每一条数据变动记录,极大程度地减少了数据存储量。同时,可以将数据存储在redis中,避免了关系型数据库从硬盘读取、写入时的效率问题。
[0015]3、本专利技术使用两个消费者组对消息队列中的消息进行消费,对于排行榜对象由于新数据生效触发的分数增加和旧数据失效触发的分数减少,都能够在秒级精度内进行处理。
[0016]4、本专利技术还能保证按照排行榜数据的生成时间对排行榜进行实时更新,避免了消息队列乱序消费的问题,达到有序更新的效果。
[0017]上述说明仅是本专利技术技术方案的概述,为了能更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为让本专利技术的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
[0018]图1是本专利技术一个实施例的排行榜生成方法的流程示意图;
[0019]图2是本专利技术另一实施例的排行榜生成方法的流程示意图;
[0020]图3是本专利技术一个实施例提供的延迟消费者主线程的流程示意图;
[0021]图4是本专利技术一个实施例提供的延迟消费者处理线程的流程示意图;
[0022]图5是本专利技术一个实施例的排行榜生成设备的示意图。
具体实施方式
[0023]为更进一步阐述本专利技术为达成预定专利技术目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本专利技术提出的排行榜生成方法、装置、设备及存储介质的具体实施方式、结构、特征及其功效,详细说明如后。
[0024]需要说明的是,在本文中,诸如“第一”、“第二”等关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。另外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种排行榜生成方法,其特征在于,所述方法包括以下步骤:利用生产者将排名消息写入消息队列,其中所述排名消息包括排名对象信息、排名对象的排名分数和消息生成时间;利用消费者来消费所述消息队列中的所述排名消息以根据动态时间段内的排名消息更新排行榜;其中,所述利用消费者来消费所述消息队列中的所述排名消息以根据动态时间段内的排名消息更新排行榜包括:对所述排名消息进行实时消费,以将属于动态时间段内的所述排名消息中的所述排名分数增加至对应的排名对象;和,延迟动态时间段的时间长度对应的一段时间,对所述排名消息进行再一次消费,以将不再属于动态时间段内的所述排名消息中的所述排名分数从对应的排名对象的得分中减掉。2.根据权利要求1所述的排行榜生成方法,其特征在于,所述利用消费者来消费所述消息队列中的所述排名消息以根据动态时间段内的排名消息更新排行榜包括:利用第一消费者组中的一个或多个消费者来进行所述的对所述排名消息进行实时消费;利用第二消费者组中的一个或多个消费者来进行所述的对所述排名消息进行再一次消费。3.根据权利要求2所述的排行榜生成方法,其特征在于,所述的对所述排名消息进行实时消费,以将属于动态时间段内的所述排名消息中的分数增加至对应的排名对象,具体包括:从所述消息队列中取出一个所述排名消息;对所述排名消息进行解析得到所述排名对象信息、所述排名分数、所述消息生成时间;判断所述排名消息的所述消息生成时间是否小于当前时间,若所述消息生成时间小于当前时间,则将所述排名消息中的所述排名分数增加至对应的排名对象的得分之中。4.根据权利要求2所述的排行榜生成方法,其特征在于,所述的延迟动态时间段的时间长度对应的一段时间,对所述排名消息进行再一次消费,具体包括:将所述消息队列中的多个排名消息取出到缓存队列并根据所述消息生成时间进行排序,对缓存队列中的排序后的排名消息进行依次处理以对排行榜进行更新,并向缓存队列中动态补充排名消息,以对排行榜进行有序更新。5.根据权利要求4所述的排行榜生成方法,其特征在于,所述方法还包括:预先为所述第二消费者组设置一个缓存队列的阈值数量和延迟消费时间,预先为所述第二消费者组中的每个第二消费者设置一个缓存队列和一个消息处理线程;其中,所述延迟消费时间的时间长度与所述动态时间段的时间长度一致;所述的将所述消息队列中的多个排名消息取出到缓存队列并根据所述消息生成时间进行排序,对缓存队列中的排序后的排名消息进行依次处理以对排行榜进行更新,并向缓存队列中动态补充排名消息,以对排行榜进行有序更新,具体包括:从所述消息队列中取出一个或多个排名消息存入一个第二消费者的缓存队列;判断所述缓存队列中的排名消息的数量是否少于所述阈值数量,若所述缓存队列中的
排名消息的数量少于所述阈值数量,则继续进行从所述消息队列中取出一个或多个排名消息存入所述缓存队列,直至所述缓存队列中的消息数量达到所述阈值数量、或所述消息队列中没有新的排名消息;按照所述消息生成时间将所述缓存队列中的排名消息排序;利用所述第二消费者的消息处理线程,从缓存队列中取出所述消息生成时间最早的一条排名消息作为目标消息,对所述目标消息在延迟动态时间段的时间长度对应的一段时间后进行处理;在对所述目标消息进行处理后继续进行所述的判断所述缓存队列中的排名消息的数量是否少于所述阈值数量,以对下一个目标消息进行处理。6.根据权利要求5所述的排行榜生成方法,其特征在于,所述的从缓存队列中取...

【专利技术属性】
技术研发人员:李南鹏
申请(专利权)人:百果园技术新加坡有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1