具有层次拓扑结构的消息中间件系统及消息传递方法

文档序号:6451393阅读:196来源:国知局
专利名称:具有层次拓扑结构的消息中间件系统及消息传递方法
技术领域
本发明涉及一种具有层次拓扑结构的消息中间件系统及消息传递方法,特别是指一种采用层次拓扑方案,将消息中间件通过域来划分和管理,实现基于消息中间件的消息动态路由的系统及其传递方法,属于计算机网络及信息中间件技术。
背景技术
随着网络和信息技术的高速发展,分布式信息系统的应用日趋广泛,消息中间件作为解决复杂的大型分布式系统各个组成部分之间通信以及多个分布式系统之间通信问题的关键技术也越来越重要。
目前,分布式信息系统的规模越来越庞大,复杂程度也越来越高。有的行业,如银行、邮政等,其信息系统在地理上分布广泛,可以大到全国各个省市。这就要求信息系统的消息中间件必须具备极高的可扩展性,并能适应复杂的网络环境。
现有技术中,解决消息中间件扩展性的技术主要是集群技术,目前的消息中间件所应用的集群技术都是无层次对等的集群方式。如图1所示消息中间件的集群方式是无层次的、对等的,客户端固定连接到某个消息中间件上;消息路由采用直接跳转式,即消息会从发送客户端所关联的消息中间件上直接发送到接收客户端所关联的消息中间件上,如从客户端A到客户端B的消息的路由路径是客户端A→中间件1→中间件4→客户端B。这种集群方式具备一定的优点,那就是结构简单,实现起来比较容易,也比较易于部署和管理,比较适合于小型应用。但这种结构典型缺点是(1)不适合于大型应用,这是它的一个致命缺点,当系统复杂度达到一定程度时,过多的结点会导致整个系统难于管理,并造成性能急剧下降,如果系统中有n个结点,对于每个消息中间件需要管理的连接数为n-1个,对于整个系统需要维护的关系为n(n-1)/2。(2)消息中间件消息路由的路径唯一性,由于采用直接跳转式路由,并且客户端都固定连接在某个消息中间件上,所以造成了消息中间件的消息路由的路径唯一性,无论中间网络出现问题或消息中间件本身出现问题,都会造成消息不能顺利传送到目的地,当系统部署在不太稳定的广域网络上,网络情况尤其复杂,这种集群方式的消息中间件就更难保证消息的可靠传输。

发明内容
本发明的主要目的在于提供一种具有层次拓扑结构的消息中间件及消息传递方法,解决分布式信息系统在复杂网络下的数据的可靠性传输问题,保证消息在网络不稳定情况下的可靠和高效传输。
本发明的另一目的在于提供一种具有层次拓扑结构的消息中间件及消息传递方法,消息中间件通过具有层次的集群方式进行组织,确保分布式信息系统的可管理性和性能的稳定。
本发明的又一目的在于提供一种具有层次拓扑结构的消息中间件及消息传递方法,提高分布式信息系统的可扩展性,当系统负载增加时,通过增加域的方式实现系统的扩展。
本发明的目的是这样实现的一种具有层次拓扑结构的消息中间件系统,该系统中的所有消息中间件分为一个以上的域;每个域至少具有一个消息中间件和一个桥中间件;客户端通过消息中间件在其所在的域内传递消息,或者进一步通过桥中间件并与其他域的客户端传递消息。
上述处于同一个域中的所有消息中间件通过对等方式相互传递消息;不同域中的消息中间件分别与各自所在域中的桥中间件通信,不同域中的桥中间件通过对等方式相互通信。
所述的消息中间件中保存有全局同步的路由表,该路由表至少记录有消息的路由地址,且该路由表由各个域的桥中间件进行同步。
所述的路由地址用于唯一标识结点在网络中的位置,至少记录有客户端的标识信息、消息中间件的标识信息和域的标识信息。
所述的域与稳定分布的局域网一一对应,各域之间通过广域网连接。
具有层次拓扑结构的消息中间件系统的消息传递方法,具体包括如下处理步骤步骤1消息中间件从待发的消息队列中取出消息进行分析;步骤2如果该消息发送给在本域中注册的客户端;则将该消息发送给相应的客户端;步骤3如果发送给在本域外注册的客户端,将该消息发送给本域的桥中间件,由该桥中间件转发。
上述步骤2具体包括步骤21消息中间件从待处理消息队列中取出消息并对其是否来自注册客户端进行判断;步骤22如果是,则修改目标地址与客户端的对应表,并同步该消息中间件中路由表的目标地址与客户端的对应表,结束;步骤23如果不是,则进一步判断是否发送该消息,如果发送,则将该消息写入相应的主题,并将该消息发送给相应的订阅者,结束;步骤24如果不发送,则放弃该消息,并结束。
上述步骤3所述的桥中间件转发消息的步骤具体包括步骤31接收消息并对该消息进行分析;步骤32如果该消息的目标地址在本域,则直接将该消息发送到指定的消息中间件;步骤33;如果该消息的目标地址不在本域,则查找与桥中间件的对应表,并将消息发送给相应的桥中间件。
与现有技术相比,本发明有明显的优点和积极效果。通过消息中间件系统的层次性结构,解决了分布式信息系统在复杂网络下数据可靠性传输问题,保证了系统的高扩展性和消息在网络不稳定的情况下的可靠和高效传输。(1)层次性拓扑结构,通过层次性结构保证系统的高扩展性,当系统负载增加时,可通过增加域来实现系统的扩展,同时又不会增加单个域的复杂度,保证了系统的可管理性,同时有不会损失系统性能;(2)把所有消息中间件划分为域,通过域划分,可以将问题屏蔽在一定范围内,一个域中出现问题不会扩展到其他域里,同时增加整个消息中间件集群的易管理性,当网络情况非常复杂,系统结点非常多时,这种优点将更明显;(3)动态路由,通过动态路由可保证在网络出现问题或消息中间件某个结点出现问题时仍然能够保证消息的可靠送达;(4)实现负载均衡,当系统中某个消息中间件结点负载过大时,可以通过动态路由的机制将消息通过其它路径传输。


