CN102355413A - 一种大规模实时统一消息空间的方法及其系统 - Google Patents
一种大规模实时统一消息空间的方法及其系统 Download PDFInfo
- Publication number
- CN102355413A CN102355413A CN2011102486538A CN201110248653A CN102355413A CN 102355413 A CN102355413 A CN 102355413A CN 2011102486538 A CN2011102486538 A CN 2011102486538A CN 201110248653 A CN201110248653 A CN 201110248653A CN 102355413 A CN102355413 A CN 102355413A
- Authority
- CN
- China
- Prior art keywords
- cluster
- subscription
- representative
- agency
- notice
- 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
Links
Images
Abstract
本发明公开了一种大规模实时统一消息空间的方法及其系统,该系统基于集群技术,具有自配置能力和负载均衡的发布/订阅功能,该系统建立在以集群为单位的系统架构上,集群架构将参与发布/订阅的代理主机划分在一个个集群之中,集群之间组织成树的形式进行管理,并通过集群的代表进行交互。系统包括客户端、路由模块、数据模块和管理者模块。其中路由模块负责管理路由信息,维护订阅表;数据模块负责接收来自客户端的订阅和通知,并进行消息的发送和接收;管理者模块负责维护由集群形成的树状拓扑。利用本发明能够实现订阅和通知的高效路由,具有配置简单、可扩展性强以及负载均衡等优点。
Description
技术领域
本发明涉及互联网信息发布/订阅系统中如何组织参与实体和维护拓扑的技术以及订阅和通知的路由技术,尤其涉及一种大规模实时统一消息空间的方法及其系统,属于事件驱动系统技术领域。
背景技术
网络对现代计算机系统的发展的影响越来越大,但是网络互连系统日渐增加的连通性和规模也带来了一系列的问题。就建立和维护这些系统而言,一个关键而又基本的要求是要有可扩展的通信机制。这种机制不仅需要可以支持大量的组件,还要有能力面对动态的且经常发生变化的复杂的应用环境。另外一个需要考虑的重要方面是数据处理的自动化。传统上的系统一般被设计成用来响应用户交互式的要求,而为了改善系统的功能性和实用性,就应该提供更为自主的数据处理能力。
“中间件”的引入,方便了那些处在异构网络的分布计算环境中的实体之间的通信。中间件是额外添加的一个位于各个节点的操作系统和一个分布式应用软件之间的一层软件。它的作用在于处理通信上的问题和试图给具体应用展现一个统一的关于底层世界的视图。因此,中间件技术被广泛运用,并且被证明为是对异构环境的一种成功的抽象,这就方便了人们设计和实现复杂的分布式系统。在处理数据和服务的传递时,那些动态的联网环境的变化性和数据交换的自动化把人们的注意力从一个静态的世界转到一个处在多变状态的世界中。习惯上,中间件把数据和服务看成是静态地存在于一些对象或者数据库中,并且使用直接针对它们的“请求/应答”的交互模式来查询。这个概念导致客户机/服务器(C/S)中间件架构的产生,这种架构强调功能上的显示授权,系统的组件通过访问远程功能来满足它们的需要,远程过程调用协议(RPC)和使用简单对象访问协议(SOAP)发送请求的Web Service即是其中的例子。
然而,在动态的联网系统中,“请求/应答”的通信模式存在严重的束缚。客户端和服务器端之间直接的并且经常的同步通信给双方造成了紧密的耦合度,并且削弱了伸缩性。客户端轮询远端的数据源,他们就得用资源的使用来交换数据的正确性。短的轮询间隔带来的不必要的请求会浪费资源,而长的间隔会增加更新的延迟。另外,“请求/应答”约束了系统的发展。控制流被编码在应用组件当中,这样做虽然方便工程师使用,却也把系统的实际配置和各个组件的应用逻辑混杂在一起。因此,通过在运行时调整应用组件来协调整个系统的能力受到了限制,结果,授权方法不可避免地意味着是对所使用的服务及其存在的一种功能依赖。
在基于事件的交互模式下,组件通过产生和接受事件通知来通信,其中事件是任意感兴趣的发生的事,比如某个组件的状态改变,被影响的组件发布通知描述事件。一个事件通知服务或者说“发布/订阅”中间件调解基于事件系统中的组件,并且把通知从生产者(发布者)传递到先前发布订阅注册他们兴趣的消费者(订阅者)。
基于事件的体系结构风格的强大之处在于,发布出来的通知和订阅都没有直接针对特定的组件。这种通知服务对组件进行了解耦,于是生产者无需知道任何消费者,而消费者只是依赖发布的信息,而不关心它是由谁或者从哪里发布的。基于事件的组件不是设计用来和别的某些组件一道工作,这样就利于把通信从计算分离。基于事件的风格具有整合自主异构组件到复杂系统中的潜力,而这样的系统易于进化和扩展。
发明内容
有鉴于此,本发明的主要目的在于提供一种大规模实时统一消息空间的方法及其系统,用于解决集群架构的发布/订阅系统中,当节点失效时如何保证其他节点正常运行,以及通过设计合适的路由算法减轻根节点负担的问题。
为达到上述目的,本发明的技术方案是这样实现的:
一种大规模实时统一消息空间的系统,该系统包括:客户端、发布/订阅代理模块、集群代表、管理者和树状拓扑;其中:
客户端,用于向发布/订阅模块发送订阅消息和通知消息,即参与发布/订阅的用户;客户端通过JMS和发布/订阅模块相连,发送基于主题的订阅或者基于主题的通知,这些消息的格式必须符合WSN标准,以便发布/订阅模块进行处理;
发布/订阅代理模块是该系统的核心部分,其进一步分为两个模块,分别为数据模块和路由模块;所述数据模块用于和客户端交互,而路由模块负责和其他代理交互;
集群代表是对代理进行组织的一种方法,它把位于同一个局域网内的代理组成一个集群,集群内部的代理通过组播的形式进行通信;集群中有一个代理作为集群的代表和别的集群进行通信;集群的代表是自动选择的,当代表掉线之时,代理之间可以通过“心跳”检测发现代表丢失,并使用重选的机制保证集群内产生一个新的代表;
管理者负责记录集群的信息;当有集群产生时,集群会向管理者发送注册请求,管理者便在此时记录下该集群的信息;同时当集群变换代表时,管理者也会收到相应的更改消息,并做出相应的修改;管理者的另外一个作用是标志当前的根节点,以便新集群加入到拓扑之中;
树状拓扑的,用于维护集群的组织和订阅的转发功能;管理者将集群组织成树的形式,每当有集群产生时,便返回根节点供其插入;当有集群丢失时,该节点的父节点和孩子节点会进行相应的处理,保证集群都处在同一课树中;集群之间转发订阅消息,便通过将订阅发送给自己的父节点和孩子节点,并由他们继续传播,直到每个集群都收到。
其中,所述数据模块是基于ServiceMix的WSN组件构造的,它其负责接收处理来自客户端的订阅和通知消息,所述WSN组件用于处理本地的发布/订阅请求,同时数据模块将这些消息转交给路由模块,并接收由路由模块发来的通知,将其转发给相应的客户端;所述路由模块负责把获取的订阅信息记录到订阅表,维护和本代理相连的代理的信息,并将订阅和通知转发给其他代理,当有通知匹配本地的订阅时转交给数据模块。
其中,所述集群中的代理位于同一个局域网内,并由一个代理作为代表和别的集群通信;该集群中的代理通过“心跳”检测来发现对方是否掉线,如果代表掉线,则启动一个重选代表的操作。
所述管理者独立于各个集群,负责接收集群的注册消息并维护集群的基本信息以及标识根节点;同时,在集群需要加入时返回根节点的地址;而当集群代表改变时,根据该集群发送的消息更新本地的信息。
所述树状拓扑,它既是把多个集群联系在一起的结构,也是订阅信息转发的路径;该拓扑具有自配置的能力,即由节点丢失时,能够保证该节点的子节点重新加入到拓扑中。
一种大规模实时统一消息空间的方法,该方法包括:
A、对参与发布/订阅的代理按所处的局域网进行划分,将处在同一网络中的代理主机划分成一个个集群,并为集群取名,集群内的代理通过组播的方式进行订阅和通知的转发,集群之间通过集群代表进行通信,并构成一棵树的拓扑形式,集群之间的转发订阅则通过这棵树来进行,而转发通知则根据通知的转发树进行,并由一个独立的管理者进行集群信息的维护;
B、当集群中的代表丢失,则启动重选的机制从剩下的代理中选一个新代表;如果新代表无法选出,则意味着该集群整体丢失,这会破坏树的拓扑结构,于是要对失效节点的孩子节点进行处理,使其能够重新加入到拓扑中;
C、当客户端有订阅产生时,它把订阅交给和自己相连的代理,代理收到订阅后先保存在本地,再在集群中组播,其他代理收到后也保存起来;当代表收到订阅消息后则通过当前的树状拓扑将之转发给自己的邻居集群,邻居集群再转发给它的邻居集群直至所有集群都保存有别的集群的订阅信息;集群代表收到来自别的集群的订阅将之在集群中组播;
D、当客户端有通知产生时,它把通知交给和自己相连的代理,代理收到通知后检查订阅表看是否有该通知的订阅,如有则在集群中组播;集群中其他代理收到通知后查看订阅表,如有订阅则转发给相应的客户端,若是集群代表,则还要查看别的集群是否有此通知的订阅,如有,则为该通知的订阅者构造一棵以自己为根的转发树并将通知转发出去。
其包含基于负载均衡的通知的路由算法,具体为:通知不基于树状拓扑进行转发,而是根据订阅者的信息为每个主题的通知构造一个转发树,只把通知转发给转发树中属于自己的孩子节点,再由孩子节点转发给他们的孩子节点,直至所有订阅者都收到该通知。
本发明所提供的大规模实时统一消息空间的方法及其系统,具有以下优点:
利用本发明的系统结构,能够解决当当节点失效时如何保证其他节点正常运行的问题的解决办法,以及设计了合适的路由算法减轻根节点的负载问题,能够实现订阅和通知的高效的路由,具有配置简单、可扩展性强以及负载均衡等优点。
附图说明
图1为本发明实时统一消息空间系统的集群架构示意图;
图2为本发明实时统一消息空间系统的模块划分示意图;
图3为所述集群内部代理主机之间的拓扑结构图;
图4为代理主机启动时的基本流程图;
图5为“心跳”检测模块的结构示意图;
图6为集群内部普通代理丢失时的处理流程图;
图7为集群的代表主机丢失时的流程图;
图8为一个新的集群加入到已有拓扑的过程示意图;
图9为邻居集群心跳停止时的处理流程图;
图10~图12为订阅的路由示意图;
图13~图14为通知的路由示意图。
具体实施方式
下面结合附图及本发明的实施例对本发明的方法及系统作进一步详细的说明。
本发明的基本思想是:将网络中的代理主机划分成一个个集群,集群内的代理通过组播的方式进行订阅和通知的转发,集群之间通过集群代表进行通信,并构成一棵树的拓扑形式,集群之间的转发订阅则通过这棵树来进行,而转发通知则根据通知的转发树进行,并由一个独立的管理者进行集群信息的维护。
图1为本发明实时统一消息空间系统的集群架构示意图,如图1所示的本发明的系统的总体结构。
这里,首先对本发明的原理做一概括阐述。客户端与代理通过JMS(Java Messaging Service)相连,通过代理进行发布/订阅的操作;而处在同一个局域网的代理组成一个集群,并选择一个代理作为集群的代表,各个代理之间通过组播相互通信;集群之间通过代表用点对点的方式进行通信;管理者维护集群的基本信息,并引导集群形成一棵树,即每当有新的节点要求加入时返回根节点供其请求插入,管理者维护这棵树的信息。
图2为本发明实时统一消息空间系统的模块划分示意图,如图2所示,代理的职责主要是处理来自客户端的订阅请求和发布请求,以及接收并处理由其他代理转发过来的订阅和通知消息;所述代理根据消息的类型进行相关的操作,包括保存订阅信息,转发通知,通知客户端等。于是,本发明的实时统一消息空间系统可分为两个模块:数据模块和路由模块。其中:
所述数据模块使用到了开源项目ServiceMix的WSN组件(WSN为基于主题的发布/订阅的一个标准,ServiceMix中的WSN组件实现了该标准的发布/订阅功能);客户端通过JMS和Web服务通知(WSN)建立连接,并通过JMS将订阅请求和发布请求告诉系统,当系统收到与客户端的订阅匹配的通知时,也是通过JMS将通知交给客户端;数据模块还负责订阅消息和通知消息的发送与接收。
所述路由模块主要通过表的形式维护系统接收到的订阅信息(无论是来自客户端的还是来自别的代理的),并在系统收到通知时(无论是客户端发布的还是来自别的代理的)根据订阅表路由这些通知。该路由模块还有一个“心跳检测”子模块,它的功能在于通过发送“心跳”消息来检测和自己相连的代理是否还存在,并根据存在与否进行相关的处理;订阅表子模块通过JDBC和数据库相连,完成订阅信息的持久化。
图3为所述集群内部代理主机之间的拓扑结构图,如图3所示,处在同一个局域网的代理可以组成一个集群或多个集群,但某一时刻一个代理只能处在一个集群之中,集群应有一个名字用以标识自己。集群通过代理和别的集群进行通信,即集群可以抽象为一个代理主机,而这个主机就是集群的代表,于是代表必须维护当前集群中其他代理的信息,这通过发送“心跳”消息来实现,即普通代理向代表定时发送“心跳”消息以表明自己的存在,代表也向其他代理定时发送“心跳”消息以表明自己的存在。于是从代表管理集群内部代理的角度看,这是一个星型的拓扑。
图4为代理主机启动时的基本流程图,如图4所示,当代理启动时,通过默认的组播地址在局域网中组播加入请求,这个请求应该包含它所要加入的集群的名字,然后等待响应。当有代表收到加入请求时,它首先对请求中的名字和自己的名字进行匹配,若两者一致且允许加入(即当前集群内的代理数量尚未超过预设的值),则记录该新代理的信息,再为其分配一个唯一的ID值,并返回加入成功的响应消息,该消息应包括新代理的ID和已存在的代理的ID,同时发送消息通知别的代理记录新代理的ID值。若新代理收到响应消息,则解析该消息,若为加入成功,则记下ID值,完成加入的操作;若不成功,则应该换一个集群然后执行加入操作,或者等待一段时间后再加入。若新代理超时未收到响应消息,则可认为局域网内没有该名字的集群,于是它应该向管理者发送创建集群的消息。管理者收到集群的创建消息时,解析出新集群的名字,并根据已有的集群信息查询是否已存在这样的集群名,若无,则记录下该集群的信息并返回创建成功的响应消息;若有,则返回集群名已存在的响应消息。代理收到响应消息时,解析其内容,如果加入成功,则加入完成,同时自己为新集群的代表;如果不成功,则更改名字再次发送加入请求。
图5为“心跳”检测模块的结构示意图,如图5所示,“心跳”检测模块是本发明系统的重要组成部分,系统要求在逻辑上相邻的代理之间通过发送“心跳”消息来告诉对方自己是否失效,当失效时进行相应的处理,从而维护整个系统的结构。其中,还包括一张“心跳”信息表,一个发送线程,一个接收线程,一个扫描线程和一个失效处理过程。“心跳”信息表用来保存系统接收到的“心跳”信息——每收到一条“心跳”消息即更新相应的表项;对于普通的代理,它的“心跳”信息表只需保存集群代表的“心跳”信息,而集群代表的“心跳”信息表则需要保存集群内部其他代理的“心跳”信息和相邻集群的代表的“心跳”信息。发送线程定时发送“心跳”消息,而扫描线程则定时扫描“心跳”信息表,当发现某个“心跳”超时时,则要对该代理进行失效处理。
图6为集群内部普通代理丢失时的处理流程图,如图6所示,当集群内的普通代理掉线时,集群代表将其从“心跳”信息表中删除,表明该代理已不存在,然后删除之前记录下的关于该主机的信息,如果该主机有订阅也一并删除,同时通知集群内的别的代理删除其订阅,若删除订阅导致某个主题的订阅者为空,代表则需要通知邻居集群删除本集群关于该主题的订阅。
图7为集群的代表主机丢失时的流程图,如图7所示,本发明的系统配特点还体现在当集群内的代表掉线时,其他代理可以启动一个重选的机制来保证集群之中总是拥有一个代表;并且,当集群丢失时,它的孩子集群可以通过加入的操作来重新加入到拓扑中,保证正常的运行。
当集群内的代表掉线时,则需要为集群重选一个代表。首先,集群内的其他代理删除代表的订阅信息,然后将本代理的ID和集群内其他代理的ID进行比较,如果本代理的ID值是最小的,则它将作为新的集群代表,新代表确认后在集群中组播“心跳”消息,并恢复订阅表,然后通知管理者和邻居集群本集群的代表已变更,要求它们更新集群信息;如果本代理的ID值不是最小的,它应该等待新代表的“心跳”消息,若超时未收到,则删除当前最小的ID值并重新进行比较,若收到则意味着新代表已选出,完成重选。
图8为一个新的集群加入到已有拓扑的过程示意图,如图8所示,新集群产生时,它需要加入到已存在的拓扑之中,即它应该在树中找到一个节点并插入。如前所述,管理者会为新集群返回创建成功的消息,这条消息应该包括当前根节点的地址,若当前没有其他集群,根节点的地址设为空,并标识该新集群为根节点。新集群收到该消息时解析出根节点的地址,若根节点地址为空,则说明自己是当前拓扑中唯一的节点,于是无需做任何操作;若根节点不为空,则将它设为目标节点,并发送插入请求,然后等待响应。目标节点收到插入请求后检查当前的孩子数量是否超过预设值,若未超过,则返回插入成功的响应;若已超过,则返回其中一个孩子节点的地址供其继续插入。新集群收到响应时判断是否插入成功,若成功则将该目标节点设为自己的父节点;若不成功,则将返回的孩子节点设为目标节点再发送插入请求。
图9为邻居集群心跳停止时的处理流程图,如图9所示,当发现某个集群的“心跳”信息超时时,应该启动一个计时器等待对方重选代表。如果代表重选成功,本集群会再次收到它的“心跳”消息;如果计时器超时未收到“心跳”消息,则可认为该集群丢失了。当集群丢失时,首先应该取消该集群的订阅,并在树中转发这个消息;然后判断本集群丢失的集群是否为自己的孩子节点,若是,则发送消息通知管理者该节点已丢失,管理者收到该消息则删除相应的集群信息;若不是自己的孩子节点,则进一步判断该丢失集群是否为根节点,若否,则使用图8所示的加入方法重新加入拓扑;若根节点,则要发送消息通知管理者根节点丢失了,管理者因此会收到根节点的孩子节点的消息,于是管理者把最先达到的该消息的发送者定为新的根节点并返回响应,而对后到的发送者则返回新的根节点的地址供其插入。
图10~图12为订阅的路由示意图。订阅信息是以订阅表的形式保存的,每个节点根据自己的角色维护不同的订阅表,但总的来说订阅表有三种:客户端的订阅表(clients_table)、代理的订阅表(brokers_table)和集群的订阅表(groups_table)。
其中,普通的代理维护前两种订阅表,而集群代表则三种订阅表都要维护。这三种订阅表记录的内容顾名思义,下面举例说明当客户端有订阅产生时,订阅的路由和各订阅表的变化。假设当前的拓扑中有4个集群,分别为“集群a”、“集群b”、“集群c”和“集群d”,如图10所示,其中“集群c”为根节点,“集群a”有3个代理,“集群b”有两个代理,“集群c”和“集群d”都只有一个代理,每个代理都和一个客户端相连(代表的客户端未画出)。开始时,所有订阅表都为空,此时,“集群a”的“客户端1”向它的代理提交了主题为x的订阅,“集群a”的代理“代理1”收到该订阅消息之后将它记录到自己的clients_table之中,并在集群内组播这条订阅消息;“集群a”的“代理2”和“代理3”收到该订阅消息时,将它记录到各自的brokers_table中;因为“代理3”是集群的代表,所以它还要把该订阅转发到邻居集群中去;于是“集群c”的代表会收到该订阅,它把该订阅记录到它的groups_table中,再将之转发到邻居;同样的,“集群b”和“集群d”都会收到并记录;当“集群b”的代表收到订阅时,将它在集群中组播,那么“集群b”的“代理1”会收到该订阅并进行记录。一次订阅传播的过程完成,如图11所示。同理,当“集群b”的“客户端1”向它的代理提交主题为y的订阅时,订阅也如前述的路由方式进行,各个表的变化和订阅消息的路径如图12所示。事实上,代表在集群中组播的订阅可能有两种:一为来自其客户端的,一为来自其他集群的,为了能够在代表丢失时恢复出其他集群的订阅信息,应该对这两种订阅进行区分。
图13~图14为通知的路由示意图。当主机有通知产生时,它先检查自己的clients_table,如有订阅则转发到相应的客户端上;再检查brokers_table,如有订阅则在集群内组播该通知。当主机收到通知时,它检查自己的clients_table,如有订阅则转发到相应的客户端上;若自己为集群代表,则还要检查groups_table,如有订阅则需转发给其他集群。通知转发给其他集群主要通过为订阅了该主题的订阅者构造一棵转发树来进行,方法如下:节点收到订阅时应该按照一个统一的标准对其进行排序,比如按订阅者名称的字母序排序,即为每个订阅者赋予一个下标,因为每个节点都保存其他节点的订阅信息,所以这个排序结果是一致的;当通知从某个节点转发时,它把通知传给下标靠前的x个订阅者,并带上x这个信息;当订阅者收到通知和x时,再根据自己的下标值计算出它应该转发的订阅者的下标值,并转发出去。假设某个时刻,在如图13所示的树中,节点E产生了某个主题的通知,而此时有A、B、C、H和I五个节点订阅了该主题,即通知需转发到这五个节点上。如前所述,根据名称先对订阅者进行排序,得如下的结果:
订阅者 | A | B | C | H | I |
index | 0 | 1 | 2 | 3 | 4 |
节点E把通知转发给A和B两个订阅者,并捎带上此次转发的订阅者数量这个信息;当A收到该通知时,根据转发的订阅者数量计算它所该转发的订阅者,计算方法为(index+1)x,(index+1)x+1,…,(index+1)x+(x-1),对于此例,x为2,而A的index为0,于是得到下标值为2和3,即A应该把通知转发给C和H;当B收到通知时,处理方法和A一样,它所该转发的订阅者为I。该转发树如图14所示。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (7)
1.一种大规模实时统一消息空间的系统,其特征在于,该系统包括:客户端、发布/订阅代理模块、集群代表、管理者和树状拓扑;其中:
客户端,用于向发布/订阅模块发送订阅消息和通知消息,即参与发布/订阅的用户;客户端通过JMS和发布/订阅模块相连,发送基于主题的订阅或者基于主题的通知,这些消息的格式必须符合WSN标准,以便发布/订阅模块进行处理;
发布/订阅代理模块是该系统的核心部分,其进一步分为两个模块,分别为数据模块和路由模块;所述数据模块用于和客户端交互,而路由模块负责和其他代理交互;
集群代表是对代理进行组织的一种方法,它把位于同一个局域网内的代理组成一个集群,集群内部的代理通过组播的形式进行通信;集群中有一个代理作为集群的代表和别的集群进行通信;集群的代表是自动选择的,当代表掉线之时,代理之间可以通过“心跳”检测发现代表丢失,并使用重选的机制保证集群内产生一个新的代表;
管理者负责记录集群的信息;当有集群产生时,集群会向管理者发送注册请求,管理者便在此时记录下该集群的信息;同时当集群变换代表时,管理者也会收到相应的更改消息,并做出相应的修改;管理者的另外一个作用是标志当前的根节点,以便新集群加入到拓扑之中;
树状拓扑的,用于维护集群的组织和订阅的转发功能;管理者将集群组织成树的形式,每当有集群产生时,便返回根节点供其插入;当有集群丢失时,该节点的父节点和孩子节点会进行相应的处理,保证集群都处在同一课树中;集群之间转发订阅消息,便通过将订阅发送给自己的父节点和孩子节点,并由他们继续传播,直到每个集群都收到。
2.根据权利1所述的大规模实时统一消息空间的系统,其特征在于,所述数据模块是基于ServiceMix的WSN组件构造的,它其负责接收处理来自客户端的订阅和通知消息,所述WSN组件用于处理本地的发布/订阅请求,同时数据模块将这些消息转交给路由模块,并接收由路由模块发来的通知,将其转发给相应的客户端;所述路由模块负责把获取的订阅信息记录到订阅表,维护和本代理相连的代理的信息,并将订阅和通知转发给其他代理,当有通知匹配本地的订阅时转交给数据模块。
3..根据权利1中所述的大规模实时统一消息空间的系统,其特征在于,所述集群中的代理位于同一个局域网内,并由一个代理作为代表和别的集群通信;该集群中的代理通过“心跳”检测来发现对方是否掉线,如果代表掉线,则启动一个重选代表的操作。
4.根据权利1中所述的大规模实时统一消息空间的系统,其特征在于,所述管理者独立于各个集群,负责接收集群的注册消息并维护集群的基本信息以及标识根节点;同时,在集群需要加入时返回根节点的地址;而当集群代表改变时,根据该集群发送的消息更新本地的信息。
5.根据权利1中所述的大规模实时统一消息空间的系统,其特征在于,所述树状拓扑,它既是把多个集群联系在一起的结构,也是订阅信息转发的路径;该拓扑具有自配置的能力,即由节点丢失时,能够保证该节点的子节点重新加入到拓扑中。
6.一种大规模实时统一消息空间的方法,其特征在于,该方法包括:
A、对参与发布/订阅的代理按所处的局域网进行划分,将处在同一网络中的代理主机划分成一个个集群,并为集群取名,集群内的代理通过组播的方式进行订阅和通知的转发,集群之间通过集群代表进行通信,并构成一棵树的拓扑形式,集群之间的转发订阅则通过这棵树来进行,而转发通知则根据通知的转发树进行,并由一个独立的管理者进行集群信息的维护;
B、当集群中的代表丢失,则启动重选的机制从剩下的代理中选一个新代表;如果新代表无法选出,则意味着该集群整体丢失,这会破坏树的拓扑结构,于是要对失效节点的孩子节点进行处理,使其能够重新加入到拓扑中;
C、当客户端有订阅产生时,它把订阅交给和自己相连的代理,代理收到订阅后先保存在本地,再在集群中组播,其他代理收到后也保存起来;当代表收到订阅消息后则通过当前的树状拓扑将之转发给自己的邻居集群,邻居集群再转发给它的邻居集群直至所有集群都保存有别的集群的订阅信息;集群代表收到来自别的集群的订阅将之在集群中组播;
D、当客户端有通知产生时,它把通知交给和自己相连的代理,代理收到通知后检查订阅表看是否有该通知的订阅,如有则在集群中组播;集群中其他代理收到通知后查看订阅表,如有订阅则转发给相应的客户端,若是集群代表,则还要查看别的集群是否有此通知的订阅,如有,则为该通知的订阅者构造一棵以自己为根的转发树并将通知转发出去。
7.根据权利要求6所述的大规模实时统一消息空间的方法,其特征在于,
其包含基于负载均衡的通知的路由算法,具体为:通知不基于树状拓扑进行转发,而是根据订阅者的信息为每个主题的通知构造一个转发树,只把通知转发给转发树中属于自己的孩子节点,再由孩子节点转发给他们的孩子节点,直至所有订阅者都收到该通知。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110248653.8A CN102355413B (zh) | 2011-08-26 | 2011-08-26 | 一种大规模实时统一消息空间的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110248653.8A CN102355413B (zh) | 2011-08-26 | 2011-08-26 | 一种大规模实时统一消息空间的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102355413A true CN102355413A (zh) | 2012-02-15 |
CN102355413B CN102355413B (zh) | 2015-08-19 |
Family
ID=45578910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110248653.8A Active CN102355413B (zh) | 2011-08-26 | 2011-08-26 | 一种大规模实时统一消息空间的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102355413B (zh) |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102769668A (zh) * | 2012-07-02 | 2012-11-07 | 上海交通大学 | 基于近似匹配的发布/订阅负载均衡方法 |
CN102917016A (zh) * | 2012-09-12 | 2013-02-06 | 华中科技大学 | 一种基于内容的发布订阅模型的拓扑结构优化方法 |
CN102984174A (zh) * | 2012-12-21 | 2013-03-20 | 北京邮电大学 | 一种发布订阅系统中可靠性保障方法及系统 |
CN103581307A (zh) * | 2013-10-17 | 2014-02-12 | 北京邮电大学 | 一种基于集群的发布/订阅系统及其可靠性保障方法 |
CN103647830A (zh) * | 2013-12-13 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种集群管理系统中多层次配置文件的动态管理方法 |
CN104301158A (zh) * | 2014-11-06 | 2015-01-21 | 中国移动通信集团广东有限公司 | 基于gms框架的群组管理方法及系统 |
CN104320311A (zh) * | 2014-11-20 | 2015-01-28 | 国电南京自动化股份有限公司 | 一种scada分布式平台下的心跳检测方法 |
CN104378426A (zh) * | 2014-11-14 | 2015-02-25 | 中国电子科技集团公司第二十九研究所 | 一种用于实时信息分发系统的负载均衡方法 |
CN104618221A (zh) * | 2015-01-06 | 2015-05-13 | 厦门雅迅网络股份有限公司 | 一种去中心化的消息服务系统 |
CN105119927A (zh) * | 2015-09-07 | 2015-12-02 | 北京百度网讯科技有限公司 | 消息发送、接收方法及终端和消息发送系统 |
CN105430048A (zh) * | 2015-10-29 | 2016-03-23 | 努比亚技术有限公司 | 一种基于多集群的消息投递系统和消息投递方法 |
CN105827678A (zh) * | 2015-01-07 | 2016-08-03 | 中国移动通信集团山东有限公司 | 一种基于高可用架构下的通信方法和节点 |
CN105897827A (zh) * | 2015-11-27 | 2016-08-24 | 乐视云计算有限公司 | 服务器节点、局域网服务器集群及其实现方法 |
CN106357436A (zh) * | 2016-08-30 | 2017-01-25 | 中国民生银行股份有限公司 | 基于分布式消息的设备处理方法和系统 |
CN106790435A (zh) * | 2016-12-05 | 2017-05-31 | 阳光电源股份有限公司 | 一种光伏电站的监控系统及数据接收系统 |
WO2017214810A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的路由方法及节点 |
WO2017214811A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息处理方法及节点 |
CN108055321A (zh) * | 2017-12-11 | 2018-05-18 | 中国电子科技集团公司第二十八研究所 | 基于国产化平台的高可靠集群构建方法 |
CN108460866A (zh) * | 2018-01-03 | 2018-08-28 | 佛山市顺德区中山大学研究院 | 基于移动互联网技术的小区预警监控及其软件架构系统 |
CN109150662A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 消息传输方法、分布式系统、设备、介质和无人车 |
CN109151006A (zh) * | 2018-08-08 | 2019-01-04 | 中国电子科技集团公司第二十八研究所 | 一种以数据为中心的分布式实时会话管理方法 |
CN109327400A (zh) * | 2017-08-01 | 2019-02-12 | 华为技术有限公司 | 一种数据通信方法及数据通信网络 |
CN109714183A (zh) * | 2017-10-26 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 一种集群中的数据处理方法及装置 |
CN109952740A (zh) * | 2016-08-25 | 2019-06-28 | 张建钢 | 大规模可扩展、低延迟、高并发性和高吞吐量的去中心化共识算法 |
CN110022220A (zh) * | 2018-01-08 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 名片识别中的路由激活方法及系统 |
CN110501979A (zh) * | 2018-05-18 | 2019-11-26 | 深圳市优必选科技有限公司 | 一种集群控制方法、系统及终端设备 |
CN110602188A (zh) * | 2019-08-30 | 2019-12-20 | 延锋伟世通电子科技(上海)有限公司 | 基于dds中间件的数据分发方法 |
CN110830286A (zh) * | 2019-09-18 | 2020-02-21 | 中国船舶重工集团公司第七0九研究所 | 一种空中交通管制网络拓扑结构生成方法及系统 |
CN111147352A (zh) * | 2019-12-23 | 2020-05-12 | 杭州米络星科技(集团)有限公司 | 一种分布式数据同步方法 |
CN111600936A (zh) * | 2020-04-24 | 2020-08-28 | 国电南瑞科技股份有限公司 | 一种适用于泛在电力物联网边缘终端的基于多容器的非对称处理系统 |
CN112738240A (zh) * | 2020-12-29 | 2021-04-30 | 航天科工网络信息发展有限公司 | 一种大规模分布式网络数据传输和协同的方法 |
CN113010229A (zh) * | 2021-03-25 | 2021-06-22 | 中国电子科技集团公司第二十九研究所 | 一种分布式异构软件集群配置管理框架 |
CN113709240A (zh) * | 2021-08-26 | 2021-11-26 | 上海燧原科技有限公司 | 初始化参数的集群同步方法、装置、设备、介质及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908970A (zh) * | 2005-08-03 | 2007-02-07 | 北京航空航天大学 | 分布式的信息发布/订阅系统 |
CN101631140A (zh) * | 2009-08-03 | 2010-01-20 | 中兴通讯股份有限公司 | 即时通信系统的集群服务器和集群间通信的方法 |
-
2011
- 2011-08-26 CN CN201110248653.8A patent/CN102355413B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908970A (zh) * | 2005-08-03 | 2007-02-07 | 北京航空航天大学 | 分布式的信息发布/订阅系统 |
CN101631140A (zh) * | 2009-08-03 | 2010-01-20 | 中兴通讯股份有限公司 | 即时通信系统的集群服务器和集群间通信的方法 |
Non-Patent Citations (2)
Title |
---|
张庭军: "基于WSN的Web Services发布/订阅系统的研究和实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
薛涛等: "内容发布订阅系统路由算法和自配置策略研究", 《软件学报》 * |
Cited By (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102769668B (zh) * | 2012-07-02 | 2015-01-14 | 上海交通大学 | 基于近似匹配的发布/订阅负载均衡方法 |
CN102769668A (zh) * | 2012-07-02 | 2012-11-07 | 上海交通大学 | 基于近似匹配的发布/订阅负载均衡方法 |
CN102917016A (zh) * | 2012-09-12 | 2013-02-06 | 华中科技大学 | 一种基于内容的发布订阅模型的拓扑结构优化方法 |
CN102917016B (zh) * | 2012-09-12 | 2014-12-31 | 华中科技大学 | 一种基于内容的发布订阅模型的拓扑结构优化方法 |
CN102984174B (zh) * | 2012-12-21 | 2016-04-06 | 北京邮电大学 | 一种发布订阅系统中可靠性保障方法及系统 |
CN102984174A (zh) * | 2012-12-21 | 2013-03-20 | 北京邮电大学 | 一种发布订阅系统中可靠性保障方法及系统 |
CN103581307A (zh) * | 2013-10-17 | 2014-02-12 | 北京邮电大学 | 一种基于集群的发布/订阅系统及其可靠性保障方法 |
CN103647830A (zh) * | 2013-12-13 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种集群管理系统中多层次配置文件的动态管理方法 |
CN103647830B (zh) * | 2013-12-13 | 2017-09-15 | 浪潮电子信息产业股份有限公司 | 一种集群管理系统中多层次配置文件的动态管理方法 |
CN104301158A (zh) * | 2014-11-06 | 2015-01-21 | 中国移动通信集团广东有限公司 | 基于gms框架的群组管理方法及系统 |
CN104301158B (zh) * | 2014-11-06 | 2018-01-16 | 中国移动通信集团广东有限公司 | 基于gms框架的群组管理方法及系统 |
CN104378426A (zh) * | 2014-11-14 | 2015-02-25 | 中国电子科技集团公司第二十九研究所 | 一种用于实时信息分发系统的负载均衡方法 |
CN104378426B (zh) * | 2014-11-14 | 2018-06-12 | 中国电子科技集团公司第二十九研究所 | 一种用于实时信息分发系统的负载均衡方法 |
CN104320311A (zh) * | 2014-11-20 | 2015-01-28 | 国电南京自动化股份有限公司 | 一种scada分布式平台下的心跳检测方法 |
CN104618221A (zh) * | 2015-01-06 | 2015-05-13 | 厦门雅迅网络股份有限公司 | 一种去中心化的消息服务系统 |
CN104618221B (zh) * | 2015-01-06 | 2019-10-15 | 厦门雅迅网络股份有限公司 | 一种去中心化的消息服务系统 |
CN105827678B (zh) * | 2015-01-07 | 2019-03-05 | 中国移动通信集团山东有限公司 | 一种基于高可用架构下的通信方法和节点 |
CN105827678A (zh) * | 2015-01-07 | 2016-08-03 | 中国移动通信集团山东有限公司 | 一种基于高可用架构下的通信方法和节点 |
CN105119927A (zh) * | 2015-09-07 | 2015-12-02 | 北京百度网讯科技有限公司 | 消息发送、接收方法及终端和消息发送系统 |
CN105430048A (zh) * | 2015-10-29 | 2016-03-23 | 努比亚技术有限公司 | 一种基于多集群的消息投递系统和消息投递方法 |
CN105430048B (zh) * | 2015-10-29 | 2020-02-18 | 努比亚技术有限公司 | 一种基于多集群的消息投递系统和消息投递方法 |
CN105897827A (zh) * | 2015-11-27 | 2016-08-24 | 乐视云计算有限公司 | 服务器节点、局域网服务器集群及其实现方法 |
WO2017214810A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的路由方法及节点 |
WO2017214811A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息处理方法及节点 |
CN109952740A (zh) * | 2016-08-25 | 2019-06-28 | 张建钢 | 大规模可扩展、低延迟、高并发性和高吞吐量的去中心化共识算法 |
CN109952740B (zh) * | 2016-08-25 | 2023-04-14 | 张建钢 | 大规模可扩展、低延迟、高并发性和高吞吐量的去中心化共识方法 |
CN106357436A (zh) * | 2016-08-30 | 2017-01-25 | 中国民生银行股份有限公司 | 基于分布式消息的设备处理方法和系统 |
CN106357436B (zh) * | 2016-08-30 | 2019-11-12 | 中国民生银行股份有限公司 | 基于分布式消息的设备处理方法和系统 |
CN106790435B (zh) * | 2016-12-05 | 2020-03-24 | 阳光电源股份有限公司 | 一种光伏电站的监控系统及数据接收系统 |
CN106790435A (zh) * | 2016-12-05 | 2017-05-31 | 阳光电源股份有限公司 | 一种光伏电站的监控系统及数据接收系统 |
CN109327400A (zh) * | 2017-08-01 | 2019-02-12 | 华为技术有限公司 | 一种数据通信方法及数据通信网络 |
CN109327400B (zh) * | 2017-08-01 | 2022-04-26 | 华为技术有限公司 | 一种数据通信方法及数据通信网络 |
US11303571B2 (en) | 2017-08-01 | 2022-04-12 | Huawei Technologies Co., Ltd. | Data communication method and data communications network |
CN109714183A (zh) * | 2017-10-26 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 一种集群中的数据处理方法及装置 |
CN108055321A (zh) * | 2017-12-11 | 2018-05-18 | 中国电子科技集团公司第二十八研究所 | 基于国产化平台的高可靠集群构建方法 |
CN108055321B (zh) * | 2017-12-11 | 2021-06-11 | 中国电子科技集团公司第二十八研究所 | 基于国产化平台的高可靠集群构建方法 |
CN108460866A (zh) * | 2018-01-03 | 2018-08-28 | 佛山市顺德区中山大学研究院 | 基于移动互联网技术的小区预警监控及其软件架构系统 |
CN110022220B (zh) * | 2018-01-08 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 名片识别中的路由激活方法及系统 |
CN110022220A (zh) * | 2018-01-08 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 名片识别中的路由激活方法及系统 |
CN110501979A (zh) * | 2018-05-18 | 2019-11-26 | 深圳市优必选科技有限公司 | 一种集群控制方法、系统及终端设备 |
CN109151006A (zh) * | 2018-08-08 | 2019-01-04 | 中国电子科技集团公司第二十八研究所 | 一种以数据为中心的分布式实时会话管理方法 |
CN109150662B (zh) * | 2018-08-30 | 2020-08-21 | 百度在线网络技术(北京)有限公司 | 消息传输方法、分布式系统、设备、介质和无人车 |
CN109150662A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 消息传输方法、分布式系统、设备、介质和无人车 |
CN110602188A (zh) * | 2019-08-30 | 2019-12-20 | 延锋伟世通电子科技(上海)有限公司 | 基于dds中间件的数据分发方法 |
CN110830286A (zh) * | 2019-09-18 | 2020-02-21 | 中国船舶重工集团公司第七0九研究所 | 一种空中交通管制网络拓扑结构生成方法及系统 |
CN111147352A (zh) * | 2019-12-23 | 2020-05-12 | 杭州米络星科技(集团)有限公司 | 一种分布式数据同步方法 |
CN111600936A (zh) * | 2020-04-24 | 2020-08-28 | 国电南瑞科技股份有限公司 | 一种适用于泛在电力物联网边缘终端的基于多容器的非对称处理系统 |
CN112738240A (zh) * | 2020-12-29 | 2021-04-30 | 航天科工网络信息发展有限公司 | 一种大规模分布式网络数据传输和协同的方法 |
CN112738240B (zh) * | 2020-12-29 | 2023-02-03 | 航天科工网络信息发展有限公司 | 一种大规模分布式网络数据传输和协同的方法 |
CN113010229A (zh) * | 2021-03-25 | 2021-06-22 | 中国电子科技集团公司第二十九研究所 | 一种分布式异构软件集群配置管理框架 |
CN113709240A (zh) * | 2021-08-26 | 2021-11-26 | 上海燧原科技有限公司 | 初始化参数的集群同步方法、装置、设备、介质及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102355413B (zh) | 2015-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102355413A (zh) | 一种大规模实时统一消息空间的方法及其系统 | |
Pietzuch et al. | Hermes: A distributed event-based middleware architecture | |
Curry | Message‐oriented middleware | |
CN100547973C (zh) | 一种基于对等网络的高性能计算系统 | |
CN102202102B (zh) | 基于云计算架构的网络服务聚合系统及其聚合方法 | |
US9298513B2 (en) | Method and structure for autonomic application differentiation/specialization | |
CN110266783B (zh) | 一种基于dds的铁路ctc系统通信平台 | |
CN101159710B (zh) | 面向服务的架构下服务组合的搜索方法和系统 | |
CN108446335B (zh) | 基于数据库的异构系统数据抽取及统一对外数据交换方法 | |
CN104205756A (zh) | 并发进程执行 | |
CN103581307A (zh) | 一种基于集群的发布/订阅系统及其可靠性保障方法 | |
CN114363407B (zh) | 消息服务方法及装置、可读存储介质及电子设备 | |
CN101917394B (zh) | 在手机设备上进行数据共享的中间件系统及工作方法 | |
CN107231290A (zh) | 一种即时通信方法和系统 | |
CN101315609A (zh) | 实现单进程中组件间进行通信的装置和方法 | |
CN106230914B (zh) | 一种基于订阅信息发布的电子白板数据共享系统 | |
CN116382943A (zh) | 顺序消息处理方法、总线系统、计算机设备及存储介质 | |
CN102984174B (zh) | 一种发布订阅系统中可靠性保障方法及系统 | |
CN107071067B (zh) | 一种基于Cgo的高性能证券行情接入系统和方法 | |
US20050210152A1 (en) | Providing availability information using a distributed cache arrangement and updating the caches using peer-to-peer synchronization strategies | |
JP2001060155A (ja) | メッセージ処理装置 | |
CN102427474B (zh) | 云存储中的数据传输系统 | |
CN112738240A (zh) | 一种大规模分布式网络数据传输和协同的方法 | |
CN104052723A (zh) | 信息处理方法和服务器 | |
CN201854301U (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |