掌桥专利:专业的专利平台
掌桥专利
首页

消息队列的消费速度控制方法、装置、电子设备和介质

文献发布时间:2023-06-19 10:19:37


消息队列的消费速度控制方法、装置、电子设备和介质

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种消息队列的消费速度控制方法、装置、电子设备和介质。

背景技术

消息生产方在产生消息以后,会将消息送入消息队列中,然后由消息消费方从消息队列中取出消息进行消息消费。由于消息消费方的负载能力有限,对消息队列的消费速度进行控制,对于保证消息消费方系统稳定性,提高消息消费方工作效率具有重要意义。

现有的控制消息队列的消费速度的方法如滑动窗口算法、漏桶算法和令牌桶算法虽能能够控制消息队列单位时间的消费速度,但要在分布式系统扩容时实现上述算法复杂度较高。

发明内容

本发明实施例提供一种消息队列的消费速度控制方法、装置、电子设备和介质,以达到控制消息队列的消费速度目的。

第一方面,本发明实施例提供了一种消息队列的消费速度控制方法,包括:

响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同;

通过所述分片任务对所述消息进行处理。

第二方面,本发明实施例还提供了一种消息队列的消费速度控制装置,包括:

消息取出模块,用于响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同;

消息处理模块,用于通过所述分片任务对所述消息进行处理。

第三方面,本发明实施例还提供了一种电子设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的消息队列的消费速度控制方法。

第四方面,本发明实施例还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行任一实施例所述的一种消息队列的消费速度控制方法。

本发明实施例所提供的技术方案,响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同;通过所述分片任务对所述消息进行处理。本发明实施例所提供的技术方案,将消息队列与定时任务分片相结合,通过控制定时任务的分片任务的数量,实现了对消息队列的消费速度的控制,降低了消息队列的消费速度的控制方法的实现复杂度,同时可以有效的控制消息的消费线程数。

附图说明

图1是本发明实施例一提供的消息队列的消费速度控制方法的流程图;

图2是本发明实施例二提供的消息队列的消费速度控制方法的流程图;

图3是本发明实施例三提供的消息队列的消费速度控制装置的结构示意图;

图4为本发明实施例提供的消息队列的消费速度控制方法适用的电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1是本发明实施例一提供的消息队列的消费速度控制方法的流程图,本实施例可适用对消息队列的消费速度进行控制的情况。该方法可以由消息队列的消费速度控制装置来执行,该装置可以采用软件和/或硬件的方式实现,并可配置在电子设备中,电子设备可以是服务器等具有通信和计算能力的电子设备。如图1所示,该方法具体包括:

S110、响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同。

其中,定时任务是指基于给定时间点,给定时间间隔或者给定执行次数执行的任务。示例性的,定时任务为每间隔1秒执行一次的任务。

定时任务启动请求是在执行定时任务的同时或者执行定时任务之前发出,用于指示启动并执行定时任务。从消息队列中取出第一数量的消息,其中,消息队列是指是在消息的传输过程中保存消息的容器,消息是指存储在消息队列中数据。第一数量与定时任务的分片任务的数量相同,第一数量的具体数值,在这里不作限定,具体依据实际情况确定。其中,分片任务是指执行同一项定时任务的子任务。

在一个可选的实施例中,所述定时任务用于以设定时间间隔对所述逾期还款账单数据进行罚息计算。示例性的,定时任务为每间隔1秒对逾期还款账单数据进行罚息计算。该定时任务可以同时由多个任务执行服务器执行,每个任务执行服务器执行的任务内容一致,均是每间隔1秒对逾期还款账单数据进行罚息计算,在每个任务执行服务器执行的任务即为定时任务的分片任务。

定时任务的分片数量是在定时任务启动前即确定的,响应于定时任务启动请求,从消息队列中取出与定时任务的分片数量相同数量的消息。定时任务的分片数量在这里不作限定,具体依据实际情况确定。

