CN105450784A - 向mq中的消息分配消费节点的装置及方法 - Google Patents

向mq中的消息分配消费节点的装置及方法 Download PDF

Info

Publication number
CN105450784A
CN105450784A CN201610037304.4A CN201610037304A CN105450784A CN 105450784 A CN105450784 A CN 105450784A CN 201610037304 A CN201610037304 A CN 201610037304A CN 105450784 A CN105450784 A CN 105450784A
Authority
CN
China
Prior art keywords
message
node
consumption
messages
type
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
Application number
CN201610037304.4A
Other languages
English (en)
Other versions
CN105450784B (zh
Inventor
李中林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Jianfu Chain Management Co ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201610037304.4A priority Critical patent/CN105450784B/zh
Publication of CN105450784A publication Critical patent/CN105450784A/zh
Application granted granted Critical
Publication of CN105450784B publication Critical patent/CN105450784B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Operations Research (AREA)
  • Physics & Mathematics (AREA)
  • Educational Administration (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Game Theory and Decision Science (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

公开了用于向消息队列(MQ)中的消息分配消费端系统中的消费节点的装置及方法。根据实施例,该装置可以包括监控子系统和分配子系统。监控子系统可以配置为:监控MQ中各类消息的积存度量以及消费端系统中各消费节点的处理压力度量;及当某一类消息的积存度量超过第一阈值时,为该类消息分配一新的消费节点;和/或当某一消费节点的处理压力度量超过第二阈值时,为该消费节点中积存度量最大的一类消息分配一新的消费节点。分配子系统可以配置为根据监控子系统的分配结果,更新各消费节点的订阅信息。

Description

向MQ中的消息分配消费节点的装置及方法
技术领域
本公开涉及消息处理,更具体地,涉及用于向消息队列(MQ)中的消息分配消费端系统中的消费节点的装置及方法。
背景技术
随着大数据时代的到来,越来越多项目和系统产生出海量的业务数据,例如电子商务平台中产生的下单、支付、到货、优惠券到账等等数据,其中单种类型的数据量每日可达到千万级。随着业务量的增加以及业务的扩展,不同的业务应用系统可能对这些数据进行不同的挖掘处理。数据从生产采集系统端到业务应用系统端的处理过程,实际上是一种消费-生产者模型的异步数据处理过程。而消息队列(MessageQueue,缩写为MQ)是消费-生产者模型的一个典型代表,其适用于任何需要进行网络通信的系统,它负责建立起网络通信的通道,进行数据和文件的发送。进一步而言,MQ是一种应用程序对应用程序的通信方法,具体而言是应用程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。换而言之,一端往消息队列中不断的写入消息,而另一端则通过读取或者订阅队列中的消息来进行消息的处理。目前成熟的MQ消息中间件有activeMQ、WebSphereMQ、京东JMQ等。
生产环境中生产和采集到的海量数据在多个不同的系统之间采用MQ消息中间件处理机制进行共享处理,为跨部门、企业范围的集成提供了可靠的基础,同时也避免了各系统间的耦合性。但也存在一些问题亟待解决:当生产端产生了大量的消息,而消费端由于服务器计算资源问题处理又不及时,这将导致生产端消息的大量积压,进而产生一系列的问题,如消息积压过久而导致消息过期,或消息队列的容量限制使得部分消息丢失。这在电子商务购物场景中将会出现用户下单成功,却无相应订单消息到达仓储系统的严重后果。
图1示意性示出了根据相关技术的消息系统的方框图。
如图1所示,消息系统100是一种分布式应用系统,包括消息采集系统(生产端)1001、MQ消息中间件服务平台1003以及消息处理系统(消费端)1005。进一步,称一种类型消息的生产者为生产节点(producer),如1011所示;一种类型消息的处理者为消费节点(consumer),如1051所示;消息用M表示,如1031所示。
在实际生产环境中,同一业务系统往往需要对多种MQ消息进行同时处理。由于各MQ消息在不同时间的生成数量是不同的,可能出现消费节点由于某种MQ消息数量过多,需要消耗大量的计算资源,那么同时对其他MQ消息的处理能力就会下降,进而导致消息的积压。
为了尽量降低MQ消息处理积压,现有的解决方案大多在应用系统部署的前期,根据每种消息的最大生产量以及每个消费节点的最大处理量来分配消息的服务器计算资源。但是,这将会导致服务器资源的大量浪费。另外,在应用系统的运营后期,主要采取的有两种方式:1)对积压的消息增加服务器资源,并重新发布应用,这种方式在短时间内能够避免消息的积压;2)清理积压的消息或者关闭消息的写入。
不难看出,现有的解决方案由于人工干预较多,不但使得系统运维成本加大,而且加大了服务器资源的浪费;同时可能导致消息的延迟或不可达。
因此,设计一个高效及时、改善资源利用的消息处理系统是非常重要且必要的。
发明内容
本公开的目的至少部分地在于提供一种向消息队列(MQ)中的消息分配消费端系统中的消费节点的装置及方法,能够高效及时地进行资源分配以使得改善系统资源利用。
根据本公开的一个方面,提供了一种向消息队列(MQ)中的消息分配消费端系统中的消费节点的装置,包括:监控子系统,配置为:监控MQ中各类消息的积存度量以及消费端系统中各消费节点的处理压力度量;及当某一类消息的积存度量超过第一阈值时,为该类消息分配一新的消费节点;和/或当某一消费节点的处理压力度量超过第二阈值时,为该消费节点中积存度量最大的一类消息分配一新的消费节点;以及分配子系统,配置为根据监控子系统的分配结果,更新各消费节点的订阅信息。
根据实施例,MQ中一类消息的积存度量可以按消费该类消息的各消费节点在单位时间段内消费该类消息的平均数量来计算。类似地,某一消费节点的处理压力度量可以按该消费节点在单位时间段内消费的所有消息的数目来计算。
监控子系统可以被配置为:i)判断各类消息的积存度量是否超过第一阈值,如果均未超过第一阈值,则进行下述操作iii),或者如果某一类消息的积存度量超过第一阈值,则对该类消息进行资源预分配操作,所述资源预分配操作包括:查找当前并不消费该类消息的消费节点中处理压力度量最小的消费节点,假设从当前消费该类消息的各消费节点所消费的该类消息中分出一定数量由所查找的消费节点来处理;ii)基于资源预分配操作的结果,重新计算各类消息的积存度量以及各消费节点的处理压力度量;iii)如果某一消费节点的处理压力度量或者通过ii)中的操作重新计算的处理压力度量超过第二阈值,则针对该消费节点中积存度量最大的一类消息,进行上述资源预分配操作;以及iv)重复ii)和iii)的处理,直至各消费节点所分配的各类消息的数目收敛,其中,对于各类消息,向该类消息分配收敛结果中对该类消息的处理数量不为零的消费节点。
分配子系统可以被配置为:针对各消费节点,判断该消费节点是否被分配了新的一类消息,并且如果被分配了新的一类消息,则更新该消费节点的订阅信息。例如,分配子系统可以被配置为按预定的同步时刻,来进行所述判断和更新的操作。更新可以包括:通过MQ的应用编程接口“API”对消费节点上的MQconsumerListener的监听者信息进行更新,其中每一监听者负责监听一类信息。
根据本公开的另一方面,提供了一种向消息队列(MQ)中的消息分配消费端系统中的消费节点的方法,该方法包括:监控MQ中各类消息的积存度量以及消费端系统中各消费节点的处理压力度量;当某一类消息的积存度量超过第一阈值时,为该类消息分配一新的消费节点;和/或当某一消费节点的处理压力度量超过第二阈值时,为该消费节点中积存度量最大的一类消息分配一新的消费节点;以及根据监控子系统的分配结果,更新各消费节点的订阅信息。
根据实施例,可以基于各消费节点对MQ中各类消息的消费频率,来确定消息的积存度量以及消费节点的处理压力度量,其中一消费节点cj对一类消息mi的消费频率αij定义为N/t,其中N是该消费节点cj在预定时间段t内消费的该类消息mi的数目。
例如,可以根据以下公式确定一类消息mi的积存度量λi
λ i = Σ j = 1 n α i j / Σ j = 1 , mc i j ≠ 0 n 1 ,
其中,n是消费端系统中部署的消费节点的数目,j是消费节点的索引且1≤j≤n,mcij表示消费节点cj是否处理该类消息mi,其中当消费节点cj处理该类消息mi时mcij=1,否则mcij=0。
例如,可以根据以下公式确定消费节点cj的处理压力度量βj
β j = Σ i = 1 k α i j ,
其中,k是消费端系统所订阅的MQ中消息的种类数,i是各类消息的索引且1≤i≤k。
分配操作可以包括:
i)判断各类消息的积存度量是否超过第一阈值,如果均未超过第一阈值,则进行下述操作iii),或者如果一类消息mi的积存度量λi超过第一阈值,则对该类消息mi进行资源预分配操作,所述资源预分配操作包括:查找当前并不消费该类消息mi的消费节点中处理压力度量最小的消费节点cj,并进行如下变换:
其中,n是消费端系统中部署的消费节点的数目,j是消费节点的索引且1≤j≤n,k是消费端系统所订阅的MQ中消息的种类数,i是各类消息的索引且1≤i≤k, δ = Σ j = 1 n α 1 j / [ ( Σ j = 1 , mc i j ≠ 0 n 1 + 1 ) · Σ j = 1 , mc i j ≠ 0 n 1 ] , δ ‾ = δ · Σ j = 1 , mc i j ≠ 0 n 1 , 当且仅当mci′j′≠0,mcij表示消费节点cj是否处理该类消息mi,其中当消费节点cj处理该类消息mi时mcij=1,否则mcij=0;
ii)基于变换后的αij,重新计算各类消息的积存度量以及各消费节点的处理压力度量;
iii)如果某一消费节点cj的处理压力度量或者通过ii)中的操作重新计算的处理压力度量超过第二阈值,则针对该消费节点cj中积存度量最大的一类消息mi,进行上述变换;
iv)重复ii)和iii)的处理,直至各αij收敛;以及
v)基于收敛的Ak×n,得到MCk×n=[mcij]k×n
A k × n ⇒ MC k × n ,
其中,mcij=1当且仅当αij>0,mcij=0当且仅当αij=0。
根据本公开的实施例,可以在MQ消息生成量以及消费节点处理能力不断变化的情况下,抑制MQ消息的积压,降低消息到达时间,减少系统运维成本,并提高资源利用率。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据相关技术的消息系统的方框图;
图2示出了根据本公开实施例的消息系统的方框图;
图3示出了根据本公开实施例的监控子系统进行资源分配的流程图;
图4示出了根据本公开实施例的分配子系统更新消费节点订阅信息的流程图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
图2示出了根据本公开实施例的消息系统的方框图。
如图2所示,与图1所示的消息系统类似,根据该实施例的消息系统200包括消息采集系统(生产端)2001、消息队列(MQ)消息中间件服务平台2003以及消息处理系统(消费端)2005。进一步,称一种类型消息的生产者为生产节点(producer),如2011所示;一种类型消息的处理者为消费节点(consumer),如2051所示;消息用M表示,如2031所示。根据本公开的实施例,MQ消息中间件服务平台2003可以具有按消息类型垂直划分的发布订阅管理功能,并可支持多组MQ消费服务器的负载均衡。
此外,消息系统200还包括用于向MQ中的消息2031分配消费端系统2005中的消费节点2051的装置2007。在此,该装置2007可以基于反馈机制来进行自动分配。该装置2007可以包括监控子系统2071和分配子系统2073。监控子系统2071可以负责MQ消息2031以及消费节点2051的监控体系,分配子系统2073可以根据监控子系统2071的监控结果来调整各消息2031的消费节点处理数。以下,将分别对监控子系统2071和分配子系统2073进行详细描述。
设定
在具体描述之前,首先说明一些基本设定。
在此,设定消费端系统2005的计算资源能够满足所订阅MQ消息的处理。也即,当出现消息积压等问题时,可能是由于计算资源分配不合理而造成的。
此外,在实际生产环境中,由于MQ消息的生产端系统2001和消费端系统2005是分布在不同的网络中,并且MQ消息的具体来源对消费端系统2005具有透明的特点。换而言之,消费端系统2005只需要根据业务需求到MQ消息中间件服务平台2003进行相应的订阅。在实际应用系统中,一个生产节点2011可生产多种类型的消息,一个消费节点2051也可以消费处理多种类型的消息。在此假设:消费端系统2005订阅了k类MQ消息,用向量为M=(m1,m2,...mk)表示;部署了n个消费消费节点计算资源,用向量C=(c1,c2,...cn)表示;并用矩阵MC表示MQ消息与消费节点之间计算资源分配关系,MC简称资源矩阵:
M C = mc 11 mc 12 ... m 1 c n mc 21 mc 22 ... mc 2 n ... ... ... ... mc k 1 mc k 2 ... mc k n k × n ,
其中,元素mcij表示消费节点cj(1≤j≤n)是否处理消息mi(1≤i≤k),若处理,则mcij为1,否则为0。
监控子系统
根据本公开的实施例,监控子系统2071可以监控MQ中各类消息的积存度量以及消费端系统中各消费节点的处理压力度量。
由于消费端系统2005与MQ消息中间件服务平台2003处于异构网络中,消费端系统2005只有通过客户端MQ中间件平台2003建立连接,才能接收到MQ推送的消息。由于MQ消息模式限制以及性能限制,目前MQ客户端不支持直接获取消息队列中的消息积存数量。因此,根据本公开的实施例,监控子系统2071可以基于消费一类消息的各消费节点在单位时间段内消费该类消息的平均数量来计算该类消息的积存度量,和/或基于一消费节点在单位时间段内消费的所有消息的数目来计算该消费节点的处理压力度量。
具体地,根据本公开的实施例,监控子系统2071可以采用通过监控消费节点的消费频率来达到监控各消费节点处理压力的目的。在此,一消费节点cj对一类消息mi的消费频率αij可以定义为N/t,其中N是该消费节点cj在预定时间段t内消费的该类消息mi的数目。αij表示消息mi对消费节点cj造成的压力值。
消费端系统2005的处理压力可以用矩阵A表示,简称压力矩阵:
A = α 11 α 12 ... α 1 n α 21 α 22 ... α 2 n ... ... ... ... α k 1 α k 2 ... α k n k × n .
如果资源矩阵MC中的元素mcij为0,则在压力矩阵A中,相应的压力值αij也为0,因为mcij=0表示消费节点cj并未订阅消息mi,即在预定时间段t内消费的该类消息mi的数目为0。
消费节点订阅处理的消息种类越多,该消费节点的处理压力越大。因此,消费节点cj处总的处理压力值或处理压力度量可以表示为:
β j = Σ i = 1 k α i j .
由于一种MQ消息可以由多个消费节点进行消费,并且消息中间件服务平台的负载均衡确保了消费节点的处理压力值相差不多。于是,该消息对应的各消费节点的平均处理压力直接反应了该消息的积压情况。因此,对于一类消息mi,其积存值或积存度量λi可以表示为:
λ i = Σ j = 1 n α i j / Σ j = 1 , nc i j ≠ 0 n 1.
根据本公开的实施例,采用两种原则来调整MQ消息的消费节点资源。具体地,一方面,当MQ消息mi在其现有的分配消费节点资源mci=(mci1,mci2,...mcin)下,其积存值超过某一阈值时,表明消费节点计算资源不足,需要重新调整计算处理资源。另一方面,当消费节点cj压力值超过某一阈值时,则表明需要对节点cj的现有MQ消息进行计算资源重分配。上面两种情况就是本文需要调整MQ消息的消费节点资源的两种调控原则。
根据这两个原则,当某一类消息mi的积存度量λi超过阈值(称为“第一阈值”)时,可以为该类消息mi分配一新的消费节点;和/或,当某一消费节点cj的处理压力度量βj超过阈值(称为第二阈值)时,可以为该消费节点cj中积存度量最大的一类消息分配一新的消费节点。
图3示出了根据本公开实施例的监控子系统进行资源分配的流程图。
如图3所示,在操作301,监控子系统2003可以根据以上计算得到的积存度量λi和处理压力度量βj,查找超过积存阈值的消息mi。如不存在(即,“否”),则操作进行到307;否则,操作进行到303,对消息mi进行资源预分配操作。
根据本公开的实施例,资源预分配操作可以包括:查找当前并不消费该类消息的消费节点中处理压力度量最小的消费节点,假设从当前消费该类消息的各消费节点所消费的该类消息中分出一定数量由所查找的消费节点来处理。
具体地,可以查找没有被消息mi分配的消费节点中处理压力值最小的消费节点cj作为预分配资源,并对处理压力矩阵A作如下变换:
其中, δ = Σ j = 1 n α i j / [ ( Σ j = 1 , nc i j ≠ 0 n 1 + 1 ) · Σ j = 1 , mc i j ≠ 0 n 1 ] , δ ‾ = δ · Σ j = 1 , mc i j ≠ 0 n 1 , α i j ⇒ α i j - δ 当且仅当mci′j′≠0。
在该示例中,将δ设为原积存值λi/(当前订阅消息mi的节点数+1),但是本公开不限于此,可以按其他方式设定δ。
之后,在操作305,可以基于资源预分配操作的结果(例如,体现为变化后的处理压力矩阵A),重新计算各类消息的积存度量以及各消费节点的处理压力度量。
接着,在操作307,可以查找超过处理压力阈值的消费节点cj。若存在(即,“是”),则可以查找节点cj中积存值最大的消息mi,且操作进行到303,针对该类消息mi执行资源预分配操作(例如,如上所述变化压力矩阵);否则,操作进行到309,以得到收敛的最终资源分配结果。
具体地,可以进行如下处理获得MQ消息的资源矩阵MC:
A k × n ⇒ MC k × n ,
其中,mcij=1当且仅当αij>0,mcij=0当且仅当αij=0。
根据本公开的原理,压力矩阵A最多经过k(n-1)次矩阵变换即可得到一个变换收敛值。这是因为如上所述设定消费端系统现有的消费节点计算资源能够满足订阅的各种MQ消息处理,因为每种消息最多经过(n-1)次压力矩阵变换处理,即可分配完所有的消费节点。
这样,监控子系统2071获得了新的资源分配方案(体现为得到的新资源矩阵MC),其中可能向某一类消息mi新分配了一个或多个消费节点。
当然,如果最终不能收敛(例如,经过预定次数的资源预分配操作或者说压力矩阵变换之后,例如由于消费端系统现有的消费节点事实上并不能满足消息处理的需求),则可以返回错误,以告知系统管理员。
监控子系统2071可以实时或者按预定的定时持续进行监控操作。
分配子系统
根据监控子系统2071获得的新资源分配方案,分配子系统2073可以自动更新各消费节点的订阅信息。
图4示出了根据本公开实施例的分配子系统更新消费节点订阅信息的流程图。
如图4所示,分配子系统2073可以按预定的同步时刻,来进行这种更新操作。具体地,在操作401,可以判断是否达到同步时刻。如果尚未到达(即,“否”),则分配子系统2073可以继续等待同步时刻的到达;否则(即,“是”),则分配子系统2073可以从监控子系统2071获得新的资源分配方案(例如,资源矩阵MC)。
然后,在操作403,分配子系统2073可以判断获得的新资源分配方案是否与前次资源分配方案相同。具体地,分配子系统2073可以判断获得的新资源矩阵MC与当前使用的资源矩阵MC是否相同(即,判断MC中各元素是否相同,也就是说,判断某一消费节点是否被分配了新的一类消息)。
如果资源分配方案未发生变化,则操作返回401,继续等待下次同步时刻的到来。如果资源分配方案发生了变化,则操作进行到407,分配子系统2073可以根据新的资源分配方案(即,新的资源矩阵MC),来更新节点的订阅信息。具体地,如果一消费节点被分配了新的一类消息,则可以更新该消费节点的订阅信息。例如,可以通过MQ的应用编程接口(API)对消费节点上的MQconsumerListener的监听者信息进行更新,其中每一监听者负责监听一类信息。
本案中的同步工具可以是一个循环线程,也可以是一个定时worker工具,该同步工具最重要的特征是要具有循环定时执行任务的功能。
在现有多消息处理的应用系统中,当出现MQ消息积压时,大部分采取人工干预措施,不但增加了系统运维成本,导致系统服务器资源的浪费,并且从根本上无法解决MQ消息的积压问题。在此提出的基于反馈机制的MQ消息处理节点的自动化分配的技术方案通过实时监控各消费节点的MQ消息处理以及服务器计算资源利用情况,采用本文提出变换调控处理策略计算各MQ消息的计算资源分配矩阵,然后通过调控-反馈系统中的同步工具,将最新分配的MQ消息进行注册监听消费。在本方案中提出的两阶段变换调控处理策略能够快速有效的获取最新的MQ消息的资源分配信息,本策略既考虑了消费节点的处理能力,也考虑到各MQ消息的积存情况,有效地提高了服务器计算资源的利用率,也大大提高了消息的处理效率,进而提高了消息的及时到达率。另一方面,本文提出的动态分配方案能够有效地降低人工运维成本,并避免了因消费处理系统不断重新发布带来的时间成本。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等价物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (12)

