CN113835905A - 一种消息队列负载均衡方法、装置、电子设备及介质 - Google Patents
一种消息队列负载均衡方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN113835905A CN113835905A CN202111143819.XA CN202111143819A CN113835905A CN 113835905 A CN113835905 A CN 113835905A CN 202111143819 A CN202111143819 A CN 202111143819A CN 113835905 A CN113835905 A CN 113835905A
- Authority
- CN
- China
- Prior art keywords
- messages
- consumed
- message queue
- message
- load balancing
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000004891 communication Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 14
- 238000009825 accumulation Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/71—Indexing; Data structures therefor; Storage structures
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种消息队列负载均衡方法、装置、电子设备及介质,涉及计算机技术领域,该方法包括:获取各消息队列的待消费消息数量和消费速度,消费速度为消息队列中的消息被消费的速度;根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长;在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,且平均时长大于预设时长阈值的情况下,对各消息队列进行负载均衡;第一预设比例与第二预设比例的差值大于指定阈值。通过对消息队列负载均衡,避免了消费者订阅的消息队列中出现大量积压消息的情况。使积压的消息及时被处理,保证了业务时效。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种消息队列负载均衡方法、装置、电子设备及介质。
背景技术
RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。RocketMQ的每个主题(topic)包括多个消息队列,RocketMQ中的名称服务(NameServer)可以基于负载均衡的原则,配置同一消费组包括的消费者和一个topic包括的消息队列之间的订阅关系。即不同的消费者可以消费不同的消息队列中的消息,且各消费者对应的消息队列的数量较为均衡。
在相关技术中,只有同一消费组中的消费者数量发生变化时,才会触发重新对消息队列进行负载均衡操作。然而在某些业务场景下,可能出现不同消息队列中的消息负载不均衡的情况。比如各消息队列中都包括携带有设备列表的消息,有些消息中只携带一条设备信息,有些消息中携带多条设备信息,导致虽然不同消费者订阅的消息队列数量相同,但实际的处理速度却产生较大差异,出现部分消费者负载很低,另一部分消费者订阅的消息队列中出现大量积压消息的情况。导致积压的消息不能被及时处理,影响业务时效。
发明内容
本发明实施例的目的在于提供一种消息队列负载均衡方法、装置、电子设备及介质,以可以使得积压的待消费消息被及时处理,减小了对业务时效的影响。具体技术方案如下:
第一方面,本申请实施例提供了一种消息队列负载均衡方法,包括:
获取各消息队列的待消费消息数量和消费速度,所述消费速度为消息队列中的消息被消费的速度;
根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长;
在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,且所述平均时长大于预设时长阈值的情况下,对各消息队列进行负载均衡;所述第一预设比例与所述第二预设比例的差值大于指定阈值。
可选的,所述对各消息队列进行负载均衡,包括:
将待消费消息数量最多的消费队列中的待消费消息平均分配到每个消息队列;或者,
将所述第二预设比例的消息队列中的待消费消息平均分配到每个消息队列。
可选的,在所述获取各消息队列的待消费消息数量和消费速度之后,所述方法还包括:
按照待消费消息数量从多到少的顺序,对各消息队列包括的待消费消息进行迭代累加;
每累加一次,判断当前待消费消息数量的累加值与待消费消息总数量之间的比值是否大于等于所述第一预设比例,所述待消费消息总数量为各消息队列的待消费消息数量之和;
当确定当前待消费消息数量的累加值与所述待消费消息总数量的比值大于等于第一预设比例时,判断当前已参与累加的消息队列数量与消息队列总数量之间的比值是否小于所述第二预设比例;
若是,则确定超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中。
可选的,所述消费速度为QPS;
所述根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长,包括:
确定各消息队列的待消费消息数量之和,得到各消息队列的待消费消息总数量;
确定各消息队列对应的QPS之和,得到QPS总和;
将所述待消费消息总数量与所述QPS总和之间的比值,作为所述平均时长。
可选的,在所述根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长之后,所述方法还包括:
如果不存在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,或者所述平均时长小于等于所述预设时长阈值,则等待第一预设时长后,返回所述获取各消息队列的待消费消息数量和消费速度的步骤。
可选的,在所述对各消息队列进行负载均衡之后,所述方法还包括:
在第二预设时长后,获取负载均衡后的各消息队列的待消费消息数量和消费速度;
根据负载均衡后的各消息队列的待消费消息数量和消费速度,确定消费完当前各消费队列中的待消费消息所需的平均时长;
若负载均衡后的平均时长大于等于负载均衡前的平均时长,则等待第三预设时长后,返回所述获取各消息队列的消费消息数量和消费速度的步骤;
若负载均衡后的平均时长小于负载均衡前的平均时长,则返回所述获取各消息队列的消费消息数量和消费速度的步骤。
第二方面,本申请实施例提供了一种消息队列负载均衡装置,包括:
获取模块,用于获取各消息队列的待消费消息数量和消费速度,所述消费速度为消息队列中的消息被消费的速度;
确定模块,用于根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长;
负载均衡模块,用于在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,且所述平均时长大于预设时长阈值的情况下,对各消息队列进行负载均衡;所述第一预设比例与所述第二预设比例的差值大于指定阈值。
可选的,所述负载均衡模块,具体用于:
将待消费消息数量最多的消费队列中的待消费消息平均分配到每个消息队列;或者,
将所述第二预设比例的消息队列中的待消费消息平均分配到每个消息队列。
可选的,所述装置还包括:
累加模块,用于按照待消费消息数量从多到少的顺序,对各消息队列包括的待消费消息进行迭代累加;
判断模块,用于在所述累加模块每累加一次后,判断当前待消费消息数量的累加值与待消费消息总数量之间的比值是否大于等于所述第一预设比例,所述待消费消息总数量为各消息队列的待消费消息数量之和;以及当确定当前待消费消息数量的累加值与所述待消费消息总数量的比值大于等于第一预设比例时,判断当前已参与累加的消息队列数量与消息队列总数量之间的比值是否小于所述第二预设比例;
所述确定模块,还用于若所述判断模块的判断结果为是,则确定超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中。
可选的,所述消费速度为QPS;
所述确定模块,具体用于:
确定各消息队列的待消费消息数量之和,得到各消息队列的待消费消息总数量;
确定各消息队列对应的QPS之和,得到QPS总和;
将所述待消费消息总数量与所述QPS总和之间的比值,作为所述平均时长。
可选的,所述确定模块,还用于如果确定不存在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,或者所述平均时长小于等于所述预设时长阈值,则等待第一预设时长后,触发所述获取模块执行所述获取各消息队列的待消费消息数量和消费速度的步骤。
可选的,所述获取模块,还用于在所述负载均衡模块完成负载均衡的第二预设时长后,获取负载均衡后的各消息队列的待消费消息数量和消费速度;
所述确定模块,还用于根据负载均衡后的各消息队列的待消费消息数量和消费速度,确定消费完当前各消费队列中的待消费消息所需的平均时长;若负载均衡后的平均时长大于负载均衡前的平均时长,则等待第三预设时长后,触发所述获取模块执行所述获取各消息队列的消费消息数量和消费速度的步骤;若负载均衡后的平均时长小于负载均衡前的平均时长,则触发所述获取模块执行所述获取各消息队列的消费消息数量和消费速度的步骤。
第三方面,本申请实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一消息队列负载均衡方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一消息队列负载均衡方法的步骤。
第五方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一消息队列负载均衡方法。
本发明实施例有益效果:
本发明实施例提供的消息队列负载均衡方法、装置、电子设备及介质,可以获取各消息队列的待消费消息数量和消费速度,通过各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长。如果平均时长大于预设时间阈值,说明当前整体的消费速度较慢,可能会出现消息积压的情况。并且,如果超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,说明大量的待消费消息位于少量的消息队列中,出现了负载不均衡的情况,即大量的待消费消息等待被少量的消费者处理。所以本申请实施例在这种情况下对消息队列进行负载均衡,可以使得积压的待消费消息被及时处理,减小了对业务时效的影响。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种消息队列负载均衡方法的流程图;
图2为本发明实施例提供的一种消息队列与消费者之间的对应关系的示例性示意图;
图3为本发明实施例提供的另一种消息队列负载均衡方法的流程图;
图4为本发明实施例提供的另一种消息队列负载均衡方法的流程图;
图5为本发明实施例提供的一种消息队列负载均衡装置的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供一种消息队列负载均衡方法,该方法应用于电子设备,如图1所示,该方法包括:
S101、获取各消息队列的待消费消息数量和消费速度,消费速度为消息队列中的消息被消费的速度。
S102、根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长。
S103、在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,且平均时长大于预设时长阈值的情况下,对各消息队列进行负载均衡。
其中,第一预设比例与第二预设比例的差值大于指定阈值。
本发明实施例提供的消息队列负载均衡方法,可以获取各消息队列的待消费消息数量和消费速度,通过各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长。如果平均时长大于预设时间阈值,说明当前整体的消费速度较慢,可能会出现消息积压的情况。并且,如果超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,说明大量的待消费消息位于少量的消息队列中,出现了负载不均衡的情况,即大量的待消费消息等待被少量的消费者处理。所以本申请实施例在这种情况下对消息队列进行负载均衡,可以使得积压的待消费消息被及时处理,减小了对业务时效的影响。
在上述S101中,生产者可以生产消息,并将生产的消息发送到消息中间件中,消息中间件中包括多个消息队列,生产者生产的消息可以被缓存于消息队列中。
其中,消息中间件中可以包括多个topic,每个topic包括多个消息队列,该多个消息队列中的消息可以被一个消费者组包括的多个消费者进行消费。
上述S101中的各消息队列为一个topic中的各个消息队列,对每个topic包括的消息队列均可按照本申请实施例提供的方法进行负载均衡。如果消息中间件只包括一个topic,则相应地上述S101中的各消息队列是指消息中间件包括的所有消息队列。
示例性的,本申请实施例可以应用在内部剧集同步的场景,在该应用场景中,剧目编辑系统生成一集新的视频后,将该新的视频发送到消息队列,供订阅方从消息队列中获取该新的视频,并更新自身缓存的视频。
在这种场景下,剧目编辑系统为生产者,订阅方为消费者。例如,订阅方可以是视频服务的服务端,服务端接收到来自于剧目编辑系统的更新消息后,从消息队列中获取并缓存该新的视频。同时服务端更新自身维护的剧集列表,剧集列表一般以分布式的方式缓存,例如缓存在远程字典服务(Remote Dictionary Server,redis)数据库中。以使得视频服务的客户端可以通过请求服务端的方式,及时获取更新后的剧集列表以及该新的视频。
在一种实施方式中,消息队列的消费速度可以为消息队列的消费每秒查询率(Queries Per Second,QPS)。
在上述S102中,平均时长=各消息队列的待消费消息总数量/各消息队列的消费速度之和。
在上述S103中,第一预设比例和第二预设比例的值可根据实际情况提前设置,第一预设比例大于第二预设比例。作为示例,第一预设比例可以为90%,第二预设比例可以为10%。
预设时长阈值可以基于业务时延需求设置,业务时延要求越高,相应地预设时长阈值越小。作为示例,预设时长阈值可以为1分钟。
如果平均时长大于预设时长阈值,代表消息队列中的待消费消息不能及时被消费者的消费,如果是因为流量瞬时过大,或者是消费者的消费能力整体较弱,导致所有消息队列中的待消费消息均出现积压,那么通过负载均衡的方式也无法加快对待消费消息的处理速度。所以本申请实施例对各消息队列中的待消费消息的分布情况进行进一步判断,在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中的情况下,可以确定是因为各消息队列中的待消费消息数量不均衡所导致的待消费消息处理速度较慢,所以可以通过负载均衡的方式提高待消费消息被处理的速度。
反之,如果不存在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,或者平均时长小于等于预设时长阈值,则等待第一预设时长后,返回上述S101。作为示例,第一预设时长为30秒,即在不满足负载均衡的触发条件的情况下,可以每隔30秒执行图1所示的方法流程,以在满足负载均衡的条件时及时进行负载均衡。
在本申请的一个实施例中,在上述S101、获取各消息队列的待消费消息数量和消费速度之后,可以按照待消费消息数量从多到少的顺序,对各消息队列包括的待消费消息进行迭代累加;每累加一次,判断当前待消费消息数量的累加值与待消费消息总数量之间的比值是否大于等于第一预设比例,待消费消息总数量为各消息队列的待消费消息数量之和。
当确定当前待消费消息数量的累加值与待消费消息总数量的比值大于等于第一预设比例时,判断当前已参与累加的消息队列数量与消息队列总数量之间的比值是否小于所述第二预设比例;若是,则确定超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中。
例如,在上述累加过程中,如果确定累加值超过了待消费消息总数量的90%,则判断当前已参与累加的消息队列的数量是否小于消费队列总数量的10%。若是,则说明超过90%的待消费消息落在了小于10%的消息队列中。
在本申请实施例中,上述消费速度可以为QPS。相应地,上述S102、根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长,包括:
确定各消息队列的待消费消息数量之和,得到各消息队列的待消费消息总数量,确定各消息队列对应的QPS之和,得到QPS总和。然后将待消费消息总数量与QPS总和之间的比值,作为平均时长。
其中,各消息队列的待消费消息总数量为一个topic中未被消费的消息的总数量。例如,该待消费消息总数量可以表示为total_msg_num_new,该topic中包括的总队列数可以表示为total_queue_num,total_queue_num个消息队列的qps分别为qps1,qps2,qps3…qpsN,则上述平均时长为total_msg_num/(qps1+...+qpsN)。
在进行负载均衡前,假设某个topic有120个消息队列,30个消费者,则队列(queue)和消费者(worker)的对应关系如图2所示,其中,队列1至队列4对应于消费者1,队列5至队列8对应于消费者2,以此类推。120个队列被平均分配给30个消费者,每个消费者用于消费4个队列中的消息。
在确定需要进行负载均衡后,本申请实施例提供了以下三种对各消息队列进行负载均衡的方式:
方式一、将待消费消息数量最多的消费队列中的待消费消息平均分配到每个消息队列。
结合上述举例,假设队列1中的待消费消息数量最多,则将队列1中的待消费消息平均分配到队列1至队列N。
方式二、将第二预设比例的消息队列中的待消费消息平均分配到每个消息队列。
结合上述举例,假设90%的待消费消息位于队列1、队列3、队列5中,则将队列1、队列3、队列5中的待消费消息平均分配到队列1至队列N。
方式三、获取各消息队列对应的消费者的消费能力,将各第二预设比例的消息队列中的待消费消息,按照消费者的消费能力指标分配到各消息队列。
在一种实施方式中,本申请实施例中的电子设备也可以称为协商(broker)端,broker端可以周期性地获取各消费者的消费能力指标,例如,消费者的消费能力指标可以为消费者对应的消息队列中的offset在单位时间内的变化值,该offset在单位时间内的变化值可以表征消息队列中的消息被消费的速度。Broker端可以将各消费者的消费能力指标以map的形式保存。
进而,broker端可以按照各消费者的消费能力指标,确定为每个消费者对应的消息队列分配的待消费消息数量,以使得各消费队列中的待消费消息数量与消费者的消费能力指标匹配。
采用上述负载均衡的方式,可以使得待消费消息被平均地分配到各消息队列中,以使得各消费者的消费能力被合理利用,加快消费积压消息的速度,降低业务时延。
在本申请的一个实施例中,在对各消息队列进行负载均衡后,还可以对负载均衡的效果进行评估。如图3所示,在上述S103中,对各消息队列进行负载均衡后,该方法还包括:
S301、在第二预设时长后,获取负载均衡后的各消息队列的待消费消息数量和消费速度。
其中,第二预设时长大于第一预设时长,且第二预设时长小于第三预设时长。
作为示例,第二预设时长的取值范围可以为1分钟至5分钟,第三预设时长为10分钟。
S302、根据负载均衡后的各消息队列的待消费消息数量和消费速度,确定消费完当前各消费队列中的待消费消息所需的平均时长。
其中,将负载均衡后的各消息队列的待消费消息数量相加,可以得到待消费消息总数量,可以将负载均衡后的待消费消息总数量表示为total_msg_num_new,负载均衡后各消息队列的QPS分别为qps1,qps2,qps3…qpsN,负载均衡后的平均时长为total_msg_num_new/(qps1+...+qpsN)。
S303、判断负载均衡后的平均时长是否小于负载均衡前的平均时长。
若是,即若负载均衡后的平均时长小于负载均衡前的平均时长,则返回S101。
若否,即若负载均衡后的平均时长大于等于负载均衡前的平均时长,则执行S304。
S304、等待第三预设时长后,返回S101。
采用该方法,如果负载均衡后的平均时长减小,说明负载均衡后对待消费消息的处理速度加快,负载均衡的效果较好,所以可以继续周期性检测各消息队列的状态。如果负载均衡后的平均时长增大,说明负载均衡后的效果不好,所以当前对待消费消息的消费速度慢可能不是因负载不均衡引起的,所以可以冷却一段时间再进行负载均衡的判断,以避免频繁地进行负载均衡。
以对某一个topic包括的消息队列为例,如图4所示,本申请实施例提供消息队列负载均衡方法包括如下步骤:
S401、监控topic包括的各消息队列的队列状态。
其中,队列状态包括消息队列的待消费消息数量和消费速度。
S402、根据各消息队列的队列状态,判断是否满足负载均衡的条件。
若是,则执行S403;若否,则等待第一预设时长后,返回S401。作为示例,第一预设时长为30秒。
S403、对topic包括的各消息队列进行负载均衡。
S404、在第二预设时长后,评估负载均衡效果。
作为示例,第二预设时长可以为5分钟。
S405、根据负载均衡效果判断负载均衡后的整体消费能力是否增强。
若是,则返回S404;若否,则执行S406。
S406、冷却第三预设时长。在冷却第三预设时长后,返回上述S401。
对应于上述方法实施例,本申请实施例还提供一种消息队列负载均衡装置,如图5所示,该装置包括:获取模块501、确定模块502和负载均衡模块503;
获取模块501,用于获取各消息队列的待消费消息数量和消费速度,消费速度为消息队列中的消息被消费的速度;
确定模块502,用于根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长;
负载均衡模块503,用于在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,且平均时长大于预设时长阈值的情况下,对各消息队列进行负载均衡;第一预设比例与第二预设比例的差值大于指定阈值。
可选地,负载均衡模块503,具体用于:
将待消费消息数量最多的消费队列中的待消费消息平均分配到每个消息队列;或者,
将第二预设比例的消息队列中的待消费消息平均分配到每个消息队列。
可选地,该装置还包括:
累加模块,用于按照待消费消息数量从多到少的顺序,对各消息队列包括的待消费消息进行迭代累加;
判断模块,用于在累加模块每累加一次后,判断当前待消费消息数量的累加值与待消费消息总数量之间的比值是否大于等于第一预设比例,待消费消息总数量为各消息队列的待消费消息数量之和;以及当确定当前待消费消息数量的累加值与待消费消息总数量的比值大于等于第一预设比例时,判断当前已参与累加的消息队列数量与消息队列总数量之间的比值是否小于第二预设比例;
确定模块502,还用于若判断模块的判断结果为是,则确定超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中。
可选地,上述消费速度为QPS;
确定模块502,具体用于:
确定各消息队列的待消费消息数量之和,得到各消息队列的待消费消息总数量;
确定各消息队列对应的QPS之和,得到QPS总和;
将待消费消息总数量与QPS总和之间的比值,作为平均时长。
可选地,确定模块502,还用于如果确定不存在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,或者平均时长小于等于预设时长阈值,则等待第一预设时长后,触发获取模块501执行获取各消息队列的待消费消息数量和消费速度的步骤。
可选地,获取模块501,还用于在负载均衡模块完成负载均衡的第二预设时长后,获取负载均衡后的各消息队列的待消费消息数量和消费速度;
确定模块502,还用于根据负载均衡后的各消息队列的待消费消息数量和消费速度,确定消费完当前各消费队列中的待消费消息所需的平均时长;若负载均衡后的平均时长大于负载均衡前的平均时长,则等待第三预设时长后,触发获取模块执行获取各消息队列的消费消息数量和消费速度的步骤;若负载均衡后的平均时长小于负载均衡前的平均时长,则触发获取模块501执行获取各消息队列的消费消息数量和消费速度的步骤。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现上述方法实施例中的方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一所述的消息队列负载均衡方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的消息队列负载均衡方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种消息队列负载均衡方法,其特征在于,包括:
获取各消息队列的待消费消息数量和消费速度,所述消费速度为消息队列中的消息被消费的速度;
根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长;
在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,且所述平均时长大于预设时长阈值的情况下,对各消息队列进行负载均衡;所述第一预设比例与所述第二预设比例的差值大于指定阈值。
2.根据权利要求1所述的方法,其特征在于,所述对各消息队列进行负载均衡,包括:
将待消费消息数量最多的消费队列中的待消费消息平均分配到每个消息队列;或者,
将所述第二预设比例的消息队列中的待消费消息平均分配到每个消息队列。
3.根据权利要求1或2所述的方法,其特征在于,在所述获取各消息队列的待消费消息数量和消费速度之后,所述方法还包括:
按照待消费消息数量从多到少的顺序,对各消息队列包括的待消费消息进行迭代累加;
每累加一次,判断当前待消费消息数量的累加值与待消费消息总数量之间的比值是否大于等于所述第一预设比例,所述待消费消息总数量为各消息队列的待消费消息数量之和;
当确定当前待消费消息数量的累加值与所述待消费消息总数量的比值大于等于第一预设比例时,判断当前已参与累加的消息队列数量与消息队列总数量之间的比值是否小于所述第二预设比例;
若是,则确定超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中。
4.根据权利要求1所述的方法,其特征在于,所述消费速度为QPS;
所述根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长,包括:
确定各消息队列的待消费消息数量之和,得到各消息队列的待消费消息总数量;
确定各消息队列对应的QPS之和,得到QPS总和;
将所述待消费消息总数量与所述QPS总和之间的比值,作为所述平均时长。
5.根据权利要求1所述的方法,其特征在于,在所述根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长之后,所述方法还包括:
如果不存在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,或者所述平均时长小于等于所述预设时长阈值,则等待第一预设时长后,返回所述获取各消息队列的待消费消息数量和消费速度的步骤。
6.根据权利要求1所述的方法,其特征在于,在所述对各消息队列进行负载均衡之后,所述方法还包括:
在第二预设时长后,获取负载均衡后的各消息队列的待消费消息数量和消费速度;
根据负载均衡后的各消息队列的待消费消息数量和消费速度,确定消费完当前各消费队列中的待消费消息所需的平均时长;
若负载均衡后的平均时长大于等于负载均衡前的平均时长,则等待第三预设时长后,返回所述获取各消息队列的消费消息数量和消费速度的步骤;
若负载均衡后的平均时长小于负载均衡前的平均时长,则返回所述获取各消息队列的消费消息数量和消费速度的步骤。
7.一种消息队列负载均衡装置,其特征在于,包括:
获取模块,用于获取各消息队列的待消费消息数量和消费速度,所述消费速度为消息队列中的消息被消费的速度;
确定模块,用于根据各消息队列的待消费消息数量和消费速度确定消费完当前各消息队列中的待消费消息所需的平均时长;
负载均衡模块,用于在超过第一预设比例的待消费消息位于小于第二预设比例的消息队列中,且所述平均时长大于预设时长阈值的情况下,对各消息队列进行负载均衡;所述第一预设比例与所述第二预设比例的差值大于指定阈值。
8.根据权利要求7所述的装置,其特征在于,所述负载均衡模块,具体用于:
将待消费消息数量最多的消费队列中的待消费消息平均分配到每个消息队列;或者,
将所述第二预设比例的消息队列中的待消费消息平均分配到每个消息队列。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111143819.XA CN113835905B (zh) | 2021-09-28 | 2021-09-28 | 一种消息队列负载均衡方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111143819.XA CN113835905B (zh) | 2021-09-28 | 2021-09-28 | 一种消息队列负载均衡方法、装置、电子设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113835905A true CN113835905A (zh) | 2021-12-24 |
CN113835905B CN113835905B (zh) | 2023-09-05 |
Family
ID=78967045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111143819.XA Active CN113835905B (zh) | 2021-09-28 | 2021-09-28 | 一种消息队列负载均衡方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113835905B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114595078A (zh) * | 2022-01-11 | 2022-06-07 | 浙江零跑科技股份有限公司 | 一种基于时序消息消费队列的均衡方法及系统 |
CN115964254A (zh) * | 2023-03-16 | 2023-04-14 | 麒麟软件有限公司 | 一种动态调整监控数据处理速度的方法、系统及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090070764A1 (en) * | 2007-09-12 | 2009-03-12 | Alejandro Guizar | Handling queues associated with web services of business processes |
CN102457906A (zh) * | 2010-10-26 | 2012-05-16 | 中国移动通信集团河南有限公司 | 一种消息队列的负载均衡控制方法及系统 |
US20130179888A1 (en) * | 2012-01-11 | 2013-07-11 | Bank Of America Corporation | Application Load Balancing Utility |
US20130290513A1 (en) * | 2012-04-27 | 2013-10-31 | Xerox Business Services, Llc | Intelligent Work Load Manager |
CN109257320A (zh) * | 2017-07-13 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 消息存储方法和装置 |
CN112988423A (zh) * | 2021-03-19 | 2021-06-18 | 北京京东拓先科技有限公司 | 消息消费、消息分发方法、装置、服务器及存储介质 |
CN113138860A (zh) * | 2020-01-17 | 2021-07-20 | 中国移动通信集团浙江有限公司 | 消息队列的管理方法及装置 |
-
2021
- 2021-09-28 CN CN202111143819.XA patent/CN113835905B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090070764A1 (en) * | 2007-09-12 | 2009-03-12 | Alejandro Guizar | Handling queues associated with web services of business processes |
CN102457906A (zh) * | 2010-10-26 | 2012-05-16 | 中国移动通信集团河南有限公司 | 一种消息队列的负载均衡控制方法及系统 |
US20130179888A1 (en) * | 2012-01-11 | 2013-07-11 | Bank Of America Corporation | Application Load Balancing Utility |
US20130290513A1 (en) * | 2012-04-27 | 2013-10-31 | Xerox Business Services, Llc | Intelligent Work Load Manager |
CN109257320A (zh) * | 2017-07-13 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 消息存储方法和装置 |
CN113138860A (zh) * | 2020-01-17 | 2021-07-20 | 中国移动通信集团浙江有限公司 | 消息队列的管理方法及装置 |
CN112988423A (zh) * | 2021-03-19 | 2021-06-18 | 北京京东拓先科技有限公司 | 消息消费、消息分发方法、装置、服务器及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114595078A (zh) * | 2022-01-11 | 2022-06-07 | 浙江零跑科技股份有限公司 | 一种基于时序消息消费队列的均衡方法及系统 |
CN115964254A (zh) * | 2023-03-16 | 2023-04-14 | 麒麟软件有限公司 | 一种动态调整监控数据处理速度的方法、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113835905B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110858843B (zh) | 业务请求处理方法、装置及计算机可读存储介质 | |
US10484464B2 (en) | Connection control device, connection control system, and non-transitory computer readable medium | |
US9497288B2 (en) | Subscriber based priority of messages in a publisher-subscriber domain | |
CN110519183B (zh) | 一种节点限速的方法、装置、电子设备及存储介质 | |
CN108737132B (zh) | 一种告警信息处理方法及装置 | |
CN113835905B (zh) | 一种消息队列负载均衡方法、装置、电子设备及介质 | |
CN111782692B (zh) | 一种频率控制方法及装置 | |
CN110022259B (zh) | 消息到达率确定方法、装置、数据统计服务器及存储介质 | |
CN110460879B (zh) | 一种视频请求调度方法、装置、服务器及存储介质 | |
CN108156257B (zh) | 一种信息推送方法及装置 | |
CN111400045B (zh) | 一种负载均衡方法及装置 | |
CN111163172B (zh) | 消息处理系统、方法、电子设备及存储介质 | |
CN115037696B (zh) | 数据传输方法、装置、电子设备和存储介质 | |
CN111538572A (zh) | 任务处理方法、装置、调度服务器及介质 | |
CN113949741A (zh) | 一种调度方法、调度装置、电子设备及存储介质 | |
CN109308219B (zh) | 任务处理方法、装置及分布式计算机系统 | |
CN116055401A (zh) | 一种消息处理方法、装置、设备及存储介质 | |
CN116319810A (zh) | 分布式系统的流量控制方法、装置、设备、介质及产品 | |
CN113608870B (zh) | 消息队列的负载均衡方法及装置、电子设备及存储介质 | |
CN113810461B (zh) | 带宽控制方法、装置、设备及可读存储介质 | |
CN112671590B (zh) | 数据传输方法、装置、电子设备及计算机存储介质 | |
CN112131198B (zh) | 一种日志分析方法、装置及电子设备 | |
CN110933122A (zh) | 管理服务器的方法、设备和计算机存储介质 | |
CN114090409A (zh) | 一种消息处理方法及装置 | |
CN114900477A (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 |