图1为消息中间件无层次对等群集示意图;图2为本发明的消息中间件层次集群结构示意图;图3为本发明消息中间件向外发送消息流程图;图4为本发明消息中间件接收、发送消息的实施流程图;图5为消息中间件业务逻辑层处理消息流程图。
图6为本发明的消息传递中请求--应答式的动态路由实现方法;图7为本发明的消息传递中发布--订阅式的动态路由实现方法;图8为本发明的消息传递中代理—代理的动态路由实现方法。
具体实施例方式
以下结合附图和具体的实施例对本发明作进一步的详细说明参阅图2,本发明的消息中间件系统采用层次性拓扑结构,采用域作为消息中间件集群的管理单位,具体是将整个消息中间件划分为多个域,每个域由一个以上消息中间件和一个桥中间件组成,客户代理通过消息中间件通信,它负责与消息中间件的客户代理通信,桥中间件负责域之间的通信,每个域为一个网段,不同的域相互连接通信,构成广域网。单个域一般部署在稳定的局域网上,至少部署在一个局域网上,也可以跨局域网,不同的域之间通过广域网来连接,通过这种连接结构可以将网络的不稳定性屏蔽和限制在一定范围内,便于容错处理。当系统负载增加时,可通过增加域来实现系统的扩展,同时又不会增加单个域的复杂度,从而保证了系统的可管理性,同时又不会损失系统性能,使域内具有较高的可扩展性。
在上述的各消息中间件中都保存有路由表,该路由表全局同步,且这个同步具体通过桥中间件实现,消息路由基于消息的地址,具有全局地址形式,可以唯一标识结点在网络中的位置,该地址中至少包括有代理的标识信息、消息中间件的标识信息和域的标识信息。例如本发明的一个实施例的消息地址可以通过如下的格式建立ProxyID@RouterID@DomainID其中,ProxyID为代理标识,RouterID为消息中间件标识,DomainID域标识,@为各个信息之间的分隔符号。
本发明动态路由是这样实现的在桥中间件之间实行全路由,即桥中间件以对等方式连接,如果一桥中间件与另一桥中间件之间的某一条路径不通,消息依然可以可经过该桥中间件与另一桥中间件之间其他路径进行传送。例如桥中间件A发送消息给桥中间件B,如果桥中间件A与桥中间件B之间的通路出现问题,消息将经桥中间件C传送给桥中间件B。因此,本发明通过客户端关联到域上而不是某个消息中间件上,从而为消息发送到客户端提供了多条路径。通过以上两点的结合,本发明实现了消息传递的动态路由。
以下是本发明的一个实施例中动态路由的实现过程。如果客户端A要发送消息给客户端F,那么可能的路径将有下面几条(1)客户端A→消息中间件1→桥中间件A→桥中间件C→消息中间件5→客户端F;(2)客户端A→消息中间件1→桥中间件A→桥中间件C→消息中间件6→客户端F;(3)客户端A→消息中间件2→桥中间件A→桥中间件C→消息中间件5→客户端F;(4)客户端A→消息中间件2→桥中间件A→桥中间件C→消息中间件6→客户端F;(5)客户端A→消息中间件1→桥中间件A→桥中间件B→桥中间件C→消息中间件5→客户端F;(6)客户端A→消息中间件1→桥中间件A→桥中间件B→桥中间件C→消息中间件6→客户端F;(7)客户端A→消息中间件2→桥中间件A→桥中间件B→桥中间件C→消息中间件5→客户端F;(8)客户端A→消息中间件2→桥中间件A→桥中间件B→桥中间件C→消息中间件6→客户端F。
参见图3,其为消息中间件向外发送消息的流程。发送消息的消息中间件从待发消息队列中取消息,并对该消息的发送对象进行判断,如果是发送给在本域中注册的客户端,则直接发送给相应的客户端,否则,该消息中间件将待发的消息发送给本域的桥中间件。
参见图4,其为消息中间件业务逻辑层处理消息流程图,消息中间件从待处理的消息队列中取得消息,然后判断消息是否来自注册的客户端,如果是,则修改目标地址与客户端的对应表,同步消息中间件中的目的或目标地址与客户端的对应表,并进行相应的同步处理;如果不是,则进一步判断是否是客户端发布消息,是则将消息写入相应的主题,并发送消息给所有的订阅者,否则放弃结束。
参见图5,本发明的系统中,桥中间件处理其所接收的消息的过程是桥中间件接收到消息后判断该消息是否是发送给其所在域的消息,如果是,则将该消息发送给其目标字段(“TO”)所指定的消息中间件;否则,该桥中间件查找与该桥中间件对应的路由表,并将该消息发送给相应的桥中间件。
本发明的消息传递的一个实施例参见图6,这是一种请求--应答式的动态路由实现方法,其处理过程是提供应答服务的客户端即代理向默认的消息中间件注册,并与目的或目标地址(Destination)建立关联,判断收到的消息是否为请求消息,当为请求消息时,接着判断是否来自关联客户,如是,则请求客户端通过关联的消息中间件向特定的目标地址(Destination)提交申请,该关联的消息中间件查找自己的目标地址(Destination)与应答客户端的对应表,然后把该消息的目的字段(“TO”)设置成为接收客户端的地址值,并把源字段(“From”)设置为请求客户端的地址,此时,或者当判断收到的消息不是请求消息,而是应答消息时,判断是否发送给注册到本域的客户端,如是,则将此收到的消息发送给消息目的字段(“TO”)中指定的客户端,此消息的传递结束;当判断不发送给注册到本域的客户端时,将此消息发送给本域的桥中间件,则此消息的传递结束;若收到的消息既不是请求消息,也不是应答消息,该消息的传递过程结束。
本发明的消息传递的另一个实施例参见图7,为一种消息发布--订阅式的动态路由实现方法,其处理过程是发布代理注册到消息中间件,并与目标地址(Destination)建立关联,判断接收到的消息是否为发布消息,当该消息为发布消息且来自关联客户端时,订阅代理查阅目标地址(Destination)订阅表,将消息目的或目标地址设置为订阅者地址,然后,或者在该接收的消息是发布消息但不是来自关联客户端的消息时,判断是否发送给注册到本域的客户端,如是,发送给消息目的字段(“TO”)中指定的客户端,则此消息的传递过程结束;或接收到的消息是订阅消息时,将消息的源字段(“From”)地址加到目标地址(Destination)订阅表中,此消息的传递过程结束;若此接收的消息既不是发布消息,也不是订阅消息时,此消息的传递过程结束。
本发明消息传递的又一个实施例参见图8,一种代理—代理的动态路由实现方法,其处理过程是接受消息的代理向关联的消息中间件注册,并与目标地址(Destination)建立关联,判断该消息是否来自关联客户端,如是,则查找目标地址(Destination)注册表,设置消息的目的字段(“TO”)为接收客户端的地址,并设置源字段(“FROM”)为发送客户端的地址,然后,或者在接收的消息不是来自关联客户端时,判断是否发送给注册到本域的客户端,若发送给注册到本域的客户端,则把此消息发给目的字段(“TO”)中指定的客户端,则此消息传递过程结束;若不是发送给注册到本域的客户端,则将此消息发送给本域的桥中间件,结束消息的传递过程。
最后应说明的是以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或者等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种具有层次拓扑结构的消息中间件系统,其特征在于该系统中的所有消息中间件分为一个以上的域;每个域至少具有一个消息中间件和一个桥中间件;客户端通过消息中间件在其所在的域内传递消息,或者进一步通过桥中间件并与其他域的客户端传递消息。
2.根据权利要求1所述的具有层次拓扑结构的消息中间件系统,其特征在于处于同一个域中的所有消息中间件通过对等方式相互传递消息。
3.根据权利要求1所述的具有层次拓扑结构的消息中间件系统,其特征在于不同域中的消息中间件分别与各自所在域中的桥中间件通信,不同域中的桥中间件通过对等方式相互通信。
4.根据权利要求1或2或3所述的具有层次拓扑结构的消息中间件系统,其特征在于所述的消息中间件中保存有全局同步的路由表,该路由表至少记录有消息的路由地址,且该路由表由各个域的桥中间件进行同步。
5.根据权利要求4所述的具有层次拓扑结构的消息中间件系统,其特征在于所述的路由地址用于唯一标识结点在网络中的位置,至少记录有客户端的标识信息、消息中间件的标识信息和域的标识信息。
6.根据权利要求1所述的具有层次拓扑结构的消息中间件系统,其特征在于所述的域与稳定分布的局域网一一对应,各域之间通过广域网连接。
7.一种基于权利要求1-6任一系统的消息传递方法,其特征在于该方法具体包括如下处理步骤步骤1消息中间件从待发的消息队列中取出消息进行分析;步骤2如果该消息发送给在本域中注册的客户端,则将该消息发送给相应的客户端;步骤3如果发送给在本域外注册的客户端,则将该消息发送给本域的桥中间件,由该桥中间件转发。
8.根据权利要求7所述的消息传递方法,其特征在于所述的步骤2具体包括步骤21消息中间件从待处理消息队列中取出消息并对其是否来自注册客户端进行判断;步骤22如果是,则修改目标地址与客户端的对应表,并同步该消息中间件中路由表的目标地址与客户端的对应表,结束;步骤23如果不是,则进一步判断是否发送该消息,如果发送,则将该消息写入相应的主题,并将该消息发送给相应的订阅者,结束;步骤24如果不发送,则放弃该消息,并结束。
9.根据权利要求7所述的消息传递方法,其特征在于桥中间件转发消息的步骤包括步骤31接收消息并对该消息进行分析;步骤32如果该消息的目标地址在本域,则直接将该消息发送到指定的消息中间件;步骤33;如果该消息的目标地址不在本域,则查找与桥中间件的对应表,并将消息发送给相应的桥中间件。
全文摘要
本发明是一种具有层次拓扑结构的消息中间件系统及传送消息的方法,该系统中的所有消息中间件分为一个以上的域;每个域至少具有一个消息中间件和一个桥中间件;客户端通过消息中间件在其所在的域内传递消息,或者进一步通过桥中间件并与其他域的客户端传递消息。消息传递方法具体包括消息中间件从待发的消息队列中取出消息进行分析,如果该消息发送给在本域中注册的客户端,则将该消息发送给相应的客户端,如果发送给在本域外注册的客户端,则将该消息发送给本域的桥中间件,由该桥中间件转发。实现了动态路由和负载均衡,解决了分布式信息系统在复杂网络下数据可靠性传输问题,保证了系统高扩展性和消息在网络不稳定情况下的可靠和高效传输。
文档编号G06F13/00GK1538316SQ0312189
公开日2004年10月20日 申请日期2003年4月17日 优先权日2003年4月17日
发明者侯庆刚, 石东海, 黄晓昱, 秦娟, 朱辉 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1