1.一种用于向消息队列“MQ”中的消息分配消费端系统中的消费节点的装置,包括:
监控子系统,配置为:
监控MQ中各类消息的积存度量以及消费端系统中各消费节点的处理压力度量;及
当某一类消息的积存度量超过第一阈值时,为该类消息分配一新的消费节点;和/或当某一消费节点的处理压力度量超过第二阈值时,为该消费节点中积存度量最大的一类消息分配一新的消费节点;以及
分配子系统,配置为根据监控子系统的分配结果,更新各消费节点的订阅信息。
2.根据权利要求1所述的装置,其中,MQ中一类消息的积存度量按消费该类消息的各消费节点在单位时间段内消费该类消息的平均数量来计算。
3.根据权利要求1或2所述的装置,其中,某一消费节点的处理压力度量按该消费节点在单位时间段内消费的所有消息的数目来计算。
4.根据权利要求1所述的装置,其中,监控子系统被配置为:
i)判断各类消息的积存度量是否超过第一阈值,如果均未超过第一阈值,则进行下述操作iii),或者如果某一类消息的积存度量超过第一阈值,则对该类消息进行资源预分配操作,所述资源预分配操作包括:查找当前并不消费该类消息的消费节点中处理压力度量最小的消费节点,假设从当前消费该类消息的各消费节点所消费的该类消息中分出一定数量由所查找的消费节点来处理;
ii)基于资源预分配操作的结果,重新计算各类消息的积存度量以及各消费节点的处理压力度量;
iii)如果某一消费节点的处理压力度量或者通过ii)中的操作重新计算的处理压力度量超过第二阈值,则针对该消费节点中积存度量最大的一类消息,进行上述资源预分配操作;以及
iv)重复ii)和iii)的处理,直至各消费节点所分配的各类消息的数目收敛,
其中,对于各类消息,向该类消息分配收敛结果中对该类消息的处理数量不为零的消费节点。
5.根据权利要求4所述的装置,分配子系统被配置为:针对各消费节点,判断该消费节点是否被分配了新的一类消息,并且如果被分配了新的一类消息,则更新该消费节点的订阅信息。
6.根据权利要求5所述的装置,其中,分配子系统被配置为按预定的同步时刻,来进行所述判断和更新的操作。
7.根据权利要求5所述的装置,其中,所述更新包括:通过MQ的应用编程接口“API”对消费节点上的MQconsumerListener的监听者信息进行更新,其中每一监听者负责监听一类信息。
8.一种用于向消息队列“MQ”中的消息分配消费端系统中的消费节点的方法,包括:
监控MQ中各类消息的积存度量以及消费端系统中各消费节点的处理压力度量;
当某一类消息的积存度量超过第一阈值时,为该类消息分配一新的消费节点;和/或当某一消费节点的处理压力度量超过第二阈值时,为该消费节点中积存度量最大的一类消息分配一新的消费节点;以及
根据监控子系统的分配结果,更新各消费节点的订阅信息。
9.根据权利要求8所述的方法,其中,基于各消费节点对MQ中各类消息的消费频率,来确定消息的积存度量以及消费节点的处理压力度量,其中一消费节点cj对一类消息mi的消费频率αij定义为N/t,其中N是该消费节点cj在预定时间段t内消费的该类消息mi的数目。
10.根据权利要求9所述的装置,其中,根据以下公式确定一类消息mi的积存度量λi
λ i = Σ j = 1 n α i j / Σ j = 1 , mc i j ≠ 0 n 1 ,
其中,n是消费端系统中部署的消费节点的数目,j是消费节点的索引且1≤j≤n,mcij表示消费节点cj是否处理该类消息mi,其中当消费节点cj处理该类消息mi时mcij=1,否则mcij=0。
11.根据权利要求9所述的方法,其中,根据以下公式确定消费节点cj的处理压力度量βj
β j = Σ i = 1 k α i j ,
其中,k是消费端系统所订阅的MQ中消息的种类数,i是各类消息的索引且1≤i≤k。
12.根据权利要求9所述的方法,其中,分配操作包括:
i)判断各类消息的积存度量是否超过第一阈值,如果均未超过第一阈值,则进行下述操作iii),或者如果一类消息mi的积存度量λi超过第一阈值,则对该类消息mi进行资源预分配操作,所述资源预分配操作包括:查找当前并不消费该类消息mi的消费节点中处理压力度量最小的消费节点cj,并进行如下变换:
其中,n是消费端系统中部署的消费节点的数目,j是消费节点的索引且1≤j≤n,k是消费端系统所订阅的MQ中消息的种类数,i是各类消息的索引且1≤i≤k, δ = Σ j = 1 n α i j / [ ( Σ j = 1 , mc i j ≠ 0 n 1 + 1 ) · Σ j = 1 , mc i j ≠ 0 n 1 ] , δ ‾ = δ · Σ j = 1 , mc i j ≠ 0 n 1 , 当且仅当mcij≠0,mcij表示消费节点cj是否处理该类消息mi,其中当消费节点cj处理该类消息mi时mcij=1,否则mcij=0;
ii)基于变换后的αij,重新计算各类消息的积存度量以及各消费节点的处理压力度量;
iii)如果某一消费节点cj的处理压力度量或者通过ii)中的操作重新计算的处理压力度量超过第二阈值,则针对该消费节点cj中积存度量最大的一类消息mi,进行上述变换;
iv)重复ii)和iii)的处理,直至各αij收敛;以及
v)基于收敛的Ak×n,得到MCk×n=[mcij]k×n
A k × n ⇒ MC k × n ,
其中,mcij=1当且仅当αij>0,mcij=0当且仅当αij=0。
CN201610037304.4A 2016-01-20 2016-01-20 向mq中的消息分配消费节点的装置及方法 Active CN105450784B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610037304.4A CN105450784B (zh) 2016-01-20 2016-01-20 向mq中的消息分配消费节点的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610037304.4A CN105450784B (zh) 2016-01-20 2016-01-20 向mq中的消息分配消费节点的装置及方法

