CN115344403A - 一种基于分布式消息队列的用户权益数据处理方法 - Google Patents
一种基于分布式消息队列的用户权益数据处理方法 Download PDFInfo
- Publication number
- CN115344403A CN115344403A CN202210891759.8A CN202210891759A CN115344403A CN 115344403 A CN115344403 A CN 115344403A CN 202210891759 A CN202210891759 A CN 202210891759A CN 115344403 A CN115344403 A CN 115344403A
- Authority
- CN
- China
- Prior art keywords
- data
- user
- user identification
- identification data
- message queue
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000003860 storage Methods 0.000 claims abstract description 20
- 238000000605 extraction Methods 0.000 claims description 42
- 238000000034 method Methods 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 28
- 230000015654 memory Effects 0.000 claims description 20
- 230000009471 action Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 11
- 230000001360 synchronised effect Effects 0.000 claims description 9
- 238000012163 sequencing technique Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 4
- 238000013075 data extraction Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 13
- 238000004519 manufacturing process Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 230000007958 sleep Effects 0.000 description 4
- 239000003814 drug Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000004936 stimulating effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例公开了一种基于分布式消息队列的用户权益数据处理方法、装置、电子设备及存储介质,通过按照用户标识分页遍历用户数据,并提取指定数量的用户数据分批次推入消息队列,并实时检测当前队列中的消息数量,从而在获取用户信息数据阶段进行限速,避免将过多的计算任务推入消息队列,造成消息的生产端和消费端速度不匹配发生系统故障;同时通过分布式消息保证多个应用的多个消费者都在均等的条件下进行消费,避免出现消息过度集中的问题,将用户计算任务分摊到多个应用的多个消费者,避免了耗时的任务过度集中,最大限度提高了资源利用率完成计算任务。
Description
技术领域
本申请实施例涉及数据处理领域,特别是涉及一种基于分布式消息队列的用户权益数据处理方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的发展,互联网医药已然成为人们生活中不可或缺的一部分。在互联网医药领域,互联网医药电商平台的会员等级、成长值、健康金组成一套完整的用户成长体系,用于提高用户的活跃度,增强用户粘性,激励用户再次消费,从而有效提升平台的价值。在定期计算用户等级、成长值或在健康金即将过期需要清除时,均涉及到对平台内大量或几乎全量用户权益的处理。
目前,各大医药电商平台对于定期计算平台内大量用户权益的方式各不相同,但主要的途径都是采用拆分多个子任务,分批按指定范围内的用户进行遍历,每个任务完成限定范围内的一批用户的权益处理。但由于每个用户的权益不尽相同,计算权益时所用耗时存在较大差异,按目前的分批取用户数据使用子任务进行处理,可能造成某一些批次取出的用户数据计算时间较长,各批次任务耗时不均衡,最终造成批次任务完成时间超出整个任务时间的预期范围。同时,不能最大限度发挥各子任务空闲资源的作用。
发明内容
本申请实施例提供了一种基于分布式消息队列的用户权益数据处理方法、装置、电子设备及存储介质,通过在获取数据阶段进行限速,从而保证消息的生产端与消费端速度匹配。
第一方面,本申请实施例提供了一种基于分布式消息队列的用户权益数据处理方法,所述方法包括如下步骤:
遍历从数据库的用户信息数据,所述用户信息数据包括用户标识数据和用户权益数据;
获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列;
根据所述消息队列中的用户标识数据,生成消息并记录所述消息数量,所述消息数量与所述用户标识数据数量对应;
根据所述消息,通过查询主数据库数据,获取所述用户标识数据所对应的所述用户权益数据,所述主数据库数据与所述从数据库数据为实时同步状态;
启用应用对所述用户权益数据进行处理,所述应用均配置有多个消费者;
当所述用户权益数据处理完毕后,更新所述主数据库内对应的所述用户信息数据并释放所述消息队列中的对应消息;
检测当前所述消息队列中的消息数量,若所述消息数量未超出预设的待处理消息数量,则重复执行获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列的操作。
进一步地,检测当前所述消息队列中的消息数量后,还包括如下步骤:
若所述消息数量超出预设的待处理消息数量,则暂停获取预设提取数量的所述用户标识数据的动作并休眠指定时间,所述指定时间通过人工预设定。
进一步地,还包括如下步骤:
将所述用户标识数据逐个推入消息队列前,根据所述用户标识数据对所述用户信息数据进行排序;
根据所述排序顺序及所述预设提取数量,获取所述用户标识数据并将所述用户标识数据逐个推入消息队列,并记录最后一个已被推入所述消息队列的所述用户标识数据;
当需执行重复执行获取预设提取数量的所述用户标识数据的动作时,查询所述被记录用户标识数据;
根据所述被记录用户标识数据及所述排序顺序,重复获取预设提取数量的所述用户标识数据。
进一步地,将所述用户标识数据逐个推入消息队列前,还包括如下步骤:
根据所述用户标识数据,识别该用户标识数据所对应的用户权益数据是否为空;
若所述用户权益数据为空,则不将所述用户标识数据推入所述消息队列,根据所述排序进行下一个用户标识数据的获取动作。
进一步地,记录最后一个已被推入所述消息队列的所述用户标识数据后,具体包括如下方法步骤:
若所述被记录用户标识数据为所述排序顺序的最终用户标识数据,则结束查询,确认所述获取预设提取数量的所述用户标识数据的动作结束。
进一步地,根据所述用户标识数据对所述用户信息数据进行排序后,还包括如下方法步骤:
根据所述排序顺序及所述预设提取数量,将所述用户信息数据分页,其中每页包括所述预设提取数量的用户信息数据;
当需执行获取预设提取数量的所述用户标识数据的动作时,提取首页的所述用户标识数据,并根据所述首页的最后一条用户表述数据生成查询条件;
当需执行重复获取预设提取数量的所述用户标识数据的动作时,根据所述查询条件,查询并提取所述查询条件下一页的所述用户标识数据。
进一步地,启用应用对所述用户权益数据进行处理,具体包括如下步骤:
获取用户信息数据中的指定信息,所述指定信息包括用户历史活动数据及注册时长;
根据所述指定信息,通过预设的算法,计算得出所述用户权益数据。
第二方面,本申请实施例提供了一种应用通知信息的展示样式生成装置,包括:
数据遍历模块,用于遍历从数据库的用户信息数据,所述用户信息数据包括用户标识数据和用户权益数据;
数据提取模块,用于获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列;
消息生成及记录模块,用于根据所述消息队列中的用户标识数据,生成消息并记录所述消息数量,所述消息数量与所述用户标识数据数量对应;
权益数据获取模块,用于根据所述消息,通过查询主数据库数据,获取所述用户标识数据所对应的所述用户权益数据,所述主数据库数据与所述从数据库数据为实时同步状态;
应用消费模块,用于启用应用对所述用户权益数据进行处理,所述应用均配置有多个消费者;
数据更新及消息释放模块,用于当所述用户权益数据处理完毕后,更新所述主数据库内对应的所述用户信息数据并释放所述消息队列中的对应消息;
消息数量检测模块,用于检测当前所述消息队列中的消息数量,若所述消息数量未超出预设的待处理消息数量,则重复执行获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列的操作。
第三方面,本申请实施例提供了一种电子设备,包括至少一个存储器以及至少一个处理器;所述存储器,用于存储一个或多个程序;当所述一个或多个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如第一方面所述的一种基于分布式消息队列的用户权益数据处理方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如如第一方面所述的一种基于分布式消息队列的用户权益数据处理方法的步骤。
本申请实施例通过按照用户标识分页遍历用户数据,并提取指定数量的用户数据分批次推入消息队列,并实时检测当前队列中的消息数量,从而在获取用户信息数据阶段进行限速,避免将过多的计算任务推入消息队列,造成消息的生产端和消费端速度不匹配发生系统故障;同时通过分布式消息保证多个应用的多个消费者都在均等的条件下进行消费,避免出现消息过度集中的问题,将用户计算任务分摊到多个应用的多个消费者,避免了耗时的任务过度集中,最大限度提高了资源利用率完成计算任务。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图说明
图1为在一个示例性的实施例中提供的一种基于分布式消息队列的用户权益数据处理方法的步骤流程图;
图2为在一个示例性的实施例中提供的一种基于分布式消息队列的用户权益数据处理方法的逻辑架构图。
图3为一个示例性的实施例中提供的一种基于分布式消息队列的用户权益数据处理方法的流程图;
图4为在一个示例性的实施例中提供的一种基于分布式消息队列的用户权益数据处理装置的模块示意图;
图5为在一个示例性的实施例中提供的一种电子设备示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
应当明确,所描述的实施例仅仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请实施例保护的范围。
在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
“消息队列”是在消息的传输过程中保存消息的容器。主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件最主要的作用是解耦,即生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。
也因此,消息队列具有很好的削峰作用,即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而避免在高并发环境下,由于来不及同步处理,请求发生堵塞,直接导致无数的行锁表锁,甚至最后因请求会堆积过多,从而触发too manyconnections错误的情况发生,达到缓解系统的压力,提升系统的扩展性的目的。
基于上述关于消息队列的技术效果,以及背景技术中的现存技术问题,本申请实施例提供了一种基于分布式消息队列的用户权益数据处理方法,如图1所示,具体包括如下方法步骤:
S201:遍历从数据库的用户信息数据,用户信息数据包括用户标识数据和用户权益数据。
在实际应用中,由于随着业务的不断扩展,用户数据不断增加,存储用户数据的数据库压力也会越来越大,因此,在本申请实施例中,采用数据库主从分离,也即读写分离的方式来进行大量用户权益数据的处理。具体的,本申请实施例把对数据库读和写的操作分开对应不同的数据库服务器,主数据库提供写操作,从数据库提供读操作,从而有效地减轻数据库压力,也能减轻io压力。其中,主数据库与从数据库数据同步,主数据库内存储有全部的用户信息数据,用户信息数据包括例如用户名、用户ID等用户标识数据,也包括例如积分、会员成长值等用户权益数据。用户信息数据还包括一些例如用户注册时长,订单数等用户基础信息,部分用户的权益数据的计算即通过对用户基础信息计算获取的。
S202:获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列。
在本申请实施例中,在从数据库中提取用户标识数据并将其推入消息队列,提取数量可以根据实际情况通过人工设定,在本申请实施例中,消息队列所采用的是高性能分布式消息队列(RabbitMQ)。
S203:根据所述消息队列中的用户标识数据,生成消息并记录所述消息数量,所述消息数量与所述用户标识数据数量对应。
在本申请实施例中,需要计算每一个用户的权益信息,每一个被推入消息队列中的用户标识数据即对应一个用户权益信息的处理任务,也即所述生成消息。例如,该消息队列中若存在500个消息,即存在500个用户标识数据,对应500个用户的权益数据处理任务、
S204:根据所述消息,通过查询主数据库数据,获取所述用户标识数据所对应的所述用户权益数据,所述主数据库数据与所述从数据库数据为实时同步状态。
在这一步骤之的阶段为数据读取阶段,均在从数据库进行;而这一步骤涉及具体的权益处理,即涉及写操作时,则在主数据库上完成。根据消息队列中的用户标识数据,查询并获取主数据库内对应的用户权益数据,由于主从数据库的同步性,在主数据库内对数据的处理操作均会同步至从数据库。
S205:启用应用对所述用户权益数据进行处理,所述应用均配置有多个消费者。
启用多个应用消费消息,并且每个应用配置多个消费者并发进行消息消费,每个消费者从消息队列中获取一条消息并进行处理,从而实现异步处理请求,缓解数据压力。由于通过提取用户数据任务遍历出来的用户各自独立,所以各消息消费者执行完全独立的任务,不会相互影响。
对用户权益数据进行处理则根据实际的需求,预设权益计算规则,来进行所述权益数据的处理。例如,在一个应用场景下,用户权益数据处理为计算会员成长值,则预设会员成长值计算规则为:过去12个月的订单总数*5+订单总金额*2+购物天数*20。根据用户标识信息在主数据库中找到对应用户信息数据后,查找并获取该用户过去12个月的订单总数以及订单的总金额,并获取购物天数(同一天下多个订单算一个购物天)数据,再根据上述预设计算规则,计算获得该用户的会员成长值。
S206:当所述用户权益数据处理完毕后,更新所述主数据库内对应的所述用户信息数据并释放所述消息队列中的对应消息。
在根据人工预设的用户权益数据处理规则进行计算完毕后,即认为该用户权益数据处理完毕,此时更新主数据库内对应的所述用户信息数据,主要是用户权益数据的更新。在本申请实施例中,数据库采用的是高性能key-value数据库(Redis),其自增(incr)和自减(decr)原子操作功能可以辅助控制消息数量,在一个用户权益数据处理完毕后,执行命令decr pending:task,即向消息队列返回消息释放指令,此时消息队列将将释放对应消息的存储空间,消息队列内的消息数相应减一。
S207:检测当前所述消息队列中的消息数量,若所述消息数量未超出预设的待处理消息数量,则重复执行获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列的操作。
在本申请实施例中,为实现待处理消息数量控制,每推送完一批用户标识数据到消息队列中后,都需检测待处理中的消息数,例如,先预设当前消息队列可存放10000个待处理的消息,预设每次推送用户标识数据500个到消息队列,则当检测发现待处理的消息数小于10000个则继续提取下一批500个用户标识数据至小媳妇队列。
在一个优选的实施例中,若所述消息数量超出预设的待处理消息数量,则暂停获取预设提取数量的所述用户标识数据的动作并休眠指定时间,所述指定时间通过人工预设定。
在本申请实施例中,若仍预设当前消息队列可存放10000个待处理的消息,预设每次推送用户标识数据500个到消息队列,但检测发现待处理的消息数大于10000个,则暂停推送用户标识数据至消息队列的操作,消息生产端休眠100毫秒,减缓提取用户的速度,以控制待处理消息的总数,减轻消息队列及数据库压力。
在一个优选的实施例中,将所述用户标识数据逐个推入消息队列前,根据所述用户标识数据对所述用户信息数据进行排序;根据所述排序顺序及所述预设提取数量,获取所述用户标识数据并将所述用户标识数据逐个推入消息队列,并记录最后一个已被推入所述消息队列的所述用户标识数据;当需执行重复执行获取预设提取数量的所述用户标识数据的动作时,查询所述被记录用户标识数据;根据所述被记录用户标识数据及所述排序顺序,重复获取预设提取数量的所述用户标识数据。
在本申请实施例中,通过分页查询进行用户信息数据的遍历,同事为了避免深度分页造成系统瓶颈问题,在分页时需加入前一步的结果,即将记录的offset作为当前查询的一个条件传入(如select*from user where id>xxx order by id limit 500),例如当前获取的500个用户数据ID为从1001~1500,则下一次查询将使用ID>1500的条件查询另外一页500个用户数据,依次类推。
在一个优选的实施例中,将所述用户标识数据逐个推入消息队列前,根据所述用户标识数据,识别该用户标识数据所对应的用户权益数据是否为空;若所述用户权益数据为空,则不将所述用户标识数据推入所述消息队列,根据所述排序进行下一个用户标识数据的获取动作。
在一个优选的实施例中,记录最后一个已被推入所述消息队列的所述用户标识数据后,若所述被记录用户标识数据为所述排序顺序的最终用户标识数据,则结束查询,确认所述获取预设提取数量的所述用户标识数据的动作结束。
本申请所述实施例在实际应用场景中,经测试,按部署5个实例,每个实例50个消费者,总共250个消费者并发消费,用户权益计算的耗时平均在80毫秒,消息消费的速度超过3000个/秒,经测算完成1000万用户整体耗时在53分钟内,同时数据库主库负载压力保持在60%左右相对稳定的水平,rabbitmq消息队列无明显的压力。
图2为在一个示例性的实施例中提供的一种基于分布式消息队列的用户权益数据处理方法的逻辑架构图。其中主数据库与从数据库数据同步,在从数据库中进行用户信息数据遍历,并提取指定数量用户标识数据推入消息队列,应用集群获取消息队列中的消息,根据用户标识数据,从主数据库中获取对应的用户权益数据并在主数据库中进行权益计算。当从数据库将用户信息数据推入消息队列时,会增加当前消息队列中相应的消息数量,而当消息消费后,则会相应减少处理完毕后的消息数量,上述消息数量的增加和减少均通过数据库自带的自增(incr)自减(decr)原子操作完成计算。
图3为一个示例性的实施例中提供的一种基于分布式消息队列的用户权益数据处理方法的流程图。其中,负责将用户信息数据推入消息队列的生产端实时检查待处理的任务数量,也即消息数量,若此时推入消息队里中的消息数量超过预设的10000条消息数量,则该程序休眠100毫秒,以控制消息队列中的消息数量;若检测消息队列中的消息未超过预设数量,则查询下一批用户信息数据并将其推入消息队列;当下一批用户数据不存在时,则结束消息生产过程。而消息消费端则从消息队列中获取待处理任务,进行消息消费,也即根据预设的算法计算用户权益,当计算结束后,相应的减少消息队列中待处理的任务数量。
本申请实施例公开的一种基于分布式消息队列的用户权益数据处理方法通过在获取用户信息数据阶段进行限速,避免将过多的计算任务推入消息队列,造成消息的生产端和消费端速度不匹配发生系统故障;同时通过分布式消息保证多个应用的多个消费者都在均等的条件下进行消费,不会存在消息过度集中的问题,将用户计算任务分摊到多个应用的多个消费者,避免了耗时的任务过度集中,最大限度提高了资源利用率完成计算任务。
如图4所示,图4为本申请实施例提供的一种基于分布式消息队列的用户权益数据处理装置400,包括:
数据遍历模块401,用于遍历从数据库的用户信息数据,所述用户信息数据包括用户标识数据和用户权益数据;
数据提取模块402,用于获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列;
消息生成及记录模块403,用于根据所述消息队列中的用户标识数据,生成消息并记录所述消息数量,所述消息数量与所述用户标识数据数量对应;
权益数据获取模块404,用于根据所述消息,通过查询主数据库数据,获取所述用户标识数据所对应的所述用户权益数据,所述主数据库数据与所述从数据库数据为实时同步状态;
应用消费模块405,用于启用应用对所述用户权益数据进行处理,所述应用均配置有多个消费者;
数据更新及消息释放模块406,用于当所述用户权益数据处理完毕后,更新所述主数据库内对应的所述用户信息数据并释放所述消息队列中的对应消息;
消息数量检测模块407,用于检测当前所述消息队列中的消息数量,若所述消息数量未超出预设的待处理消息数量,则重复执行获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列的操作。
在一个示例性的例子中,消息数量检测模块407还包括休眠单元,若所述消息数量超出预设的待处理消息数量,则用于暂停获取预设提取数量的所述用户标识数据的动作并休眠指定时间,所述指定时间通过人工预设定。
在一个示例性的例子中,还包括:
排序单元,用于将所述用户标识数据逐个推入消息队列前,根据所述用户标识数据对所述用户信息数据进行排序;
数据记录单元,用于根据所述排序顺序及所述预设提取数量,获取所述用户标识数据并将所述用户标识数据逐个推入消息队列,并记录最后一个已被推入所述消息队列的所述用户标识数据;
查询记录单元,用于当需执行重复执行获取预设提取数量的所述用户标识数据的动作时,查询所述被记录用户标识数据;
重复获取数据单元,用于根据所述被记录用户标识数据及所述排序顺序,重复获取预设提取数量的所述用户标识数据。
在一个示例性的例子中,数据提取模块402还包括:
空数据识别单元,用于根据所述用户标识数据,识别该用户标识数据所对应的用户权益数据是否为空;
继续获取单元,用于若所述用户权益数据为空,则不将所述用户标识数据推入所述消息队列,根据所述排序进行下一个用户标识数据的获取动作。
在一个示例性的例子中,数据记录单元还用于当所述被记录用户标识数据为所述排序顺序的最终用户标识数据时,结束查询,并确认所述获取预设提取数量的所述用户标识数据的动作结束。
在一个示例性的例子中,排序单元还用于根据所述排序顺序及所述预设提取数量,将所述用户信息数据分页,其中每页包括所述预设提取数量的用户信息数据;
数据记录单元还用于当需执行获取预设提取数量的所述用户标识数据的动作时,提取首页的所述用户标识数据,并根据所述首页的最后一条用户表述数据生成查询条件;
查询记录单元还用于当需执行重复获取预设提取数量的所述用户标识数据的动作时,根据所述查询条件,进行查询;
继续获取单元,还用于根据所述查询条件,提取所述查询条件下一页的所述用户标识数据。
在一个示例性的例子中,应用消费模块405还包括:
指定用户信息获取单元,用于获取用户信息数据中的指定信息,所述指定信息包括用户历史活动数据及注册时长;
用户权益计算单元,用于根据所述指定信息,通过预设的算法,计算得出所述用户权益数据。
如图5所示,图5是本申请实施例根据一示例性实施例示出的一种电子设备的结构框图。
所述电子设备包括处理器910和存储器920。该主控芯片中处理器910的数量可以是一个或者多个,图5中以一个处理器910为例。该主控芯片中存储器920的数量可以是一个或者多个,图5中以一个存储器920为例。
存储器920作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例任意实施例所述的一种基于分布式消息队列的用户权益数据处理方法程序,以及本申请实施例任意实施例所述的一种基于分布式消息队列的用户权益数据处理方法对应的程序指令/模块。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器920可进一步包括相对于处理器910远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器910通过运行存储在存储器920中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述任一实施例所记载的一种基于分布式消息队列的用户权益数据处理方法。
本申请实施例还提供了一种计算机可读存储介质,其上储存有计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例所述的一种基于分布式消息队列的用户权益数据处理方法。
本发明可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可读储存介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其它数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其它类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其它内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其它光学存储、磁盒式磁带,磁带磁磁盘存储或其它磁性存储设备或任何其它非传输介质,可用于存储可以被计算设备访问的信息。
应当理解的是,本申请实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请实施例的范围仅由所附的权利要求来限制。
以上所述实施例仅表达了本申请实施例的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请实施例构思的前提下,还可以做出若干变形和改进,这些都属于本申请实施例的保护范围。
Claims (10)
1.一种基于分布式消息队列的用户权益数据处理方法,其特征在于,所述方法包括如下步骤:
遍历从数据库的用户信息数据,所述用户信息数据包括用户标识数据和用户权益数据;
获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列;
根据所述消息队列中的用户标识数据,生成消息并记录所述消息数量,所述消息数量与所述用户标识数据数量对应;
根据所述消息,通过查询主数据库数据,获取所述用户标识数据所对应的所述用户权益数据,所述主数据库数据与所述从数据库数据为实时同步状态;
启用应用对所述用户权益数据进行处理,所述应用均配置有多个消费者;
当所述用户权益数据处理完毕后,更新所述主数据库内对应的所述用户信息数据并释放所述消息队列中的对应消息;
检测当前所述消息队列中的消息数量,若所述消息数量未超出预设的待处理消息数量,则重复执行获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列的操作。
2.根据权利要求1所述的一种基于分布式消息队列的用户权益数据处理方法,其特征在于,检测当前所述消息队列中的消息数量后,还包括如下步骤:
若所述消息数量超出预设的待处理消息数量,则暂停获取预设提取数量的所述用户标识数据的动作并休眠指定时间,所述指定时间通过人工预设定。
3.根据权利要求1所述的一种基于分布式消息队列的用户权益数据处理方法,其特征在于,还包括如下步骤:
将所述用户标识数据逐个推入消息队列前,根据所述用户标识数据对所述用户信息数据进行排序;
根据所述排序顺序及所述预设提取数量,获取所述用户标识数据并将所述用户标识数据逐个推入消息队列,并记录最后一个已被推入所述消息队列的所述用户标识数据;
当需执行重复执行获取预设提取数量的所述用户标识数据的动作时,查询所述被记录用户标识数据;
根据所述被记录用户标识数据及所述排序顺序,重复获取预设提取数量的所述用户标识数据。
4.根据权利要求3所述的一种基于分布式消息队列的用户权益数据处理方法,其特征在于,将所述用户标识数据逐个推入消息队列前,还包括如下步骤:
根据所述用户标识数据,识别该用户标识数据所对应的用户权益数据是否为空;
若所述用户权益数据为空,则不将所述用户标识数据推入所述消息队列,根据所述排序进行下一个用户标识数据的获取动作。
5.根据权利要求3所述的一种基于分布式消息队列的用户权益数据处理方法,其特征在于,记录最后一个已被推入所述消息队列的所述用户标识数据后,还包括如下方法步骤:
若所述被记录用户标识数据为所述排序顺序的最终用户标识数据,则结束查询,确认所述获取预设提取数量的所述用户标识数据的动作结束。
6.根据权利要求5所述的一种基于分布式消息队列的用户权益数据处理方法,其特征在于,根据所述用户标识数据对所述用户信息数据进行排序后,还包括如下方法步骤:
根据所述排序顺序及所述预设提取数量,将所述用户信息数据分页,其中每页包括所述预设提取数量的用户信息数据;
当需执行获取预设提取数量的所述用户标识数据的动作时,提取首页的所述用户标识数据,并根据所述首页的最后一条用户表述数据生成查询条件;
当需执行重复获取预设提取数量的所述用户标识数据的动作时,根据所述查询条件,查询并提取所述查询条件下一页的所述用户标识数据。
7.根据权利要求1所述的一种基于分布式消息队列的用户权益数据处理方法,其特征在于,启用应用对所述用户权益数据进行处理,具体包括如下步骤:
获取用户信息数据中的指定信息,所述指定信息包括用户历史活动数据及注册时长;
根据所述指定信息,通过预设的算法,计算得出所述用户权益数据。
8.一种基于分布式消息队列的用户权益数据处理装置,其特征在于,包括:
数据遍历模块,用于遍历从数据库的用户信息数据,所述用户信息数据包括用户标识数据和用户权益数据;
数据提取模块,用于获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列;
消息生成及记录模块,用于根据所述消息队列中的用户标识数据,生成消息并记录所述消息数量,所述消息数量与所述用户标识数据数量对应;
权益数据获取模块,用于根据所述消息,通过查询主数据库数据,获取所述用户标识数据所对应的所述用户权益数据,所述主数据库数据与所述从数据库数据为实时同步状态;
应用消费模块,用于启用应用对所述用户权益数据进行处理,所述应用均配置有多个消费者;
数据更新及消息释放模块,用于当所述用户权益数据处理完毕后,更新所述主数据库内对应的所述用户信息数据并释放所述消息队列中的对应消息;
消息数量检测模块,用于检测当前所述消息队列中的消息数量,若所述消息数量未超出预设的待处理消息数量,则重复执行获取预设提取数量的所述用户标识数据,并将所述用户标识数据逐个推入消息队列的操作。
9.一种电子设备,其特征在于,包括:
至少一个存储器以及至少一个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1至7任一项所述的一种基于分布式消息队列的用户权益数据处理方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的一种基于分布式消息队列的用户权益数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891759.8A CN115344403A (zh) | 2022-07-27 | 2022-07-27 | 一种基于分布式消息队列的用户权益数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891759.8A CN115344403A (zh) | 2022-07-27 | 2022-07-27 | 一种基于分布式消息队列的用户权益数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115344403A true CN115344403A (zh) | 2022-11-15 |
Family
ID=83949286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210891759.8A Pending CN115344403A (zh) | 2022-07-27 | 2022-07-27 | 一种基于分布式消息队列的用户权益数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344403A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344172A (zh) * | 2018-08-31 | 2019-02-15 | 深圳市元征科技股份有限公司 | 一种高并发数据处理方法、装置及客户端服务器 |
CN109743342A (zh) * | 2018-02-12 | 2019-05-10 | 比亚迪股份有限公司 | 终端的更新方法、服务器及终端 |
CN111147355A (zh) * | 2019-12-25 | 2020-05-12 | 北京五八信息技术有限公司 | 消息发送方法、装置、电子设备及存储介质 |
CN111506430A (zh) * | 2020-04-23 | 2020-08-07 | 上海数禾信息科技有限公司 | 多任务下数据处理的方法、装置及电子设备 |
CN113254217A (zh) * | 2021-06-18 | 2021-08-13 | 腾讯科技(成都)有限公司 | 业务的消息处理方法、装置及电子设备 |
CN113407823A (zh) * | 2021-05-30 | 2021-09-17 | 咸宁方片互娱网络有限公司 | 一种ios消息推送方法及系统 |
CN113761051A (zh) * | 2020-07-01 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 消息推送方法、数据获取方法、装置、系统、设备和介质 |
CN114237936A (zh) * | 2021-12-16 | 2022-03-25 | 成都知道创宇信息技术有限公司 | 数据消费方法、装置、服务器及可读存储介质 |
-
2022
- 2022-07-27 CN CN202210891759.8A patent/CN115344403A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109743342A (zh) * | 2018-02-12 | 2019-05-10 | 比亚迪股份有限公司 | 终端的更新方法、服务器及终端 |
CN109344172A (zh) * | 2018-08-31 | 2019-02-15 | 深圳市元征科技股份有限公司 | 一种高并发数据处理方法、装置及客户端服务器 |
CN111147355A (zh) * | 2019-12-25 | 2020-05-12 | 北京五八信息技术有限公司 | 消息发送方法、装置、电子设备及存储介质 |
CN111506430A (zh) * | 2020-04-23 | 2020-08-07 | 上海数禾信息科技有限公司 | 多任务下数据处理的方法、装置及电子设备 |
CN113761051A (zh) * | 2020-07-01 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 消息推送方法、数据获取方法、装置、系统、设备和介质 |
CN113407823A (zh) * | 2021-05-30 | 2021-09-17 | 咸宁方片互娱网络有限公司 | 一种ios消息推送方法及系统 |
CN113254217A (zh) * | 2021-06-18 | 2021-08-13 | 腾讯科技(成都)有限公司 | 业务的消息处理方法、装置及电子设备 |
CN114237936A (zh) * | 2021-12-16 | 2022-03-25 | 成都知道创宇信息技术有限公司 | 数据消费方法、装置、服务器及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10372723B2 (en) | Efficient query processing using histograms in a columnar database | |
CN107515874B (zh) | 一种分布式非关系型数据库中同步增量数据的方法与设备 | |
CN111028009B (zh) | 可领取业务实体处理方法和装置 | |
CN103533002A (zh) | 一种数据处理方法和系统 | |
CN104699718A (zh) | 用于快速引入业务数据的方法和装置 | |
CN101320458A (zh) | 在海量数据下完成账单对账的方法及系统 | |
WO2020231541A1 (en) | Object storage change-events | |
CN112612799B (zh) | 一种数据同步方法及终端 | |
WO2017114176A1 (zh) | 一种分布式环境协调消费队列方法和装置 | |
CN111343241B (zh) | 一种图数据更新方法、装置及系统 | |
CN111177237B (zh) | 一种数据处理系统、方法及装置 | |
CN111666144A (zh) | 批处理任务执行方法、系统以及机房部署系统 | |
CN109218385B (zh) | 处理数据的方法和装置 | |
CN113687964A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN115114359A (zh) | 用户数据处理方法及装置 | |
CN115357622A (zh) | 基于热点数据的业务处理方法及服务器 | |
CN112328592A (zh) | 数据存储方法、电子设备及计算机可读存储介质 | |
CN113312386B (zh) | 一种基于分布式消息的批量入库方法 | |
US8539492B1 (en) | Managing data dependencies among multiple jobs using separate tables that store job results and dependency satisfaction | |
WO2016167991A1 (en) | Dimension data insertion into dimension table | |
CN113342863A (zh) | 业务单据处理方法、装置、计算机设备和存储介质 | |
CN115344403A (zh) | 一种基于分布式消息队列的用户权益数据处理方法 | |
CN116304079A (zh) | 基于时序的图谱数据管理方法、设备和可读存储介质 | |
CN115914387A (zh) | 资源共享及数据查询的方法、装置和服务器 | |
CN106557469B (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 | ||
CB02 | Change of applicant information |
Address after: Room 206-208, Building 4, No. 2 Tiantai 1st Road, Huangpu District, Guangzhou City, Guangdong Province, 510700 Applicant after: Guangzhou Fangzhou Information Technology Co.,Ltd. Address before: 510700 room 1005, No. 118, banhe Road, Huangpu District, Guangzhou, Guangdong Applicant before: Guangzhou Fangzhou Information Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20221115 |