CN105049372A - 一种扩展消息中间件吞吐量的方法及系统 - Google Patents
一种扩展消息中间件吞吐量的方法及系统 Download PDFInfo
- Publication number
- CN105049372A CN105049372A CN201510340799.3A CN201510340799A CN105049372A CN 105049372 A CN105049372 A CN 105049372A CN 201510340799 A CN201510340799 A CN 201510340799A CN 105049372 A CN105049372 A CN 105049372A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- message body
- throughput
- aiming field
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种扩展消息中间件吞吐量的方法,包括:1、根据当前发送的具有同种业务类型的消息体总吞吐量及消息中间件中单条队列的吞吐量设置复数条队列,并编号;2、初次配置映射关系时,选取任意一个消息体中的任意一个业务字段作为该消息体的目标字段,建立映射关系;3、根据上述目标字段的名称从每个消息体中获取业务字段,并将该业务字段作为每个消息体的目标字段,将每个目标字段的值代入所述映射关系,运算出对应的队列编号,将每个消息体分别发送到对应的队列中。本发明还提供一种扩展消息中间件吞吐量的系统,本发明保证单条消息的业务顺序性的同时增加了吞吐量;多条队列对于客户端而言是透明的;消息传输的速度和容量得到大幅提升。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种扩展消息中间件吞吐量的方法及系统。
背景技术
随着云计算、分布式技术的发展,消息中间件的使用也越来越多。消息中间件(messageorientedmiddleware)是指支持与保障分布式应用程序之间收发消息的中间件,常见的产品有RabbitMQ、ActiveMQ等。分布式应用程序之间的通信接口由消息中间件提供,消息发送方和接收方之间的连接完全是松耦合的,通信是非阻塞的。消息中间件已广泛应用于各类分布式应用系统中。现有技术对消息中间件的使用,一条队列传输同种业务类型的消息,多种业务类型的消息需要通过多条队列进行传输,主要有以下两个常见问题:单条队列传输消息的速度受计算机硬件、网络等条件限制,难以满足业务的速度要求;单位时间内,消息中间件的单条队列处理消息的总量有限,随着消息总量增加,传输速度呈现非线性下降,甚至达到零值,不适合在业务处理量大的系统中使用。但是现有的专利仍然无法解决以上两个常见的问题,如:
在2011年11月23日公开的公开号为102255794A的中国发明,涉及一种远程消息收发吞吐量优化和等待时间缩短用系统和方法,该系统用于运行于远程节点上的进程间的进程间通信中的消息收发,包括:可通信地彼此耦连的至少两个主节点;可通信地与至少一个主节点耦连的至少一个订阅方/发布方节点;适于存储进程间消息的存储器;可由多个进程并行访问的共享内存中的至少一个存储缓冲区队列;插入进程间消息的写进程和异步地发送消息的远程发送进程,和同步地接收来自/到达队列的消息的远程接收进程;将至少一个进程间消息插入到远程接收节点存储的队列中;至少一个读进程,它使消息从远程接收节点上的队列中出列;适于指向队列中的空闲存储缓冲区的空闲指向元件;和适于指向包含进程间消息的存储缓冲区的数据指向元件。
在2013年12月18日公开的公开号为103457875A的中国发明,公开了车联网中基于多优先级的消息队列控制方法,该方法在车辆产生消息时,针对每个消息划分成不同优先级;再据消息的优选级,将消息放入不同的控制队列;在消息传输时,根据控制队列的发送优先等级发送对应队列中的消息。该发明提供的消息队列控制方法具有可靠的通信服务、根据不同业务类型Qos需求提供不同时延、吞吐量、可靠性等性能保障。
在2014年3月12日公开的公开号为103631665A的中国发明,提供了一种基于消息队列的线程间通信的方法和系统,采用所述消息队列执行多线程进队push以及单线程出队pop的操作,其中,所述多线程进队push的操作包括:判断所述消息队列是否已满;若否,则分别计算n个线程进队push的偏移量;所述n为大于或等于1的正整数;依据所述n个线程进队push的偏移量,分别计算所述n个线程进队push的实际位置Pos;所述n个线程分别在其进队push的实际位置Pos执行进队push操作。该发明保证了多线程访问操作不碰撞,解决了线程间通信时阻塞的问题,减少了资源消耗,充分利用了系统资源,提高了处理速度,从而提高了服务器吞吐量。
发明内容
本发明要解决的技术问题之一,在于提供一种扩展消息中间件吞吐量的方法,一般用于接收消息的客户端都有订阅消息中间件中的多条队列的能力,但大多数情况是所订阅的多条队列不具有业务相关性;本发明能订阅多条业务相关的队列,使多条消息能够传输同种业务消息;可以把有业务先后顺序要求的消息路由到同一条队列,使消息按照先进先出的顺序在队列中传输,消息的业务先后顺序也不会被打乱,保证了部分消息之间的顺序性。
本发明要解决的问题之一,是这样实现的:
一种扩展消息中间件吞吐量的方法,包括如下步骤:
步骤1、根据当前发送的具有同种业务类型的消息体总吞吐量及消息中间件中单条队列的吞吐量决定队列设置复数条队列,并将该复数条队列进行编号,且每个消息体均包括复数个不同名称的业务字段;
步骤2、初次配置映射关系时,选取任意一个消息体中的任意一个业务字段作为该消息体的目标字段,建立目标字段与队列编号之间的映射关系F(X)=Y,其中:X为该目标字段的值,Y为队列编号;
步骤3、根据上述目标字段的名称从每个消息体中获取业务字段,并将该业务字段作为每个消息体的目标字段,分别将每个目标字段的值X代入所述映射关系F(X)=Y,运算出每个消息体对应的队列编号Y,并将每个消息体分别发送到对应的队列中。
进一步地,所述映射关系是通过一致性哈希算法或取模运算建立的。
本发明要解决的技术问题之二,在于提供一种扩展消息中间件吞吐量的系统,一般用于接收消息的客户端都有订阅消息中间件中的多条队列的能力,但大多数情况是所订阅的多条队列不具有业务相关性;本发明能订阅多条业务相关的队列,使多条消息能够传输同种业务消息;可以把有业务先后顺序要求的消息路由到同一条队列,使消息按照先进先出的顺序在队列中传输,消息的业务先后顺序也不会被打乱,保证了部分消息之间的顺序性。
本发明要解决的问题之二,是这样实现的:
一种扩展消息中间件吞吐量的系统,包括:
队列编号模块,用于根据当前发送的具有同种业务类型的消息体总吞吐量及消息中间件中单条队列的吞吐量设置复数条队列,并将该复数条队列进行编号,且每个消息体均包括复数个不同名称的业务字段;
映射关系建立模块,用于初次配置映射关系时,选取任意一个消息体中的任意一个业务字段作为该消息体的目标字段,建立目标字段与队列编号之间的映射关系F(X)=Y,其中:X为该目标字段的值,Y为队列编号;
分队列路由模块,用于根据上述目标字段的名称从每个消息体中获取业务字段,并将该业务字段作为每个消息体的目标字段,分别将每个目标字段的值X代入所述映射关系F(X)=Y,运算出每个消息体对应的队列编号Y,并将每个消息体分别发送到对应的队列中。
进一步地,所述映射关系是通过一致性哈希算法或取模运算来建立的。
本发明具有如下优点:本发明可以使得多条队列传输同种业务消息,在保证单条消息的业务顺序性的同时增加了吞吐量;多条队列对于客户端而言是透明的;消息就像在单条队列中传输一样,其消息传输的速度和容量都得到大幅提升。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明一种扩展消息中间件吞吐量的方法执行流程图。
具体实施方式
如图1所示,本发明的一种扩展消息中间件吞吐量的方法,包括如下步骤:
步骤1、设定业务类型为手机充值业务,该业务类型的消息体总吞吐量为12000条,单条队列的吞吐量为6000条,根据当前发送的具有同种业务类型的消息体总吞吐量及消息中间件中单条队列的吞吐量设置两条队列,并将队列进行编号:队列1和队列2,且每个消息体均包括复数个不同名称的业务字段,针对业务类型为手机充值业务的消息体,每个消息体中均包括手机号和充值面额两个业务字段;
步骤2、初次配置映射关系时,选取任意一个消息体中的任意一个业务字段(如手机号)作为目标字段,建立目标字段(如手机号)与队列编号之间的映射关系F(X)=Y,其中:X为该目标字段的值,Y为队列编号;所述映射关系是通过取模运算来建立的,其映射关系为:如果手机号的数值最后一位是偶数,则将该消息体发到队列1中;如果手机号的数值最后一位是奇数,则将该消息体发送到队列2中;所述映射关系还可以自己定义,就像函数的自变量和因变量,消息体中某个业务字段相当于自变量,队列编号相当于因变量,映射关系相当于函数关系;
步骤3、根据上述目标字段的名称(如手机号)从每个消息体中获取业务字段,并将该业务字段作为每个消息体的目标字段,分别将每个目标字段的值X(手机号码的数值)代入所述映射关系F(X)=Y,运算出每个消息体对应的队列编号Y,并将每个消息体分别发送到对应的队列中;根据配置的映射关系运算结果,得到该消息体要送达的目标队列的编号,调用消息中间件自带的发送消息的接口,接口参数中包含了具体消息体和目标队列的编号;然后用户可以根据消息中间件的接口对多条业务相关的队列进行订阅,可同时订阅队列1和队列2。
本发明的一种扩展消息中间件吞吐量的系统,包括:
队列编号模块,用于设定业务类型为手机充值业务,该业务类型的消息体总吞吐量为12000条,单条队列的吞吐量为6000条,根据当前发送的具有同种业务类型的消息体总吞吐量及消息中间件中单条队列的吞吐量设置两条队列,并将队列进行编号:队列1和队列2,且每个消息体均包括复数个不同名称的业务字段,针对业务类型为手机充值业务的消息体,每个消息体中均包括手机号和充值面额两个业务字段;
映射关系建立模块,用于初次配置映射关系时,选取任意一个消息体中的任意一个业务字段(如手机号)作为目标字段,建立目标字段(如手机号)与队列编号之间的映射关系F(X)=Y,其中:X为该目标字段的值,Y为队列编号;所述映射关系是通过取模运算来建立的,其映射关系为:如果手机号的数值最后一位是偶数,则将该消息体发到队列1中;如果手机号的数值最后一位是奇数,则将该消息体发送到队列2中;所述映射关系还可以自己定义,就像函数的自变量和因变量,消息体中某个业务字段相当于自变量,队列编号相当于因变量,映射关系相当于函数关系;
分队列路由模块,用于根据上述目标字段的名称(如手机号)从每个消息体中获取业务字段,并将该业务字段作为每个消息体的目标字段,分别将每个目标字段的值X(手机号码的数值)代入所述映射关系F(X)=Y,运算出每个消息体对应的队列编号Y,并将每个消息体分别发送到对应的队列中;根据配置的映射关系运算结果,得到该消息体要送达的目标队列的编号,调用消息中间件自带的发送消息的接口,接口参数中包含了具体消息体和目标队列的编号;然后用户可以根据消息中间件的接口对多条业务相关的队列进行订阅,可同时订阅队列1和队列2。
因为消息中间件有多条队列(数量大于N),其中的N条队列传输同种业务消息,这N条队列是业务相关的,保证了队列具有相关性,队列内的消息就都属于同种业务消息,而且部分消息被客户端(用于接收消息的客户端)接收的顺序是有要求的(已经通过分队列路由模块分流到同一条队列),所以每条队列内的消息各自具有相关性和顺序性。负责接收某类业务消息的客户端(用于接收消息的客户端)对这N条队列进行订阅(订阅是消息中间件针对客户端(用于接收消息的客户端)提供的一种功能,用于建立对某个消息队列的消息进行收取的关系,要先订阅才能接收)。
本发明可以使得多条队列传输同种业务消息,是将同种业务消息进行分流,由多条队列一起传输;在保证单条消息的业务顺序性的同时增加了吞吐量,单条队列的吞吐量是有上限的,使用多条队列传输同种业务消息,可以叠加队列的上限吞吐量,从而增加整体的吞吐量;多条队列对于客户端而言是透明的,虽然使用多条队列传输消息,但单位时间内客户端(用于发送消息的客户端)并不是往多条队列发送消息,而是将消息分流到映射关系运算结果对应的单条队列,客户端(用于发送消息的客户端)的发送接口没有改变,同理,客户端(用于接收消息的客户端)的接收接口也跟单条队列的一样,所以是透明的,客户端(用于发送消息的客户端)像调用单条队列的发送接口一样,对消息进行分流发送;消息就像在单条消息队列中传输一样,其消息传输的速度和容量都得到大幅提升,这里的“消息”针对的是同种业务消息,单条队列传输消息的速度和容量都是有限的,使用多条队列并行发送消息可以使单位时间内通过消息中间件的消息数量增加,同时,单位时间内在消息中间件“停留,等待发送”的消息数量也增加,即消息传输速度和容量都提升。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (4)
1.一种扩展消息中间件吞吐量的方法,其特征在于:包括如下步骤:
步骤1、根据当前发送的具有同种业务类型的消息体总吞吐量及消息中间件中单条队列的吞吐量设置复数条队列,并将该复数条队列进行编号,且每个消息体均包括复数个不同名称的业务字段;
步骤2、初次配置映射关系时,选取任意一个消息体中的任意一个业务字段作为该消息体的目标字段,建立目标字段与队列编号之间的映射关系F(X)=Y,其中:X为该目标字段的值,Y为队列编号;
步骤3、根据上述目标字段的名称从每个消息体中获取业务字段,并将该业务字段作为每个消息体的目标字段,分别将每个目标字段的值X代入所述映射关系F(X)=Y,运算出每个消息体对应的队列编号Y,并将每个消息体分别发送到对应的队列中。
2.根据权利要求1所述的一种扩展消息中间件吞吐量的方法,其特征在于:所述映射关系是通过一致性哈希算法或取模运算建立的。
3.一种扩展消息中间件吞吐量的系统,其特征在于:包括:
队列编号模块,用于根据当前发送的具有同种业务类型的消息体总吞吐量及消息中间件中单条队列的吞吐量决定队列设置复数条队列,并将该复数条队列进行编号,且每个消息体均包括复数个不同名称的业务字段;
映射关系建立模块,用于初次配置映射关系时,选取任意一个消息体中的任意一个业务字段作为该消息体的目标字段,建立目标字段与队列编号之间的映射关系F(X)=Y,其中:X为该目标字段的值,Y为队列编号;
分队列路由模块,用于根据上述目标字段的名称从每个消息体中获取业务字段,并将该业务字段作为每个消息体的目标字段,分别将每个目标字段的值X代入所述映射关系F(X)=Y,运算出每个消息体对应的队列编号Y,并将每个消息体分别发送到对应的队列中。
4.根据权利要求3所述的一种扩展消息中间件吞吐量的系统,其特征在于:所述映射关系是通过一致性哈希算法或取模运算来建立的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510340799.3A CN105049372A (zh) | 2015-06-18 | 2015-06-18 | 一种扩展消息中间件吞吐量的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510340799.3A CN105049372A (zh) | 2015-06-18 | 2015-06-18 | 一种扩展消息中间件吞吐量的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105049372A true CN105049372A (zh) | 2015-11-11 |
Family
ID=54455587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510340799.3A Pending CN105049372A (zh) | 2015-06-18 | 2015-06-18 | 一种扩展消息中间件吞吐量的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105049372A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107347030A (zh) * | 2017-06-29 | 2017-11-14 | 重庆邮电大学 | 一种基于v2x通信的消息管理装置及方法 |
CN108833298A (zh) * | 2018-05-29 | 2018-11-16 | 中国建设银行股份有限公司 | 报文分组发送方法、装置以及存储介质 |
CN108965273A (zh) * | 2018-07-02 | 2018-12-07 | 瑞典爱立信有限公司 | 一种车联网中的方法和用于车联网的通信系统 |
CN110267228A (zh) * | 2019-06-13 | 2019-09-20 | 重庆邮电大学 | 一种v2x车载终端消息自适应调度管理系统及方法 |
CN110278159A (zh) * | 2019-05-22 | 2019-09-24 | 口碑(上海)信息技术有限公司 | 数据分流的控制方法及装置、存储介质、电子装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102752466A (zh) * | 2011-04-21 | 2012-10-24 | 东南大学 | 一种融合通信中的智能电话通知系统 |
CN102761832A (zh) * | 2011-04-28 | 2012-10-31 | 中国移动通信集团河南有限公司 | 一种消息分发方法以及消息分发装置 |
CN103390041A (zh) * | 2013-07-18 | 2013-11-13 | 杭州东信北邮信息技术有限公司 | 一种基于中间件提供数据服务的方法和系统 |
CN103534997A (zh) * | 2011-04-29 | 2014-01-22 | 华为技术有限公司 | 用于无损耗以太网的基于端口和优先级的流控制机制 |
CN104468330A (zh) * | 2014-12-03 | 2015-03-25 | 北京国双科技有限公司 | 分布式消息队列系统的数据处理方法和装置 |
US9256450B2 (en) * | 2009-12-28 | 2016-02-09 | Red Hat, Inc. | Using an enterprise messaging bus to influence the process of software compilation and packaging |
-
2015
- 2015-06-18 CN CN201510340799.3A patent/CN105049372A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9256450B2 (en) * | 2009-12-28 | 2016-02-09 | Red Hat, Inc. | Using an enterprise messaging bus to influence the process of software compilation and packaging |
CN102752466A (zh) * | 2011-04-21 | 2012-10-24 | 东南大学 | 一种融合通信中的智能电话通知系统 |
CN102761832A (zh) * | 2011-04-28 | 2012-10-31 | 中国移动通信集团河南有限公司 | 一种消息分发方法以及消息分发装置 |
CN103534997A (zh) * | 2011-04-29 | 2014-01-22 | 华为技术有限公司 | 用于无损耗以太网的基于端口和优先级的流控制机制 |
CN103390041A (zh) * | 2013-07-18 | 2013-11-13 | 杭州东信北邮信息技术有限公司 | 一种基于中间件提供数据服务的方法和系统 |
CN104468330A (zh) * | 2014-12-03 | 2015-03-25 | 北京国双科技有限公司 | 分布式消息队列系统的数据处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
沈雁: "《中国优秀硕士学位论文全文数据库信息科技辑(月刊)2014年第1期》", 15 January 2014 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107347030A (zh) * | 2017-06-29 | 2017-11-14 | 重庆邮电大学 | 一种基于v2x通信的消息管理装置及方法 |
CN107347030B (zh) * | 2017-06-29 | 2020-07-14 | 重庆邮电大学 | 一种基于v2x通信的消息管理装置 |
CN108833298A (zh) * | 2018-05-29 | 2018-11-16 | 中国建设银行股份有限公司 | 报文分组发送方法、装置以及存储介质 |
CN108833298B (zh) * | 2018-05-29 | 2022-07-05 | 中国建设银行股份有限公司 | 报文分组发送方法、装置以及存储介质 |
CN108965273A (zh) * | 2018-07-02 | 2018-12-07 | 瑞典爱立信有限公司 | 一种车联网中的方法和用于车联网的通信系统 |
CN110278159A (zh) * | 2019-05-22 | 2019-09-24 | 口碑(上海)信息技术有限公司 | 数据分流的控制方法及装置、存储介质、电子装置 |
CN110267228A (zh) * | 2019-06-13 | 2019-09-20 | 重庆邮电大学 | 一种v2x车载终端消息自适应调度管理系统及方法 |
CN110267228B (zh) * | 2019-06-13 | 2022-03-22 | 重庆邮电大学 | 一种v2x车载终端消息自适应调度管理系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI694339B (zh) | 一種區塊鏈共識方法、設備及系統 | |
Kliazovich et al. | CA-DAG: Modeling communication-aware applications for scheduling in cloud computing | |
CN105049372A (zh) | 一种扩展消息中间件吞吐量的方法及系统 | |
CN102469033B (zh) | 一种消息订阅系统以及消息发送方法 | |
WO2016106516A1 (zh) | 在分布式资源系统中用户请求的调度方法和装置 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
CN105187327A (zh) | 一种分布式消息队列中间件 | |
CN111078436B (zh) | 数据处理的方法、装置、设备及存储介质 | |
CN103516744A (zh) | 一种数据处理的方法和应用服务器及集群 | |
CN101963922B (zh) | 任务处理方法和装置 | |
CN102611735A (zh) | 一种应用服务的负载均衡方法及系统 | |
CN110134534B (zh) | 基于nio针对大数据分布式系统进行消息处理优化的系统及方法 | |
CN103309738A (zh) | 用户作业调度方法及装置 | |
CN101616083A (zh) | 一种报文转发方法和装置 | |
CN102594891A (zh) | 用于处理远程过程调用请求的方法及系统 | |
US10942777B2 (en) | Sorting apparatus | |
CN101984414B (zh) | Cpu资源的调度方法及装置 | |
CN102299843A (zh) | 一种基于gpu和缓冲区的网络数据处理方法及系统 | |
CN102904961A (zh) | 一种云计算资源调度方法及系统 | |
CN103870337A (zh) | 一种基于seda的esb组件实现方法 | |
KR20090123012A (ko) | 분산형 프로세싱 시스템 및 방법 | |
CN105426260A (zh) | 一种支持分布式系统的透明进程间通信系统及方法 | |
CN105786447A (zh) | 服务器处理数据的方法、装置及服务器 | |
CN101937465B (zh) | 分布式文件系统及其中的上层文件系统的访问方法 | |
CN114710571A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151111 |
|
WD01 | Invention patent application deemed withdrawn after publication |