在一个可选的实施例中,所述消息队列为redis消息队列。redis队列即为将redis(remote dictionary server,远程字典服务)缓存应用作为消息队列使用。示例性的,redis缓存应用可以通过blpush和brpop两条指令或者基于Sorted-Set实现redis消息队列。redis消息队列具有实现简单的特点,基于Sorted-Set实现的redis消息队列还具有不允许存储重复消息的特点。

S120、通过所述分片任务对所述消息进行处理。

分片任务可以由分片任务执行服务器,分片任务执行服务器作为消息的消费方,对从消息队列中获取的消息进行处理,完成对消息队列中消息的消费。

在一个可选的实施例中,在所述响应于定时任务启动请求,从消息队列中取出第一数量的消息之前,还包括:获取分片任务数量更新指令;根据所述分片任务数量更新指令,将所述定时任务分片为第二数量的分片任务;其中,第一数量等于第二数量。

其中,分片任务数量更新指令是指用于在定时任务进行分片时,更改定时任务的分片数量的指令。对于初次进行分片的定时任务,分片任务数量更新指令用于对定时任务分片数量进行初始初始化;对于已经进行过分片的定时任务,根据具体的业务需求可以通过分片任务数量更新指令,对于定时任务的分片数量进行更改。其中,分片数量更新指令中包括定时任务标识和目标分片任务数量。目标分片任务数量即为更改后预期的分片任务数量。

可选的,分片任务数量更新指令是用户根据实际业务需求实时输入的,也可以是根据预设分片任务数量对照表自动生成的。其中,预设分片任务数量对照表根据业务量和系统承载能力预先设定的。其中,系统承载能力包括系统的存储能力和计算能力。预设分片数量可以是具体的数值,也可以是一个数值范围,即一定的业务量和系统承载能力可以将分片任务数量限制在一个数值范围内,分片任务数量可以是该数值范围内的任一数值。

根据所述分片任务数量更新指令,将所述定时任务分片为第二数量的分片任务。其中,第二数量与业务量和系统承载能力相关,是根据分片任务数量更新指令确定的,具体数值在这里不作限定,根据实际情况确定。第二数量为对定时任务进行分片得到的分片任务的数量,第二数量与从消息队列中取出的消息的数量相等。本发明实施例通过在响应于定时任务启动请求,从消息队列中取出第一数量的消息之前,获取分片任务数量更新指令;根据所述分片任务数量更新指令,将所述定时任务分片为第二数量的分片任务;其中,第一数量等于第二数量,本发明实施例通过控制定时任务分片数量进而控制从消息队列中取出的消息数量从而实现了对消息队列的消费速度的控制。

在一个可选的实施例中,在所述响应于定时任务启动请求,从消息队列中取出第一数量的消息之前,还包括:根据业务属性信息对业务数据进行分类,并得到分类结果;将所述分类结果作为消息存储至所述消息队列中;其中,同一消息队列中存储的所述分类结果所属业务属性相同。

接收定时任务的系统可能会同时接收多个定时任务,在接收定时任务的同时也会有大量的业务数据输入系统,在定时任务启动并执行之前,需要根据业务属性对业务数据进行分类,再将分类结果存储至消息队列中,以供定时任务对消息队列中的消息进行处理。

其中,业务数据是指未经归集整理和统计的基础记录数据。业务数据可以是由一线业务部门人工录入的也可以是由系统通过文字或者图像识别等技术自动化获取。业务属性是指业务数据的来源。根据业务属性信息对业务数据进行分类,并得到分类结果。示例性,在信用借贷的场景下,根据用户是否在期限内按时还款可以将业务数据分为逾期还款账单数据和按期还款账单数据。继续上例,将所述分类结果作为消息存储至所述消息队列中,是将逾期还款账单数据和按期还款账单数据分别存储在不同的消息队列中,同一消息队列中存储的所述分类结果所属业务属性相同,即在同一个消息队列中仅包括逾期还款账单数据或者仅包括按期还款账单数据,在同一消息队列中,不可以既包括逾期还款账单数据又包括按期还款账单数据。

