一种消息分发方法以及消息分发装置的制作方法

文档序号:7653551阅读:138来源:国知局
专利名称:一种消息分发方法以及消息分发装置的制作方法
技术领域
本发明涉及信息处理技术领域,尤其涉及一种消息分发方法以及消息分发装置。
背景技术
随着通信技术的发展,接入通信系统中实现各种通信业务的终端数量在不断增力口,为了达到提高通信系统性能的目的,需要对通信系统中产生的海量业务消息进行处理,以根据处理结果对通信系统进行维护。对通信系统中产生的业务消息进行处理时,所涉及的消息处理系统如图I所示,该消息处理系统建立在采用基于消息中间件的SOA(Service-Oriented Architecture,面向服务的体系结构)架构之上。图I所示的消息处理系统主要包括第一前置机101、第二 前置机102、包括多个消息队列的消息中间件103以及包括多个应用服务器的应用服务器组104。具体地,图I所示系统包括的各功能实体完成的功能如下第一前置机101,包括处理模块以及分发模块,其中,处理模块主要用于获取BOSS (Business Operation Support System,业务运营支撑系统)事件,并对获取的事件进行过滤以及分析处理,得到业务事件;分发模块主要用于将处理模块处理得到的业务事件进行分发,即将各业务事件封装为业务事件消息分发给消息中间件103中的各消息队列;第二前置机102的结构与第一前置机101的结构相同,包括处理模块以及分发模块,其中,处理模块用于获取信令采集系统的信令数据,并对获取的事件进行过滤以及分析处理,得到业务事件;分发模块主要用于将处理模块处理得到的业务事件进行分发,即将各业务事件封装为业务事件消息分发给消息中间件103中的各消息队列;消息中间件103,包括多个消息队列,主要用于缓存来自各前置机的业务事件消息;应用服务器组104,主要用于从消息中间件103包括的各消息队列中获取业务事件消息进行处理,该应用服务器组104中包括的各业务服务器中配置有与消息中间件中包括的消息队列的对应关系,根据该对应关系,应用服务器从对应的消息队列中获取业务事件消息进行处理。实际应用中,信令采集系统会采集大量的信令数据,例如主被叫、短信收发、位置迁移、小区切换、开关机等各种信令数据,并通过Socket接口发送给第二前置机,峰值速率可以达到25000条/秒;B0SS系统也会产生大量的事件发送给第一前置机。并且,信令采集系统、BOSS系统等外部系统产生的大量实时数据又是非均衡的,例如,信令数据中的主被口q、短信收发在每天的各时间区间表现出非均衡性。因此,消息处理系统所面临的最大挑战是针对大数据量、以及非均衡的实时数据,如何使得对业务事件的处理达到高实时性的要求。图I所示的消息处理系统中,第一前置机以及第二前置机中的分发模块在向消息中间件中的各消息队列分发业务事件消息时,采用的消息分发方式为按照消息队列的编号顺序(如图I中的1、2、3.......N)依次分发业务事件消息,该分发方式未考虑到应用服务器的实际处理能力,对于处理能力较低的应用服务器,容易导致与该处理能力较低的应用服务器对应的消息队列中未处理的业务事件消息大量积压,从而降低了对业务事件消息处理的及时性。