Publications (2)

Publication Number Publication Date
CN105450784A true CN105450784A (zh) 2016-03-30
CN105450784B CN105450784B (zh) 2019-06-04

Family

ID=55560550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610037304.4A Active CN105450784B (zh) 2016-01-20 2016-01-20 向mq中的消息分配消费节点的装置及方法

Country Status (1)

Country Link
CN (1) CN105450784B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912412A (zh) * 2016-03-31 2016-08-31 北京奇虎科技有限公司 消息分发方法、装置及系统
CN107566287A (zh) * 2017-07-26 2018-01-09 阿里巴巴集团控股有限公司 消息流量的控制方法及装置
CN111045837A (zh) * 2019-11-26 2020-04-21 福建天泉教育科技有限公司 跨服务消费的方法、存储介质
CN111240860A (zh) * 2020-01-07 2020-06-05 广州虎牙科技有限公司 消息处理方法及服务系统
CN116132367A (zh) * 2022-08-17 2023-05-16 马上消费金融股份有限公司 一种消息处理方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1787588A (zh) * 2005-12-01 2006-06-14 大唐软件技术有限责任公司 多进程消息处理方法以及多进程话单处理的方法
US20080108361A1 (en) * 2006-11-07 2008-05-08 Nokia Corporation Multiradio priority control based on modem buffer load
CN103019866A (zh) * 2012-10-24 2013-04-03 北京京东世纪贸易有限公司 基于消息队列的分布式方法和系统
CN103064731A (zh) * 2012-12-26 2013-04-24 人民搜索网络股份公司 一种提高消息队列系统性能的装置及其方法
CN104391930A (zh) * 2014-11-21 2015-03-04 用友软件股份有限公司 分布式文件存储装置和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1787588A (zh) * 2005-12-01 2006-06-14 大唐软件技术有限责任公司 多进程消息处理方法以及多进程话单处理的方法
US20080108361A1 (en) * 2006-11-07 2008-05-08 Nokia Corporation Multiradio priority control based on modem buffer load
CN103019866A (zh) * 2012-10-24 2013-04-03 北京京东世纪贸易有限公司 基于消息队列的分布式方法和系统
CN103064731A (zh) * 2012-12-26 2013-04-24 人民搜索网络股份公司 一种提高消息队列系统性能的装置及其方法
CN104391930A (zh) * 2014-11-21 2015-03-04 用友软件股份有限公司 分布式文件存储装置和方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912412A (zh) * 2016-03-31 2016-08-31 北京奇虎科技有限公司 消息分发方法、装置及系统
CN107566287A (zh) * 2017-07-26 2018-01-09 阿里巴巴集团控股有限公司 消息流量的控制方法及装置
CN107566287B (zh) * 2017-07-26 2021-03-02 创新先进技术有限公司 消息流量的控制方法及装置
CN111045837A (zh) * 2019-11-26 2020-04-21 福建天泉教育科技有限公司 跨服务消费的方法、存储介质
CN111045837B (zh) * 2019-11-26 2023-10-20 福建天泉教育科技有限公司 跨服务消费的方法、存储介质
CN111240860A (zh) * 2020-01-07 2020-06-05 广州虎牙科技有限公司 消息处理方法及服务系统
CN111240860B (zh) * 2020-01-07 2023-09-08 广州虎牙科技有限公司 消息处理方法及服务系统
CN116132367A (zh) * 2022-08-17 2023-05-16 马上消费金融股份有限公司 一种消息处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN105450784B (zh) 2019-06-04