在一个可选的实施例中,所述消息队列中存储的为逾期还款账单数据。在一个可选的实施例中,所述定时任务用于以设定时间间隔对所述逾期还款账单数据进行罚息计算。

具体的,在信用借贷的场景下,会存在客户不能在规定还款期限内未按时还款的情况,在此情况下,信用借贷平台会计算对逾期还款的客户下一天应收的罚息。按照用户的维度将逾期还款账单数据存储至消息队列中,可选的,将逾期账单数据中的用户身份标识信息存储至消息队列中。定时任务用于以设定时间间隔对所述逾期还款账单数据进行罚息计算,示例性的,定时任务为以每间隔1秒对所述逾期还款账单数据进行罚息计算。在定时任务的分片任务数量等于20的情况下,则定时任务每间隔1秒从消息队列中取出20个用户身份标识信息,分别由20个分片任务根据用户身份标识信息对逾期还款账单数据进行罚息计算。在系统中除了此定时任务以外其他业务处理量增加,需要扩容的情况下,由于定时任务的分片任务数量为20,相应的,消息队列中消息的消费速度为每两秒消费20个。消息队列中消息的消费速度仅与定时任务的分片数量和定时任务的执行频率相关,而定时任务的分片任务本身并不受系统扩容的影响,使得消息队列中消息的消费速度可以不受系统扩容的影响,通过控制定时任务的分片任务的数量即可控制消息的消费者线程数达到预期。

本发明实施例所提供的技术方案,响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同;通过所述分片任务对所述消息进行处理。本发明实施例所提供的技术方案,将消息队列与定时任务分片相结合,通过控制定时任务的分片任务的数量,实现了对消息队列的消费速度的控制,降低了消息队列的消费速度的控制方法的实现复杂度,同时可以有效的控制消息的消费线程数。

实施例二

图2是本发明实施例二提供的消息队列的消费速度控制方法的流程图,本实施例在上述实施例的基础上进行进一步地优化,具体优化为:在所述响应于定时任务启动请求,从消息队列中取出第一数量的消息之前,还包括:获取定时任务执行频率更新指令;根据所述执行频率更新指令设置所述定时任务的执行频率。

如图2所示,所述方法包括:

S210、获取定时任务执行频率更新指令。

其中,定时任务执行频率更新指令是指用于调整定时任务执行频率的指令。对于初次进行分片的定时任务,定时任务执行频率更新指令用于对定时任务执行频率进行初始初始化;对于已经确定执行频率的定时任务,根据具体的业务需求可以通过定时任务执行频率更新指令,对于定时任务的执行频率进行更改。

可选的,定时任务执行频率是用户根据实际业务需求实时输入的,也可以是根据预设定时任务执行频率对照表自动生成的。其中,预设定时任务执行频率对照表根据业务量和系统承载能力预先设定的。其中,系统承载能力包括系统的存储能力和计算能力。定时任务执行频率可以是具体的数值,也可以是一个数值范围,即一定的业务量和系统承载能力可以将定时任务执行频率限制在一个数值范围内,定时任务执行频率可以是该数值范围内的任一数值。定时任务执行频率的具体数值在这里不作限定,根据实际情况确定。

S220、根据所述执行频率更新指令设置所述定时任务的执行频率。

其中,定时任务执行频率更新指令中包括定时任务标识和目标定时任务执行频率。根据定时任务执行频率更新指令中定时任务标识将目标定时任务,设置为目标定时任务执行频率。目标定时任务执行频率即为更改后预期的定时任务执行频率。

S230、响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同。

S240、通过所述分片任务对所述消息进行处理。

本发明实施例所提供的技术方案,获取定时任务执行频率更新指令;根据所述执行频率更新指令设置所述定时任务的执行频率。响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同;通过所述分片任务对所述消息进行处理。本发明实施例所提供的技术方案,可以通过将消息队列与定时任务分片结合,通过控制定时任务的执行频率与定时任务的分片任务的数量实现对消息队列的消息消费速度的控制,简化了消息消费速度控制的实现方法。