发明内容
有鉴于此,本发明实施例提供一种消息分发方法以及消息分发装置,采用该技术方案,能够提高对消息处理的及时性。本发明实施例通过如下技术方案实现
根据本发明实施例的一个方面,提供了一种消息分发方法,包括确定各消息队列中分别存储的消息数量;根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,所述权重值用于表示消息队列可连续接收的消息数量;根据各消息队列分别对应的权重值,向所述各消息队列分发消息。根据本发明实施例的另一个方面,提供了一种消息分发装置,包括消息队列监控模块,用于确定各消息队列中分别存储的消息数量;权重确定模块,用于根据所述消息队列监控模块确定的各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,所述权重值用于表示消息队列可连续接收的消息数量;消息分发模块,用于根据所述权重确定模块确定的各消息队列分别对应的权重值,向所述各消息队列分发消息。通过本发明实施例提供的上述至少一个技术方案,在消息分发过程中,首先确定各消息队列中分别存储的消息数量,并根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,该权重值用于表示消息队列可连续接收的消息数量,然后进一步根据各消息队列分别对应的权重值,向各消息队列分发消息。根据该技术方案,可以根据每个消息队列已存储的消息数量,确定向每个消息队列可连续分配消息的消息数量,即以消息队列实际的存储消息数量为依据确定向各个消息队列分发消息的数量,从而能够减少消息队列中大量消息的积压,提高对消息处理的及时性。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中图I为现有技术提供的消息处理系统的结构示意图;图2为本发明实施例一提供的消息分发方法所对应的一个流程示意图;图3为本发明实施例一提供的消息分发方法所对应的又一个流程示意图;图4为本发明实施例一提供的确定各消息队列分别对应的权重值的流程示意图;图5为本发明实施例一提供的旧闭环链表的示意图6为本发明实施例一提供的闭环链表更新的一个示意图;图7为本发明实施例一提供的闭环链表更新的又一个示意图;图8为本发明实施例一提供的生成的新闭环链表的示意图;图9为本发明实施例二提供的根据权重值调整应用服务器的流程示意图;图10为本发明实施例三提供的消息处理系统的结构示意图;图11为本发明实施例三提供的消息分发的流程示意图;图12为本发明实施例四提供的生成的新闭环链表的一个示意图;
图13本发明实施例四提供的生成的新闭环链表的又一个示意图;图14为本发明实施例五提供的消息分发装置的一个示意图;图15为本发明实施例五提供的消息分发装置的又一个示意图;图16为本发明实施例五提供的消息分发装置的又一个示意图。
具体实施例方式为了给出提高对业务事件消息处理的及时性的实现方案,本发明实施例提供了一种消息分发方法以及消息分发装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。实施例一根据本发明实施例一,提供了一种一种消息分发方法,通过该实施例一提供的消息分发方法进行消息分发,能够提高对消息处理的及时性。图2给出了该实施例一提供的消息分发方法所对应的一个流程示意图,如图2所示,该消息分发方法,主要包括如下步骤步骤201、确定各消息队列中分别存储的消息数量。步骤202、根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,该权重值用于表示消息队列可连续接收的消息数量。步骤203、根据各消息队列分别对应的权重值,向各消息队列分发消息。至此,消息分发流程结束。上述步骤201至步骤203所对应的流程可以按照设定周期执行,即步骤201中,可以按照设定周期确定各消息队列中分别存储的消息数量。其中,该周期可以根据消息的分发数量确定并随着待分发消息数量的变化进行调整,例如,如果待分发消息数量较大,可以设置该周期较小,以根据各消息队列中存储的消息数量,及时对各消息队列的后续消息接收量进行调整。图3给出了该实施例一提供的消息分发方法所对应的又一个流程示意图,如图3所示,该消息分发方法,主要包括如下步骤步骤301、确定各消息队列中分别存储的消息数量。步骤302、确定各消息队列中是否存在存储的消息数量超过对应的最大阈值的消息队列,若是,执行步骤303,否则返回步骤301。步骤303、根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,该权重值用于表示消息队列可连续接收的消息数量。
步骤304、根据各消息队列分别对应的权重值,向各消息队列分发消息。至此,消息分发流程结束。上述步骤301至步骤304所对应的流程可以按照设定周期执行,即步骤401中,可以按照设定周期确定各消息队列中分别存储的消息数量。上述步骤301至步骤304所对应的流程中,在根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值之前,需要确定各消息队列中存在存储的消息数量超过对应的最大阈值的消息队列,从而能够在 消息队列有消息溢出(即消息队列中存储的消息数量超过设定阈值)时,及时对各消息队列后续接收消息的数量进行调整,以进一步提闻对消息分发的及时性。本发明实施例一还提供了确定消息队列的权重值的具体过程。如图4所示,上述步骤202以及步骤303中,根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,主要包括如下步骤步骤401、确定各消息队列分别对应的最大阈值是否都相等,若是,执行步骤402,若否,执行步骤403。各消息队列分别对应的最大阈值,用于表示该消息队列可以存储的最大消息数量,具体可以根据消息队列所对应的应用服务器的处理能力进行设置,或者根据为每个消息队列分配的存储空间大小确定,实际应用中,可以灵活设置,此处不再一一列举。步骤402、根据以消息队列中存储的消息数量为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值。步骤403、根据以消息队列中存储的消息数量与该消息队列对应的最大阈值的比值为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值。至此,确定各消息队列的流程结束。本发明实施例一提供的一个优选实施方式中,上述步骤402中,根据以消息队列中存储的消息数量为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值,可以通过如下方式一或方式二实现方式一确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的最大阈值与存储的消息数量的差值,将各消息队列所对应的差值分别除以第一设定值得到的商值,确定为各消息队列的权重值;以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权重值为零。其中,第一设定值为大于零的数,并且若得到的商值为非整数,则对非整数的商值取整,具体取整方式可以是向上取整,也可以是向下取整。该方式一中,第一设定值优选地可以选取为各消息队列所对应的差值的最大公约数。方式二确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的可接收消息数量的相对值,将各消息队列所对应的相对值分别除以第二设定值得到的商值,确定为各消息队列的权重值;以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权
重值为零。其中,消息队列对应的可接收消息数量的相对值,根据各消息队列存储的消息数量之和与该相对值对应的消息队列存储的消息数量的差值确定。第二设定值为大于零的数,并且若得到的商值为非整数,则对该非整数的商值取整,具体取整方式可以是向上取整,也可以是向下取整。该方式二中,第二设定值优选地可以选取为在满足得到的商值小于该消息队列对应的最大阈值减去存储的消息数量得到的差值时,各消息队列所对应的相对值的最大公约数。 该方式二的一个具体实例如下假设有四个消息队列,如表I所示,其中,最大队列深度为消息队列可以存储的消息数量的最大阈值,当前深度为消息队列存储的消息数量。表I
权利要求
1.一种消息分发方法,其特征在于,包括 确定各消息队列中分别存储的消息数量; 根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,所述权重值用于表示消息队列可连续接收的消息数量; 根据各消息队列分别对应的权重值,向所述各消息队列分发消息。
2.如权利要求I所述的方法,其特征在于,确定各消息队列中分别存储的消息数量,包括 按照设定周期确定各消息队列中分别存储的消息数量。
3.如权利要求I所述的方法,其特征在于,在根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值之前,还包括 确定所述各消息队列中存在存储的消息数量超过对应的最大阈值的消息队列。
4.如权利要求I所述的方法,其特征在于,根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,包括 在所述各消息队列分别对应的最大阈值相等时,根据以消息队列中存储的消息数量为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值; 在所述各消息队列分别对应的最大阈值至少存在两个不相等时,根据以消息队列中存储的消息数量与该消息队列对应的最大阈值的比值为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值。
5.如权利要求4所述的方法,其特征在于,根据以消息队列中存储的消息数量为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值,包括 确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的最大阈值与存储的消息数量的差值,将各消息队列所对应的差值分别除以第一设定值得到的商值确定为各消息队列的权重值,以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权重值为零;其中,所述第一设定值为大于零的数,并且若得到的商值为非整数,则对所述非整数的商值取整;或 确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的可接收消息数量的相对值,将各消息队列所对应的相对值分别除以第二设定值得到的商值确定为各消息队列的权重值,以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权重值为零;其中,所述相对值根据各消息队列存储的消息数量之和与所述相对值对应的消息队列存储的消息数量的差值确定;所述第二设定值为大于零的数,并且若得到的商值为非整数,则对所述非整数的商值取整。
6.如权利要求5所述的方法,其特征在于,所述第一设定值为各消息队列所对应的差值的最大公约数; 所述第二设定值为在满足得到的商值小于该消息队列对应的最大阈值减去存储的消息数量得到的差值时,各消息队列所对应的相对值的最大公约数。
7.如权利要求4所述的方法,其特征在于,根据以消息队列中存储的消息数量与该消息队列对应的最大阈值的比值为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值,包括 确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的最大阈值与存储的消息数量的差值,将各消息队列所对应的差值分别除以所对应的最大阈值得到的商值确定为各消息队列的权重值,以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权重值为零;若得到的商值为非整数,则对所述非整数的商值取整。
8.如权利要求I所述的方法,其特征在于,根据各消息队列分别对应的权重值,向所述各消息队列分发消息,包括 根据各消息队列分别对应的权重值,向所述各消息队列分发根据业务支撑运营系统BOSS的业务数据生成的业务事件消息或/和根据信令采集系统的信令数据生成的业务事件消息。
9.如权利要求I所述的方法,其特征在于,根据各消息队列分别对应的权重值,向所述各消息队列分发消息,包括 根据各消息队列分别对应的权重值,控制向各消息队列连续分发的消息数量等于所对应的权重值。
10.如权利要求9所述的方法,其特征在于,根据各消息队列分别对应的权重值,控制向各消息队列连续分发的消息数量等于所对应的权重值,包括 根据各消息队列分别对应的权重值,生成与每个消息队列分别对应的子链表,其中,所述与消息队列对应的子链表中的节点数目与所述消息队列对应的权重值相等;将每个消息队列分别对应的子链表首尾相连生成闭环链表;根据移动指针在所述闭环链表中所指示的节点,将消息分发到与所述节点所在的子链表对应的消息队列,并将所述移动指针移至当前所指示节点的下一节点;或 设置与所述消息队列数目相应的计数器,并设置各计数器的计数顺序,且根据各消息队列对应的权重值分别设置所对应的计数器的计数门限;在分发一个消息到消息队列后,更新与该消息队列对应的计数器的计数值,在该计数器的计数值达到所对应的计数门限后,将该计数器置位,并向当前计数器之后的计数器所对应的消息队列分发消息。
11.如权利要求I所述的方法,其特征在于,确定各消息队列分别对应的权重值后,还包括 确定对应的权重值低于第三设定值的消息队列; 确定对应的权重值不低于所述第三设定值的消息队列所对应的应用服务器,并指示确定出的所述应用服务器对所述对应的权重值低于第三设定值的消息队列中存储的信息进行处理。
12.如权利要求11所述的方法,其特征在于,确定对应的权重值不低于所述第三设定值的消息队列所对应的应用服务器,包括 确定对应的权重值不低于第四设定值的消息队列所对应的应用服务器,所述第四设定值大于所述第三设定值。
13.一种消息分发装置,其特征在于,包括 消息队列监控模块,用于确定各消息队列中分别存储的消息数量; 权重确定模块,用于根据所述消息队列监控模块确定的各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,所述权重值用于表示消息队列可连续接收的消息数量; 消息分发模块,用于根据所述权重确定模块确定的各消息队列分别对应的权重值,向所述各消息队列分发消息。
14.如权利要求13所述的装置,其特征在于,所述消息队列监控模块,具体用于 按照设定周期确定各消息队列中分别存储的消息数量。
15.如权利要求13所述的装置,其特征在于,所述权重确定模块,还用于 在根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值之前,确定所述各消息队列中存在存储的消息数量超过对应的最大阈值的消息队列。
16.如权利要求13所述的装置,其特征在于,所述权重确定模块,包括 第一权重确定子模块,用于在所述各消息队列分别对应的最大阈值相等时,根据以消息队列中存储的消息数量为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值; 第二权重确定子模块,用于在所述各消息队列分别对应的最大阈值至少存在两个不相等时,根据以消息队列中存储的消息数量与该消息队列对应的最大阈值的比值为自变量、以消息队列对应的权重值为因变量的递减函数关系,以及各消息队列分别存储的消息数量,确定各消息队列分别对应的权重值。
17.如权利要求16所述的装置,其特征在于,所述第一权重确定子模块,具体用于 确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的最大阈值与存储的消息数量的差值,将各消息队列所对应的差值分别除以第一设定值得到的商值确定为各消息队列的权重值,以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权重值为零;其中,所述第一设定值为大于零的数,并且若得到的商值为非整数,则对所述非整数的商值取整;或 确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的可接收消息数量的相对值,将各消息队列所对应的相对值分别除以第二设定值得到的商值确定为各消息队列的权重值,,以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权重值为零;其中,所述相对值根据各消息队列存储的消息数量之和与所述相对值对应的消息队列存储的消息数量的差值确定;所述第二设定值为大于零的数,并且若得到的商值为非整数,则对所述非整数的商值取整。
18.如权利要求16所述的装置,其特征在于,所述第二权重确定子模块,具体用于 确定存储的消息数量未达到所对应的最大阈值的各消息队列对应的最大阈值与存储的消息数量的差值,将各消息队列所对应的差值分别除以所对应的最大阈值得到的商值确定为各消息队列的权重值,以及,确定存储的消息数量达到所对应的最大阈值的各消息队列的权重值为零;若得到的商值为非整数,则对所述非整数的商值取整。
19.如权利要求13所述的装置,其特征在于,所述消息分发模块,具体用于 根据各消息队列分别对应的权重值,向所述各消息队列分发根据业务支撑运营系统BOSS的业务数据生成的业务事件消息或/和根据信令采集系统的信令数据生成的业务事件消息。
20.如权利要求13所述的装置,其特征在于,所述消息分发模块,具体用于根据各消息队列分别对应的权重值,控制向各消息队列连续分发的消息数量等于所对应的权重值。
21.如权利要求20所述的装置,其特征在于,所述消息分发模块,具体用于 根据各消息队列分别对应的权重值,生成与每个消息队列分别对应的子链表,其中,所述与消息队列对应的子链表中的节点数目与所述消息队列对应的权重值相等;将每个消息队列分别对应的子链表首尾相连生成闭环链表;根据移动指针在所述闭环链表中所指示的节点,将消息分发到与所述节点所在的子链表对应的消息队列,并将所述移动指针移至当前所指示节点的下一节点;或 设置与所述消息队列数目相应的计数器,并设置各计数器的计数顺序,且根据各消息队列对应的权重值分别设置所对应的计数器的计数门限;在分发一个消息到消息队列后,更新与该消息队列对应的计数器的计数值,在该计数器的计数值达到所对应的计数门限后,将该计数器置位,并向当前计数器之后的计数器所对应的消息队列分发消息。
22.如权利要求13所述的装置,其特征在于,还包括 调度模块,用于在所述权重确定模块确定各消息队列分别对应的权重值后,确定对应的权重值低于第三设定值的消息队列,并确定对应的权重值不低于所述第三设定值的消息队列所对应的应用服务器,并指示确定出的所述应用服务器对所述对应的权重值低于第三设定值的消息队列中存储的信息进行处理。
23.如权利要求22所述的装置,其特征在于,所述调度模块,具体用于 确定对应的权重值不低于第四设定值的消息队列所对应的应用服务器,所述第四设定值大于所述第三设定值。
全文摘要
本发明公开了一种消息分发方法以及消息分发装置,其中,消息分发方法包括确定各消息队列中分别存储的消息数量;根据各消息队列中分别存储的消息数量,确定各消息队列分别对应的权重值,所述权重值用于表示消息队列可连续接收的消息数量;根据各消息队列分别对应的权重值,向所述各消息队列分发消息。根据该技术方案,可以根据每个消息队列已存储的消息数量,确定向每个消息队列可连续分配消息的消息数量,即以消息队列实际的存储消息数量为依据确定向各个消息队列分发消息的数量,从而能够减少消息队列中大量消息的积压,提高对消息处理的及时性。
文档编号H04W4/12GK102761832SQ20111011016
公开日2012年10月31日 申请日期2011年4月28日 优先权日2011年4月28日
发明者崔洪涛, 盛强, 邵杰, 郭强 申请人:中国移动通信集团河南有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1