CN115550284A - 消息处理方法、装置和设备 - Google Patents
消息处理方法、装置和设备 Download PDFInfo
- Publication number
- CN115550284A CN115550284A CN202211202089.0A CN202211202089A CN115550284A CN 115550284 A CN115550284 A CN 115550284A CN 202211202089 A CN202211202089 A CN 202211202089A CN 115550284 A CN115550284 A CN 115550284A
- Authority
- CN
- China
- Prior art keywords
- message
- message queue
- theme
- quota
- topic
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/76—Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种消息处理方法、装置和设备,该方法包括:在消费单元中的消费者向消息队列单元中对应的消息队列主题拉取消息时,动态配置各个消息队列主题的消息存储额度,消息队列主题中存储有上游系统发送的待传输消息,消息队列单元包括有至少一个消息队列主题,每个消息队列主题对应有至少一个消费者,消费单元包括有至少一个消费者;将存储的待传输消息传输至对应的消费者。该技术方案中,通过对多个消息主题设置不同消息存储额度,可根据消息实时消费和处理情况动态调整主题配额,自适应不同消息场景,从而实现资源的合理利用,可根据各主题实施配额情况自上而下分配和自下而上征集配额,灵活性更强。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种消息处理方法、装置和设备。
背景技术
消息队列是消息传输过程中保存消息的容器,消息队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
现有技术中,基于消息队列的消息传递,主要是根据事先设定的业务规则设置多个消息队列主题,不同消息对应存储至不同的主题,并设置每个主题的配额,上游系统根据配额发送消息至每个主题。
但是,这种方式当上游系统无消息发送时,此时存在一个或多个主题无消息堆积,使得消费者拉取的消息量小于初始化分配最大拉取量,造成消费者频繁拉取小批量的消息,导致资源浪费。
发明内容
本申请提供一种消息处理方法、装置和设备,用于解决现有的消费者频繁拉取小批量的消息,导致资源浪费的问题。
第一方面,本申请实施例提供一种消息处理方法,应用于消息处理装置,所述消息处理装置至少包括有消息队列单元和消费单元,所述方法包括:
在所述消费单元中的消费者向所述消息队列单元中对应的消息队列主题拉取消息时,动态配置各个消息队列主题的消息存储额度,所述消息队列主题中存储有上游系统发送的待传输消息,所述消息队列单元包括有至少一个消息队列主题,每个消息队列主题对应有至少一个消费者,所述消费单元包括有至少一个消费者;
将存储的待传输消息传输至对应的消费者。
第二方面,本申请实施例提供一种消息处理装置,包括:
额度配置模块,用于在消费单元中的消费者向消息队列单元中对应的消息队列主题拉取消息时,动态配置各个消息队列主题的消息存储额度,所述消息队列主题中存储有上游系统发送的待传输消息,所述消息队列单元包括有至少一个消息队列主题,每个消息队列主题对应有至少一个消费者,所述消费单元包括有至少一个消费者;
消息传输模块,用于将存储的待传输消息传输至对应的消费者。
第三方面,本申请实施例提供一种消息处理设备,包括:消息处理器件和分别与所述消息处理器件连接的动态流控器件、动态配额控制器件和状态刷新器件,所述状态刷新器件与所述动态配额控制器件连接,所述动态配额控制器件与所述动态流控器件连接;
所述消息处理器件包括有消息队列单元和消费单元,所述消息队列单元与所述消费单元连接;
所述消息队列单元用于根据上游系统发送的待传输消息,创建不同优先级的消息队列主题,每个消息队列主题用于存储对应类型的待传输消息;
所述消费单元包括有特别消费者和与所述消息队列主题对应的消费者,每个消费者用于向对应的消息队列主题拉取消息并发送至所述特别消费者,所述特别消费者用于进行消息的统一发送;
所述动态配额控制器件用于对每个消息队列主题初始化配额,并根据消息队列主题中消息堆积状况和消费者的消息消费状况,动态调整每一个消息队列主题配额;
所述动态流控器件用于在预设总流控速率下,动态配置各消息队列主题的处理速率;
所述状态刷新器件用于从消息队列单元中获取每个消息队列主题的状态信息,并发送至所述动态动态配额控制器件。
本申请实施例提供的消息处理方法、装置和设备,通过对多个消息主题设置不同消息存储额度,可根据消息实时消费和处理情况动态调整主题配额,自适应不同消息场景,从而实现资源的合理利用,可根据各主题实施配额情况自上而下分配和自下而上征集配额,灵活性更强。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理;
图1为本申请实施例提供的消息处理的场景示意图;
图2为本申请实施例提供的消息处理方法的流程示意图;
图3为本申请实施例提供的消息处理装置的结构示意图;
图4为本申请实施例提供的消息处理装置工作流程示意图;
图5为本申请实施例提供的状态设置流程示意图;
图6为本申请实施例提供的存储额度削减的流程示意图;
图7为本申请实施例提供的存储额度征集的流程示意图;
图8为本申请实施例图的动态流控器件的工作流程示意图;
图9为本申请实施例提供的状态刷新器件的工作流程示意图;
图10为本申请实施例提供的消息处理装置的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请所涉及的名词进行解释:
消息队列是消息传输过程中保存消息的容器,消息队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
消息主题:是根据业务规则对消息进行分类,不同类型的消息对应不同的主题,同一个主题的消息优先级相同。
产品代码:是代表每一种类型的短信消息,例如动账短信、验证码短信、营销类短信等;多个类型产品代码可能对应同一个主题,此时它们的优先级相同。
生产者:是将消息根据业务规则放入消息队列不同主题中。
消费者:是从消息队列不同主题中获取消息并处理。
特别消费者:是聚合多个不同优先级消费者消费的消息,进行统一归口发送。
配额:是消息队列中每个主题所能容纳消息的最大容量。
动态配额:是根据实际情况动态的给不同优先级的消息配置不同的配额。
动态流控:是动态流控指在给定的总流控速率下,各优先级的处理速率动态分配。
状态刷新:是给定时间间隔内触发动态配额和动态流控,并实时更新各优先级处理状态。
联机短信:是上游系统实时产生的消息,由消息服务平台加工成短信后发送至客户终端。
批量短信:是上游系统同时给多个用户发送相同业务类型的短信,对时效性要求不高。
随着互联网科技的飞速发展,消息服务业务规模也迅速扩大。作为企业直接面对客户的系统,短消息服务业务对时效性、准确性的要求极高,特别是对于敏感消息类业务,直接影响用户体验和各类交易流程。针对短信发送业务场景,一种类型的短信对应一个产品代码,例如动账短信、验证码短信、营销类短信、贷款逾期类短信、结息短信等,按照时间可划分为联机短信、批量短信等,按照时效性可划分为时效性极强短信、时效性一般短信等。联机短信的优先级高于批量短信,时效性极强短信优先级高于时效性一般短信。短信消息通过消息队列进行接收及发送,消息队列将每一个主题分区当作一个具有顺序排列的日志。上游系统将消息发送至消息队列的主题中进行保存,消费者获取消息主题中的消息,处理加工后消息发送。消息队列虽然具有较高的吞吐量,但消息队列基于顺序写的机制,不能实现优先级排队。在传统的消息队列中,消息按时间到达的先后顺序进行消费。例如营销类短信早于验证码类短信进入消息队列,则营销类短信优先验证码类短信发送,此种处理方式未考虑消息的优先级,不能实现“插队”效果,存在明显缺陷。此外根据不同优先级设置不同的消息队列,不同消息队列之间相互隔离,互不干扰,此时高优先级消息队列可能发生阻塞等待,而低优先级消息队列可能空闲等待,仍然无法真正实现优先级或“插队效果”。在此背景下,通过多个队列单元配置不同消息配额发送消息,解决高优先级消息可“插队”优先发送消息成为可能。
当前基于消息队列的优先级控制方案中主要有:一是根据事先设定的业务规则设置多个消息队列主题,不同消息对应不同的主题,根据历史经验设置每个主题的配额,并一直保持不变。理想情况下,上游消息一直按配额发送。二是基于方案一设置多个消息主题,并设置不同配额,区别在于每个消息主题配额可以根据消息拉取数量动态调整,如果高优先级主题有多余配额,高优先级多余配额可向底优先级分配。三是根据不同优先级设置不同消息队列,高优先级消息队列配额高,低优先级消息配额低。相对方案一一个队列中设置多个主题,各个主题消息汇聚到同一批次发送,方案三设置多个消息队列,各优先级队列之间相互独立,互不干扰。
针对方案一,不同优先级配额根据历史经验提前设定,不再更改,假使上游系统一直按配额进行发送,此类方案可行。对于多个优先级主题,考虑某些时刻上游系统无消息发送,此时存在某个或某几个主题无消息堆积,那么消费者拉取的消息量小于初始化分配最大拉取量,消费者将频繁拉取小批量的消息,造成资源浪费。例如特权消费者初始化指定每次共拉取50条消息,此时拉取量可能为30。当较低优先级出现消息堆积时,较高优先级无消息处于空闲状态,那么较低优先级仍然以低配额的比例拉取消息。针对方案二,动态调整可实现高优先级多余配额分配至低优先级使用,因为分配方向单一,高优先级配额分配完后,消息量激增,此时剩余配额不满足要求,低优先级主题配额无法反向分配,高优先级消息积压,造成性能瓶颈,影响系统稳定运行。针对方案三,优先级之间消费相互隔离,不同优先级对应不同的处理流程,根本上无法实现优先级或“插队”效果。低优先级配额小,消费完本批次消息后可以立即拉取下一批;高优先级配额高,消息拉取频率也低。把时间窗口拉长,高低优先级拉取总消息量将趋于一致。例如,在一段时间内,配额为30的消息队列共拉取消息1次,配额为5的消息队列共拉取消息6次,此时这两个队列的消息拉取总量相等,均为30。
针对上述问题,本申请实施例提供了一种消息处理方法、装置和设备,通过对多个消息主题设置不同消息存储额度,可根据消息实时消费和处理情况动态调整主题配额,自适应不同消息场景,从而实现资源的合理利用,可根据各主题实施配额情况自上而下分配和自下而上征集配额,灵活性更强。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请实施例提供的消息处理的场景示意图,如图1所示,上游系统10可以是消息生产者,其将消息发送给消息队列11,由消息队列11进行缓存,之后被消费者12拉取,完成消息的消费。
图2为本申请实施例提供的消息处理方法的流程示意图,该方法可以应用于消息处理装置,该消息处理装置可以集成在电子设备上,例如计算机设备上。其中,消息处理装置至少包括有消息队列单元和消费单元。如图2所示,该方法具体可以包括如下步骤:
步骤S201,在消费单元中的消费者向消息队列单元中对应的消息队列主题拉取消息时,动态配置各个消息队列主题的消息存储额度。其中,消息队列主题中存储有上游系统发送的待传输消息,消息队列单元包括有至少一个消息队列主题,每个消息队列主题对应有至少一个消费者,消费单元包括有至少一个消费者。
步骤S202,将存储的待传输消息传输至对应的消费者。
在本实施例中,每个消息队列主题对应有至少一个消费者,每个消费者向消息队列主题拉取预设数量的消息,其中,消息队列主题中的消息来自于上游系统(即消息生产者),不同的消费者从消息队列主题拉取的消息量可以不同。示例性的,每个消息队列主题可以预先设置一个初始的消息存储额度,例如消息队列主题X1可以设置初始的消息存储额度为E1,消息队列主题X2可以设置初始的消息存储额度为E2。消息队列主题X1对应的消费者可以为消费者F1,消息队列主题X2对应的消费者可以为F2。其中,消费者F1可以每次向消息队列主题X1拉取30条消息(如果实际存储的消息数量不够30条,则拉取存储的全部消息),消费者F2可以每次向消息队列主题X2拉取10条消息(如果实际存储的消息数量不够30条,则拉取存储的全部消息)。
其中,当消息队列主题X1或者消息队列主题X2所存储的消息数量不够拉取量时,则需要动态的调整消息队列主题X1或者消息队列主题X2的消息存储额度,以使得调整后的消息存储额度大于或等于拉取量,从而避免消费者频繁拉取小批量的消息,造成资源浪费。
本申请实施例通过对多个消息主题设置不同消息存储额度,可根据消息实时消费和处理情况动态调整主题配额,自适应不同消息场景,从而实现资源的合理利用,可根据各主题实施配额情况自上而下分配和自下而上征集配额,灵活性更强。
在一些实施例中,图3为本申请实施例提供的消息处理装置的结构示意图,如图3所示,该消息处理装置300除了包括有消息队列单元310和消费单元320之外,还包括有动态流控器件330、动态配额控制器件340和状态刷新器件350。其中,消息队列单元310中包括有若干个消息队列主题,消费单元320中包括有与消息队列主题对应数量的消费者以及一个特别消费者,每一个消费者对应连接一个消息队列主题,特别消费者与各个消费者连接。特别消费者用于进行消息统一归口的发送。
其中,动态流控器件330还包括有流控开关、流控配置单元,动态配额控制器件340还包括有主动消减单元和被动征集单元,状态刷新器件350还包括有状态更新单元和固定触发单元。
状态刷新器件350与动态配额控制器件340、消费单元320、动态流控器件330连接,动态配额控制器件340与消费单元320、动态流控器件330连接,动态流控器件330与消费单元320连接,消息队列单元330与消费单元320连接。
进一步的,在上述实施例的基础上,在一些实施例中,上述方法还包括如下步骤:配置消息队列单元中各个消息队列主题的优先级,不同消息队列主题的优先级不同,不同优先级的消息队列主题的消息存储额度不相同。
在本实施例中,根据上游系统所有消息类型对消息优先级进行归类,消息队列单元根据类别数量创建相应数量的消息队列主题,用于保存消息;对每个消息队列主题指定相应的优先级系数,优先级越高,系数越大。其中,上文提到的动态配额控制器件对消息队列单元中每个消息主题初始化配额,初始化完成后,每个消息主题保存的消息数量不能超过设定的配额。
另外,不同优先级的消息队列主题,对应的消费者拉取的消息量也不相同,例如现在有3个消息队列主题,消息队列主题1优先级最高,优先级系数为2;消息队列主题2优先级较高,优先级系数为1,消息队列主题3优先级最低,优先级系数为0。假设特别消费者每次拉取50条消息,则按照优先级高低分别设置消息队列主题1配额为30,消息队列主题2配额为15,消息队列主题3配额为5,对应消息队列主题的消费者按此数量进行消费。
示例性的,图4为本申请实施例提供的消息处理装置工作流程示意图,如图4所示,其包括有如下步骤:步骤S401,消息队列单元创建多个消息队列主题,并配置相应的优先级。步骤S402,消费单元中的多个消费者从对应的消息队列主题中拉取消息。步骤S403,特别消费者聚合多个消费者的消息,统一进行消息归口发送。
其中,消息队列单元包含多个消息队列主题,分别对应不同类型的短信消息,上游系统根据业务规则将消息发送至不同消息队列主题中进行排队,针对短消息场景,一种类型的短信对应一个产品代码。多种产品代码短信可能具有相同或相近的优先级,此时它们所处的消息队列主题相同,会被同一个消费者消费。主题优先级提前设定,例如所处消息队列主题1的消息优先级最高,所处消息队列主题n的消息优先级最低,消息队列主题的优先级设置固定后不再修改。消费单元包含多个消费者进程,一个消费者进程固定消费一个消息队列主题的消息,如果某一个消息队列主题无消息堆积,对应的消费者进程处于空闲等待状态。特别消费者聚合多个不同优先级消费者消费的消息,进行统一归口发送。
本申请实施通过设置不同配额,不同优先级消息处于不同消息主题中存储,高优先级的消息可以提前消费,可以真正实现消息“插队”效果,使得高优先级的消息可以优先发送出去。
在上述实施例的基础上,在另一些实施例中,上述步骤S201中“动态配置各个消息队列主题的消息存储额度”,具体可以通过如下步骤实现:确定各个主题的消息存储额度和消费单元中各个消费者向对应的消息队列单元拉取消息时的消息拉取量;根据消息存储额度和拉取量,动态配置各个消息队列主题的消息存储额度。
在本实施例中,动态配额控制器件对消息队列单元中每个消息队列主题初始化配额(即初始化消息存储额度),初始化完成后,每个消息队列主题保存的消息数量不能超过设定的配额。另外,根据消息队列主题中消息堆积及消息消费情况,动态配额控制器件可动态调整每一个消息队列主题配额设置量(即消息存储额度)。
本申请实施例通过动态配额控制器件调整每个消息队列主题的消息存储额度,自适应不同消息场景,避免消费者频繁从消息队列主题拉取小批量消息,从而实现资源的合理利用。
进一步的,在另一些实施例中,上述步骤“根据消息存储数量和拉取量,动态配置各个消息队列主题的消息存储额度”,具体可以通过如下步骤实现:确定各个消息队列主题中是否存在有第一目标消息队列主题或第二目标消息队列主题,第一目标消息队列主题的消息存储数量与拉取量的差值大于第一预设阈值,第二目标消息队列主题的消息存储数量与拉取量的差值小于第二预设阈值;在存在第一目标消息队列主题时,提升第一目标消息队列主题的消息存储额度;在存在第二目标消息队列主题时,降低第二目标消息队列主题的消息存储额度。
在本实施例中,可以将所有消息队列主题的总消息存储额度视为一个固定值,当其中一个消息队列主题的消息存储额度需要调整时,则可以将其消息存储额度分配给其它消息队列主题或者从其他消息队列主题获取消息存储额度。
示例性的,以消息队列主题F1、消息队列主题F2和消息队列主题F3为例,其优先级大小依次为消息队列主题F1大于消息队列主题F2,消息队列主题F2大于消息队列主题F3。消息队列主题F1当前的消息存储额度为FE1,当上游系统突发大量消息,造成消息队列主题F1中的消息出现堆积时,则可以将消息队列主题F1的消息存储额度调大。具体可以从消息队列主题F2和消息队列主题F3借调部分消息存储额度,例如先从消息队列主题F3借调消息存储额度K1,如果消息队列主题F1在借调之后的消息存储额度(FE1+K1)依然无法解决消息堆积的情况,则再从消息队列主题F2节点消息存储额度。
本申请实施例通过动态的配置每个消息队列主题的消息存储数量,可以在保证总消息存储额度不变的情况下,实现消息的快速发送,避免消息出现堆积,提高消息发送效率。
进一步的,在上述实施例的基础上,在另一些实施例中,上述步骤“提升目标消费者对应的消息队列主题的消息存储额度”,具体可以通过如下步骤实现:确定第一目标消息队列主题的优先级和最低消息队列主题,最低消息队列主题的优先级为所有消息队列主题中优先级最低的;从最低消息队列主题的消息存储额度中分配出目标额度至第一目标消息队列主题。
在本实施例中,当高优先级的消息队列主题分配多余的消息存储额度给其它的消息队列主题,造成自身的消息存储额度较小后,若一段时间内上游系统消息量激增,此时高优先级的消息队列主题的消息存储额度已经不满足容量要求,需要向最低一级优先级主题征集多余的配额,如果最低一级优先级主题不满足,继续向上征集,以满足要求。
示例性的,以消息队列主题F1、消息队列主题F2和消息队列主题F3为例,其优先级大小依次为消息队列主题F1大于消息队列主题F2,消息队列主题F2大于消息队列主题F3。当消息队列主题F1当前的消息存储额度FE1不满足当前需求,需要更多的消息存储额度时,则优先从优先级最低的消息队列主题F3征集消息存储额度(例如征集的消息存储额度为α),此时消息队列主题F1的消息存储额度变为(FE1+α),如果消息队列主题F1的消息存储额度变为(FE1+α)还不满足当前需求,则继续向消息队列主题F2征集消息存储额度。
本申请实施例通过提高消息队列主题的消息存储额度,在上游系统出现消息突发时,能够及时的调整消息队列主题带消息存储额度,避免消息由于存储额度不足导致存储失败的情况,保障消息处理的可靠性。
进一步的,在上述实施例的基础上,在另一些实施例中,上述步骤“降低消息队列主题的消息存储额度”,具体可以通过如下步骤实现:确定第二目标消息队列主题的优先级和下一消息队列主题,下一消息队列主题的优先级低于第二目标消息队列主题的优先级;从第二目标消息队列主题的消息存储额度中分配出目标额度至下一消息队列主题。
在本实施例中,当某一个消息队列主题的消息存储额度过高,需要分配一定数量的消息存储额度出去时,可由高优先级向次低一级优先级分配,当次低一级优先级的消息队列主题暂不需要多余配额时,可继续向下分配,直至找到满足条件的消息队列主题。特殊情况下最高优先级的消息队列主题的消息存储额度可分配至最低优先级的消息队列主题上。
示例性的,以消息队列主题F1、消息队列主题F2和消息队列主题F3为例,其优先级大小依次为消息队列主题F1大于消息队列主题F2,消息队列主题F2大于消息队列主题F3。当消息队列主题F1的消息存储额度FE1过大,需要分配K(K小于FE1)个数量的消息存储额度至其他消息队列主题时,则依次有限分配给消息队列主题F2,若消息队列主题F2不需要多余的额度,则再分给消息队列主题F3。
另外,在本实施例中,当高优先级的消息队列主题分配多余配额后,若一段时间内上游系统消息量激增,此时高优先级的消息队列主题的当前消息存储额度已经不满足容量要求,则优先向最低一级优先级的消息队列主题征集多余消息存储额度,如果最低一级优先级消息队列主题不满足,继续向上一级优先级的消息队列主题征集,以满足要求。
本申请通过降低息队列主题的消息存储额度,能够为其他消息队列主题分配更多的消息存储额度,提高消息存储的灵活性,避免其他消息队列主题由于消息存储额度的限制,造成消息无法及时存储的情况。
在一些实施例中,上述方法还可以包括如下步骤:确定每个消费者向对应的消息队列主题拉取消息时消息拉取量和消息队列主题当前的消息存储额度的大小关系,消息存储额度处于预设上限值和预设下限值之间;若消息拉取量大于或等于消息存储额度,则将消息队列主题的状态设置为忙碌状态;若消息拉取量大于下限值,小于消息存储额度,则将消息队列主题的状态设置为半忙碌状态;若消息拉取量小于或等于下限值,则将消息队列主题的状态设置为空闲状态;根据每个消息队列主题的状态,动态配置各个消息队列主题的消息存储额度。
在本实施例中,在动态调整每个消息队列主题的消息存储额度时,动态配额需要设置上下限,初始化根据业务规则需要给每个优先级的消息队列主题配置“上限值”、“下限值”。每个优先级的消息队列主题的消息存储额度在上下限范围内浮动,不能超出这个范围。
其中,每个优先级的消息队列主题需要设置一个处理状态,当消费者的消息拉取量=当前消息存储额度时,对应的消息队列主题处于“忙绿”状态;当预设下限值<消息拉取量<预设上限值,对应的消息队列主题处于“半忙碌”状态;如果拉取量到达预设上限值或以下,对应的消息队列主题处于“空闲”状态。
示例性的,图5为本申请实施例提供的状态设置流程示意图,如图5所示,该方法包括如下步骤:步骤S501,根据业务规则设置每个消息队列主题的上限值和下限值。步骤S502,判断拉取量是否大于或等于当前的消息存储额度。步骤S503,设置此消息队列主题为忙碌状态。步骤S504,判断消息拉取量是否小于当前的消息存储额度且大于下限值。步骤S505,设置此消息队列主题为半忙碌状态。步骤S506,设置此消息队列主题为空闲状态。
本申请实施例通过设置每个消息队列主题的状态,能够实时检测每个消息队列主题的消息存储额度是否需要变更,保证对每个消息队列主题的动态配额的及时性。
示例性的,图6为本申请实施例提供的存储额度削减的流程示意图,如图6所示,其包括如下步骤:步骤S601,消息拉取量是否小于当前的消息存储额度。步骤S602,当前的消息存储额度与拉取量的差值向优先级次一级的消息队列主题分配。步骤S603,优先级次一级的消息队列主题是否到达上限值限制。步骤S604,受配额的消息队列主题是否处于忙碌状态。步骤S605,向下一级优先级的消息队列主题分配,直至与最低优先级的消息队列主题。
在本实施例中,对于拉取量不足当前的消息存储额度的消息队列主题,降低自身的存储配额,将当前的消息存储额度与拉取量的差值作为可用配额分配,仅向次一级优先级分配容量,如果次一级容量到达“上限”限制,则多余容量继续向下一级分配,受配额的消息队列主题需要处于“忙碌”状态,如果所有消息队列主题均不处于“忙碌”状态,那么配额最终会聚集到最低优先级的消息队列主题,最低优先级的消息队列主题不做“上限”限制。
示例性的,图7为本申请实施例提供的存储额度征集的流程示意图,如图7所示,其包括如下步骤:步骤S701,计算待补充额度。步骤S702,一杯当前拉取量是否大于该消息队列主题的上限值。步骤S703,将待补充额度赋值为拉取量。步骤S704,将待补充额度赋值为上限值与当前的消息存储额度的差值。步骤S705,向最低优先级的消息队列主题征集额度。步骤S706,低优先级的消息队列主题是否存在多余额度。步骤S707,向最低优先级的上一优先级的消息队列主题征集额度。
在本实施例中,对于特定消息队列主题无消息堆积而后因为消息生产导致堆积的情况,那么之前被削减额度的消息队列主题需要补充额度。如果拉取量>=动态调整后的消息存储额度,则增加额度,增加的额度需要从其他优先级的消息队列主题征集,征集策略为优先从最低优先级的消息队列主题征集额度需求量,需要计算当前最低优先级的额度可分配量,如果当前可分配量低于需求量,则剩余部分递归从高一级优先级的消息队列主题继续征集,直到达到需求量。被征集的消息队列主题必须处于“空闲”状态,最低优先级征集容量不受“忙碌”状态限制,征集额度大小除了受当前最低优先级的消息队列主题的“上限”限制外,还受其余优先级的消息队列主题所能提供的可用配额限制,可用配额大小等于所有处于“忙碌”状态的消息队列主题的可分配量,由此保持动态配额的总量状态一致。
在一些实施例中,上述方法还包括如下步骤:响应于动态配额和流控请求,获取每个消息队列主题当前的消息存储额度与预设基准额度的比例;根据比例和预设总流控速率,配置各个消息队列主题的流控速率。
在本实施例中,动态流控器件在给定的总流控速率下,各消息队列主题的处理速率动态分配,当某一消息队列主题不存在消息堆积时,其速率动态分配给其他消息队列主题使用。动态流控的实现依赖于动态配额,各消息队列主题拉取消息同步,也即各消息队列主题的处理时间一致,通过对配额的控制实现对流控速率的控制。具体的,在开启动态配额控制器件和流控开关单元的前提下,流控配置单元每次更新配额完成后,通过计算各消息队列主题当前配额与基准配额的比例,根据此比例,就可以计算在给定的总流控速率下,各个消息队列主题的流控速率,动态配额和动态流控使用相同比例,可以保证对于特定消息队列主题,本批次的消息处理时间在动态调配前后是一致的。
示例性的,图8为本申请实施例图的动态流控器件的工作流程示意图,如图8所示,其包括如下步骤:步骤S801,是否开启流控开关及动态配额。步骤S802,计算各消息队列主题当前配额和基准配额的比例。步骤S803,计算总流控速率。步骤S804,根据配额比例和总流控速率计算各消息队列主题的流控速率。
本申请实施例通过动态配额控制器件可以实现对各个消息队列单元的处理速率进行动态分配,实现优先级高的消息能够处理发送的效果。
图9为本申请实施例提供的状态刷新器件的工作流程示意图,如图9所示,其包括如下步骤:步骤S901,收集各个消息队列主题的数据,包括初始消息存储额度,当前的消息存储额度、上限值、下限值和状态等。步骤S902,固定触发单元是否满足触发条件。步骤S903,轮询等待。步骤S904,更新各消息队列主题的状态,并实施动态配额和动态流控。
在本实施例中,状态更新单元用于收集数据,包括初始消息存储额度,当前的消息存储额度、上限值、下限值和状态等。各个消息队列主题对应的消费者的每次拉取量作为元数据写入状态更新单元,状态更新单元更新消息队列主题状态。固定触发单元在给定时间间隔内通过状态更新单元更新各消息队列主题状态,触发动态配额和动态流控。固定触发单元时间间隔会影响动态配额和动态流控的实时性,可根据实际情况酌情设定。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图10为本申请实施例提供的消息处理装置的结构示意图,如图10所示,该消息处理装置1000具体可以包括额度配置模块1010和消息传输模块1020。其中,额度配置模块1010用于在消费单元中的消费者向消息队列单元中对应的消息队列主题拉取消息时,动态配置各个消息队列主题的消息存储额度,消息队列主题中存储有上游系统发送的待传输消息,消息队列单元包括有至少一个消息队列主题,每个消息队列主题对应有至少一个消费者,消费单元包括有至少一个消费者。消息传输模块1020用于将存储的待传输消息传输至对应的消费者。
可选的,上述消息处理装置还包括:优先级配置模块,用于配置消息队列单元中各个消息队列主题的优先级,不同消息队列主题的优先级不同,不同优先级的消息队列主题的消息存储额度不相同。
可选的,额度配置模块具体可以用于:确定各个主题的消息存储额度和消费单元中各个消费者向对应的消息队列单元拉取消息时的消息拉取量;根据消息存储额度和拉取量,动态配置各个消息队列主题的消息存储额度。
可选的,额度配置模块具体可以用于:确定各个消息队列主题中是否存在有第一目标消息队列主题或第二目标消息队列主题,第一目标消息队列主题的消息存储数量与拉取量的差值大于第一预设阈值,第二目标消息队列主题的消息存储数量与拉取量的差值小于第二预设阈值;在存在第一目标消息队列主题时,提升第一目标消息队列主题的消息存储额度;在存在第二目标消息队列主题时,降低第二目标消息队列主题的消息存储额度。
可选的,额度配置模块具体可以用于:确定第一目标消息队列主题的优先级和最低消息队列主题,最低消息队列主题的优先级为所有消息队列主题中优先级最低的;从最低消息队列主题的消息存储额度中分配出目标额度至第一目标消息队列主题。
可选的,额度配置模块具体可以用于:确定第二目标消息队列主题的优先级和下一消息队列主题,下一消息队列主题的优先级低于第二目标消息队列主题的优先级;从第二目标消息队列主题的消息存储额度中分配出目标额度至下一消息队列主题。
可选的,还包括状态配置模块,用于确定每个消费者向对应的消息队列主题拉取消息时消息拉取量和消息队列主题当前的消息存储额度的大小关系,消息存储额度处于预设上限值和预设下限值之间;若消息拉取量大于或等于消息存储额度,则将消息队列主题的状态设置为忙碌状态;若消息拉取量大于下限值,小于消息存储额度,则将消息队列主题的状态设置为半忙碌状态;若消息拉取量小于或等于下限值,则将消息队列主题的状态设置为空闲状态;根据每个消息队列主题的状态,动态配置各个消息队列主题的消息存储额度。
可选的,还包括流速配置模块,用于:响应于动态配额和流控请求,获取每个消息队列主题当前的消息存储额度与预设基准额度的比例;根据比例和预设总流控速率,配置各个消息队列主题的流控速率。
本申请实施例提供的装置,可用于执行上述实施例中的方法,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,额度配置模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上额度配置模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
示例性的,具体参考上述图3,本申请提供一种消息处理设备,包括:消息处理器件和分别与消息处理器件连接的动态流控器件、动态配额控制器件和状态刷新器件,状态刷新器件与动态配额控制器件连接,动态配额控制器件与动态流控器件连接;消息处理器件包括有消息队列单元和消费单元,消息队列单元与消费单元连接;消息队列单元用于根据上游系统发送的待传输消息,创建不同优先级的消息队列主题,每个消息队列主题用于存储对应类型的待传输消息;消费单元包括有特别消费者和与消息队列主题对应的消费者,每个消费者用于向对应的消息队列主题拉取消息并发送至特别消费者,特别消费者用于进行消息的统一发送;动态配额控制器件用于对每个消息队列主题初始化配额,并根据消息队列主题中消息堆积状况和消费者的消息消费状况,动态调整每一个消息队列主题配额;动态流控器件用于在预设总流控速率下,动态配置各消息队列主题的处理速率;状态刷新器件用于从消息队列单元中获取每个消息队列主题的状态信息,并发送至动态动态配额控制器件。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中,a,b,c可以是单个,也可以是多个。
可以理解的是,在本申请实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种消息处理方法,其特征在于,应用于消息处理装置,所述消息处理装置至少包括有消息队列单元和消费单元,所述方法包括:
在所述消费单元中的消费者向所述消息队列单元中对应的消息队列主题拉取消息时,动态配置各个消息队列主题的消息存储额度,所述消息队列主题中存储有上游系统发送的待传输消息,所述消息队列单元包括有至少一个消息队列主题,每个消息队列主题对应有至少一个消费者,所述消费单元包括有至少一个消费者;
将存储的待传输消息传输至对应的消费者。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
配置所述消息队列单元中各个消息队列主题的优先级,不同消息队列主题的优先级不同,不同优先级的消息队列主题的消息存储额度不相同。
3.根据权利要求2所述的方法,其特征在于,所述动态配置各个消息队列主题的消息存储额度,包括:
确定各个主题的消息存储额度和所述消费单元中各个消费者向对应的消息队列单元拉取消息时的消息拉取量;
根据所述消息存储额度和拉取量,动态配置各个消息队列主题的消息存储额度。
4.根据权利要求3所述的方法,其特征在于,所述根据所述消息存储数量和拉取量,动态配置各个消息队列主题的消息存储额度,包括:
确定各个消息队列主题中是否存在有第一目标消息队列主题或第二目标消息队列主题,所述第一目标消息队列主题的消息存储数量与所述拉取量的差值大于第一预设阈值,所述第二目标消息队列主题的消息存储数量与所述拉取量的差值小于第二预设阈值;
在存在所述第一目标消息队列主题时,提升所述第一目标消息队列主题的消息存储额度;
在存在所述第二目标消息队列主题时,降低所述第二目标消息队列主题的消息存储额度。
5.根据权利要求4所述的方法,其特征在于,所述提升所述第一目标消息队列主题的消息存储额度,包括:
确定所述第一目标消息队列主题的优先级和最低消息队列主题,所述最低消息队列主题的优先级为所有消息队列主题中优先级最低的;
从所述最低消息队列主题的消息存储额度中分配出目标额度至所述第一目标消息队列主题。
6.根据权利要求4所述的方法,其特征在于,所述降低所述第二目标消息队列主题的消息存储额度,包括:
确定所述第二目标消息队列主题的优先级和下一消息队列主题,所述下一消息队列主题的优先级低于所述第二目标消息队列主题的优先级;
从所述第二目标消息队列主题的消息存储额度中分配出目标额度至所述下一消息队列主题。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
确定每个消费者向对应的消息队列主题拉取消息时消息拉取量和所述消息队列主题当前的消息存储额度的大小关系,所述消息存储额度处于预设上限值和预设下限值之间;
若所述消息拉取量大于或等于所述消息存储额度,则将所述消息队列主题的状态设置为忙碌状态;
若所述消息拉取量大于所述下限值,小于所述消息存储额度,则将所述消息队列主题的状态设置为半忙碌状态;
若所述消息拉取量小于或等于所述下限值,则将所述消息队列主题的状态设置为空闲状态;
根据每个消息队列主题的状态,动态配置各个消息队列主题的消息存储额度。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于动态配额和流控请求,获取每个消息队列主题当前的消息存储额度与预设基准额度的比例;
根据所述比例和预设总流控速率,配置各个消息队列主题的流控速率。
9.一种消息处理装置,其特征在于,包括:
额度配置模块,用于在消费单元中的消费者向消息队列单元中对应的消息队列主题拉取消息时,动态配置各个消息队列主题的消息存储额度,所述消息队列主题中存储有上游系统发送的待传输消息,所述消息队列单元包括有至少一个消息队列主题,每个消息队列主题对应有至少一个消费者,所述消费单元包括有至少一个消费者;
消息传输模块,用于将存储的待传输消息传输至对应的消费者。
10.一种消息处理设备,其特征在于,包括:消息处理器件和分别与所述消息处理器件连接的动态流控器件、动态配额控制器件和状态刷新器件,所述状态刷新器件与所述动态配额控制器件连接,所述动态配额控制器件与所述动态流控器件连接;
所述消息处理器件包括有消息队列单元和消费单元,所述消息队列单元与所述消费单元连接;
所述消息队列单元用于根据上游系统发送的待传输消息,创建不同优先级的消息队列主题,每个消息队列主题用于存储对应类型的待传输消息;
所述消费单元包括有特别消费者和与所述消息队列主题对应的消费者,每个消费者用于向对应的消息队列主题拉取消息并发送至所述特别消费者,所述特别消费者用于进行消息的统一发送;
所述动态配额控制器件用于对每个消息队列主题初始化配额,并根据消息队列主题中消息堆积状况和消费者的消息消费状况,动态调整每一个消息队列主题配额;
所述动态流控器件用于在预设总流控速率下,动态配置各消息队列主题的处理速率;
所述状态刷新器件用于从消息队列单元中获取每个消息队列主题的状态信息,并发送至所述动态动态配额控制器件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211202089.0A CN115550284A (zh) | 2022-09-29 | 2022-09-29 | 消息处理方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211202089.0A CN115550284A (zh) | 2022-09-29 | 2022-09-29 | 消息处理方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115550284A true CN115550284A (zh) | 2022-12-30 |
Family
ID=84731753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211202089.0A Pending CN115550284A (zh) | 2022-09-29 | 2022-09-29 | 消息处理方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115550284A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719630A (zh) * | 2023-08-11 | 2023-09-08 | 中邮消费金融有限公司 | 案件调度方法、设备、存储介质及装置 |
-
2022
- 2022-09-29 CN CN202211202089.0A patent/CN115550284A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719630A (zh) * | 2023-08-11 | 2023-09-08 | 中邮消费金融有限公司 | 案件调度方法、设备、存储介质及装置 |
CN116719630B (zh) * | 2023-08-11 | 2024-03-15 | 中邮消费金融有限公司 | 案件调度方法、设备、存储介质及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12073265B2 (en) | Event handling in distributed event handling systems | |
CN109032801B (zh) | 一种请求调度方法、系统及电子设备和存储介质 | |
CN110753131A (zh) | 微服务分布式限流方法及装置、存储介质和电子设备 | |
US20050055694A1 (en) | Dynamic load balancing resource allocation | |
CN113448743B (zh) | 用于任务处理的方法、电子设备以及计算机程序产品 | |
CN108776934A (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
CN109766172B (zh) | 一种异步任务调度方法以及装置 | |
CN114448989B (zh) | 调整消息分发的方法、装置、电子设备、存储介质及产品 | |
CN109032800A (zh) | 一种负载均衡调度方法、负载均衡器、服务器及系统 | |
CN112749002A (zh) | 一种集群资源动态管理的方法和装置 | |
CN115550284A (zh) | 消息处理方法、装置和设备 | |
CN114500546B (zh) | 基于负载均衡集群的通信消息发送方法、装置及设备 | |
CN109783236B (zh) | 用于输出信息的方法和装置 | |
CN112887407B (zh) | 用于分布式集群的作业流量控制方法和装置 | |
CN116414534A (zh) | 任务调度方法、装置、集成电路、网络设备及存储介质 | |
CN113347238A (zh) | 基于区块链的消息分区方法及系统、设备、存储介质 | |
CN115766582A (zh) | 流量控制方法、装置和系统、介质和计算机设备 | |
CN117032977A (zh) | 混部应用资源分配方法、装置、计算机设备及存储介质 | |
CN114489978A (zh) | 资源调度方法、装置、设备及存储介质 | |
CN113672347A (zh) | 一种容器组调度方法及装置 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
CN115328640B (zh) | 一种任务调度方法、装置、系统及计算机可读存储介质 | |
CN117176672B (zh) | 消息队列资源确定方法、装置及资源智能调度系统 | |
CN115834712B (zh) | 一种面向连接型业务的网关资源调度方法 | |
CN112559142B (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 |