实施例三

图3是本发明实施例三提供的消息队列的消费速度控制装置的结构示意图,本实施例可适用对消息队列的消费速度进行控制的情况。所述装置可由软件和/或硬件实现,可配置在电子设备中。

如图3所示,该装置可以包括:消息取出模块310和消息处理模块320。

消息取出模块310,用于响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同。

消息处理模块320,用于通过所述分片任务对所述消息进行处理。

本发明实施例所提供的技术方案,响应于定时任务启动请求,从消息队列中取出第一数量的消息;其中,第一数量与所述定时任务的分片任务的数量相同;通过所述分片任务对所述消息进行处理。本发明实施例所提供的技术方案,将消息队列与定时任务分片相结合,通过控制定时任务的分片任务的数量,实现了对消息队列的消费速度的控制,降低了消息队列的消费速度的控制方法的实现复杂度,同时可以有效的控制消息的消费线程数。

可选的,所述装置还包括:分片任务数量更新指令获取模块,用于在所述响应于定时任务启动请求,从消息队列中取出第一数量的消息之前,获取分片任务数量更新指令。定时任务分片模块,用于根据所述分片任务数量更新指令,将所述定时任务分片为第二数量的分片任务;其中,第一数量等于第二数量。

可选的,业务数据分类模块,用于在所述响应于定时任务启动请求,从消息队列中取出第一数量的消息之前,根据业务属性信息对业务数据进行分类,并得到分类结果。分类结果存储模块,用于将所述分类结果作为消息存储至所述消息队列中;其中,同一消息队列中存储的所述分类结果所属业务属性相同。

可选的,所述装置还包括:执行频率更新指令获取模块,用于在所述响应于定时任务启动请求,从消息队列中取出第一数量的消息之前,获取定时任务执行频率更新指令。执行频率设置模块,用于根据所述执行频率更新指令设置所述定时任务的执行频率。

可选的,所述消息队列为redis消息队列。

可选的,所述消息队列中存储的为逾期还款账单数据。

可选的,所述定时任务用于以设定时间间隔对所述逾期还款账单数据进行罚息计算。

本发明实施例所提供的消息队列的消费速度控制装置可执行本发明任意实施例所提供的消息队列的消费速度控制方法,具备执行消息队列的消费速度控制方法相应的功能模块和有益效果。

实施例四

根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。

图4为实现本发明实施例的消息队列的消费速度控制方法的电子设备的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴电子设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明实施例的实现。

如图4所示,该电子设备包括:一个或多个处理器410、存储器420,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示电子设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个电子设备提供部分必要的操作(例如,作为电子设备阵列、一组刀片式电子设备、或者多处理器系统)。图4中以一个处理器410为例。

存储器420即为本发明实施例所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本发明实施例所提供的消息队列的消费速度控制方法。本发明实施例的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本发明实施例所提供的消息队列的消费速度控制方法。

存储器420作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本发明实施例提供的消息队列的消费速度控制方法对应的程序指令/模块(例如,附图3所示的包括消息取出模块310和消息处理模块320)。处理器410通过运行存储在存储器420中的非瞬时软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述方法实施例提供的消息队列的消费速度控制方法。

存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储实现消息队列的消费速度控制方法的电子设备的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至执行消息队列的消费速度控制方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

执行消息队列的消费速度控制方法的电子设备还可以包括:输入装置430和输出装置440。处理器410、存储器420、输入装置430和输出装置440可以通过总线或者其他方式连接,图4中以通过总线连接为例。

输入装置430可接收输入的数字或字符信息,以及产生与执行消息队列的消费速度控制方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置440可以包括显示电子设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示电子设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示电子设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、电子设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明实施例中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明实施例公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本发明实施例保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明实施例的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明实施例保护范围之内。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 消息队列的消费速度控制方法、装置、电子设备和介质
  • 速度控制方法、装置、自动化设备、电子设备及存储介质
技术分类

06120112502805