Similar Documents

Publication Publication Date Title
CN109218355B (zh) 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法
US9805140B2 (en) Striping of directed graphs and nodes with improved functionality
US10534542B2 (en) Dynamic core allocation for consistent performance in a non-preemptive scheduling environment
CN110134495B (zh) 一种容器跨主机在线迁移方法、存储介质及终端设备
US12073265B2 (en) Event handling in distributed event handling systems
CN105450784B (zh) 向mq中的消息分配消费节点的装置及方法
US20150295970A1 (en) Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system
US9870269B1 (en) Job allocation in a clustered environment
US10394606B2 (en) Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy
CN103516744A (zh) 一种数据处理的方法和应用服务器及集群
CN104243405A (zh) 一种请求处理方法、装置及系统
CN111459641B (zh) 一种跨机房的任务调度和任务处理的方法及装置
CN105446653A (zh) 一种数据合并方法和设备
TW201702908A (zh) 資料庫彈性調度方法以及裝置
Choi et al. pHPA: A proactive autoscaling framework for microservice chain
CN112600761A (zh) 一种资源分配的方法、装置及存储介质
CN102480502B (zh) 一种i/o负载均衡方法及i/o服务器
CN115168042A (zh) 监控集群的管理方法及装置、计算机存储介质、电子设备
WO2017045640A1 (zh) 一种数据中心内关联流的带宽调度方法及装置
CN115167992A (zh) 任务处理方法、系统、装置、服务器、介质及程序产品
CN111177160A (zh) 服务更新方法、装置、服务器及介质
Guo Ant colony optimization computing resource allocation algorithm based on cloud computing environment
CN108667920B (zh) 一种雾计算环境业务流量加速系统及其业务流量加速方法
CN110308991A (zh) 一种基于随机任务的数据中心节能优化方法及系统
CN113608870B (zh) 消息队列的负载均衡方法及装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201117

Address after: No.8-6, Putou South Road, Haicang District, Xiamen City, Fujian Province

Patentee after: Xiamen xinjianfu e-commerce Co., Ltd

Address before: 100080 Beijing city Haidian District xingshikou Road No. 65 building 11C Creative Park West West west Shan East 1-4 layer 1-4 layer

Patentee before: BEIJING JINGDONG SHANGKE INFORMATION TECHNOLOGY Co.,Ltd.

Patentee before: BEIJING JINGDONG CENTURY TRADING Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210512

Address after: 361000 No.8, Putou South Road, Haicang District, Xiamen City, Fujian Province

Patentee after: Xiamen Jianfu Chain Management Co.,Ltd.

Address before: No.8-6, Putou South Road, Haicang District, Xiamen City, Fujian Province 361022

Patentee before: Xiamen xinjianfu e-commerce Co., Ltd

TR01 Transfer of patent right