消息队列的消息调度方法及消息调度装置的制造方法

文档序号:9551119阅读:515来源:国知局
消息队列的消息调度方法及消息调度装置的制造方法
【技术领域】
[0001]本发明涉及消息队列,更为具体而言,涉及一种消息队列的消息调度方法及消息调度装置。
【背景技术】
[0002]随着业务量的增加和业务场景的多样化,现有应用服务器部署的应用日渐庞大和难以维护,为简化系统架构和提高处理效率,消息队列的处理方法得到普遍的应用。在维护的消息队列机制中,当用户发起请求时响应线程根据业务场景的需要产生并投递消息至队列,处理线程从队列中提取消息并进行下一步业务处理,从而实现业务服务层的解耦。对队列调度的控制,可实现消息之间的排序和缓冲,提供线程之间异步通信和处理的机制,从而成为应用层中不可或缺的中间件层。
[0003]由于消息队列及其调度控制方法是组建高性能高扩展性系统的关键,高效可靠的消息队列机制在一定程度上决定了系统的响应时间和吞吐率。现有消息队列机制普遍为单队列单线程处理,或者横向扩展后的多队列多线程处理。而由于在消息队列的消息调度方法中,通常采用轮询和先进先出,并根据投递时间的顺序进行处理,因此,各个队列被平等对待,紧急消息无法得到优先处理,系统资源也无法得到充分利用。

【发明内容】

[0004]鉴于现有技术的上述缺陷,本发明实施方式提供了一种消息队列的消息调度方法及消息调度装置,其通过改变消息投递和消息调度方式,能够实现系统资源(例如,数据处理能力、数据读取能力等)的合理配置,保证系统效率。
[0005]具体地,本发明实施方式提供了一种消息队列的消息调度方法,其包括:
[0006]根据消息的业务类型将消息投递至多条消息队列中与所述消息的业务类型对应的消息队列,其中,所述多条消息队列中的各消息队列对应相应的业务类型;
[0007]在调度消息时,根据所述多条消息队列中各消息队列的关键特征值计算确定所述多条消息队列中的目标消息队列,然后从所述目标消息队列中调度用于进行后继处理的消息。
[0008]相应地,本发明实施方式还提供了一种消息队列的消息调度装置,其包括:
[0009]消息投递模块,用于根据消息的业务类型将消息投递至多条消息队列中与所述消息的业务类型对应的消息队列,其中,所述多条消息队列中的各消息队列对应相应的业务类型;
[0010]消息调度模块,用于在调度消息时,根据所述多条消息队列中各消息队列的关键特征值计算确定所述多条消息队列中的目标消息队列,并从所述目标消息队列中调度用于进行后继处理的消息。
[0011]采用本发明各种实施例具有下述有益效果:
[0012]通过分业务类型的消息投递以及通过消息队列的关键特征值确定从哪个消息队列调度消息,能够综合消息队列的关键特征进行消息调度,实现系统资源(例如,数据处理能力、数据读取能力等)的合理配置,提高系统效率(包括响应时间和吞吐率)并实现业务价值的最大化。
【附图说明】
[0013]图1是根据本发明实施方式的一种消息队列的消息调度方法的流程示意图;
[0014]图2A是根据本发明实施例的一种消息队列的消息调度装置的框图的一例;
[0015]图2B是图2A所示消息调度装置的消息调度模块的框图的一例;
[0016]图2C是根据本发明实施例的一种消息队列的消息调度装置的框图的另一例。
【具体实施方式】
[0017]为了便于理解本发明技术方案的各个方面、特征以及优点,下面结合附图对本发明进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。
[0018]图1是根据本发明实施方式的一种消息队列的消息调度方法的流程示意图。参照图1,所述方法包括:
[0019]10:消息投递处理。具体而言,根据消息的业务类型将消息投递至多条消息队列中与所述消息的业务类型对应的消息队列。其中,所述多条消息队列中的各消息队列对应相应的业务类型。
[0020]在本实施例中,业务类型的划分与本方法实施例所适用的场景相关联。举例而言,当将本发明应用于电子商务平台时,根据电商的服务流程,可以将业务类型大体划分为商品浏览业务、下单支付业务和日志处理业务。本发明对在具体场景下业务类型的划分不做具体限制。
[0021]12:消息调度处理。具体而言,在调度消息时,根据所述多条消息队列中各消息队列的关键特征值计算确定所述多条消息队列中的目标消息队列,然后从所述目标消息队列中调度用于进行后继处理的消息。
[0022]采用本实施例提供的方法,通过分业务类型的消息投递以及通过消息队列的关键特征值确定从哪个消息队列调度消息,能够综合消息队列的关键特征进行消息调度,实现系统资源(例如,数据处理能力、数据读取能力等)的合理配置,提高系统效率(包括响应时间和吞吐率)并实现业务价值的最大化。
[0023]可选地,在本实施例的一种实现方式中,所述多条消息队列中各消息队列的关键特征值包括:各消息队列中的消息数量(下文采用η表示)、各消息队列的使用率(下文采用Ρ表示,消息队列的使用率用于表示消息队列的实际忙碌程度,例如假设消息队列长度为100,占用数为50,则使用率为50% )以及预设的各消息队列的权重(下文采用w表示)。其中,预设的各消息队列的权重用于反应各消息队列所对应的业务类型的业务价值,换言之,可以根据各消息队列所对应的业务类型的业务价值为各消息队列设置权重,而业务类型的业务价值可以由相关人员根据经验确定,此处不对其具体值进行限制。
[0024]进一步可选地,在处理12中通过以下方式确定目标消息队列:首先,根据公式S =wXnXp (即,求三者的乘积)计算各消息队列的运行指标,其中,S表示运行指标;然后,从所述多条消息队列中选取S最高的消息队列作为所述目标消息队列。
[0025]采用本实现方式所达到的有益效果可以通过与现有技术的对比而变得更加明显。现有技术中为了解决消息队列优先级的问题,必须维护多个队列和线程,不同队列具有不同的优先级,由投递线程根据消息处理情况将消息投递至不同队列。这种方法需要维护多套彼此独立的消息队列,对应用服务器的线程池和应用资源的耗费都成倍增加,并且投递线程需要区分消息的优先级进行投递,缺乏灵活性。而系统耦合性的加剧也不利于业务扩展,各消息队列之间互相独立,存在部分队列空闲或紧张的情况,无法合理分配系统资源。
[0026]也就是说,现有的消息队列的调度方法在业务优先级处理、系统性能和灵活性等方面存在不可调和的矛盾。而在本实现方式中,首先根据消息的业务类型将消息投递至相应的消息队列,然后从各消息队列的业务价值(通过η反映)、业务量(通过η反应)和系统处理率(通过Ρ反映)三者的角度出发,将多个消息队列的关键特征值提取并加权融合使得各消息队列并不相互独立,之后根据加权融合得到的运行指标判断消息队列的优先级(即,确定优先级最高的为目标消息队列),进而提取消息进行处理。这样的处理方式相对于前述的现有技术能够在兼顾系统效率的同时更大程度或最大程度的实现消息调度的合理化,实现系统资源的合理配置。
[0027]可选地,在本实施例的一种实现方式中,如图1中的虚线框所示,所述方法还包括:处理14:消息发送及后继处理。具体而言,通过负载均衡将调度的消息发送至业务逻辑线程,由所述业务逻辑线程执行所述后继处理。其中,业务逻辑线程的数量可以根据系统资源和整体业务访问量动态配置。并且,业务逻辑线程可以根据现有的业务逻辑来处理接收到的消息请求并返回响应。
[0028]以上结合附图对根据本发明实施例的一种方法实施例进行说明,下面示例性的对采用本发明实施例的一种应用场景进行说明。
[0029]在电子商务平台,通常对用户提供网上浏览商品、下单、网上支付的全流程服务。系统基于分层次的架构,各服务组件之间互相独立并通过消息队列进行关联,业务流程上的流转依赖于消息队列的响应和处理。
[0030]根据对电子商务平台的分析发现,不同业务场景的紧迫程度各不相同,下单支付(Α)、浏览商品详情页⑶、日志处理(C)三种消息请求在队列中平等存储和投递。对电子商务平台和用户而言,不同业务所蕴含的业务价值有显著的区别。例如,下单支付过程中的消息请求涉及到用户的支付金额和与支付平台的结算,系统必须尽快处理;浏览商品详情页相关的消息请求虽然没涉及到支付,但相应速度直接影响到用户体验;而日志处理相关的消息请求只对日常技术维护相关,紧急程度最低;三种消息请求应该按优先级和业务场景合理对待。<
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1