CN1625119A - 构建于结构化P2P网络之上的pub/sub系统的路由方法 - Google Patents
构建于结构化P2P网络之上的pub/sub系统的路由方法 Download PDFInfo
- Publication number
- CN1625119A CN1625119A CN 200410009974 CN200410009974A CN1625119A CN 1625119 A CN1625119 A CN 1625119A CN 200410009974 CN200410009974 CN 200410009974 CN 200410009974 A CN200410009974 A CN 200410009974A CN 1625119 A CN1625119 A CN 1625119A
- Authority
- CN
- China
- Prior art keywords
- node
- message
- subspace
- filtercondition
- pub
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种构建于结构化P2P网络之上的pub/sub系统的路由方法,包括对所有节点进行编码,并按编码的前缀将所述节点划分成不同层次的子空间,对于每个节点,它在每个子空间中选择一个用于转发该子空间中其他节点的消息的汇合节点;以所述子空间为基础,为每个节点建立相应的路由表项,并记录各子空间相应的汇合节点;以所述子空间为基础,为每个节点建立相应的过滤条件表,记录各子空间所定义的订阅条件;节点消息转发时,首先将消息转发到各目标子空间的所述汇合节点,汇合节点处理该消息,然后按所述汇合节点的路由表和过滤条件表将该消息转发给该汇合节点所在子空间中的相应节点。本发明只需更少次消息转发即将事件传送到各订阅者。
Description
技术领域
本发明涉及一种构建于结构化P2P(Peer to Peer)网络之上的pub/sub系统的路由方法。
背景技术
发布/订阅(publish/subscribe,简称pub/sub)系统是一种分布式计算平台(或称中间件系统),用于为分布式系统中的各参与者之间提供一种松散耦合的通信方式。在大规模、高度动态的分布式系统中,其各个参与者可能会不断地加入和退出,每个参与者往往难以知道当前有哪些参与者处于在线状态,从而使得它们之间的信息交互变成很困难。而Pub/sub系统能够很好地解决这个问题,因而在近年来得到了人们的很大关注。
在pub/sub系统中,信息的生产者和消费者之间所交互的信息被称为“事件”。信息的生产者将“事件”发送给“事件代理(event broker)”;信息消费者则向事件代理发出一个“订阅条件”,表示对系统中的哪些事件感兴趣;而事件代理则保证将所发布的事件及时、可靠地传送给所有感兴趣的信息消费者。在pub/sub系统中,信息的生产者称为“发布者(publisher)”,信息的消费者称为“订阅者(subscriber)”。发布者和订阅者在进行信息交互时,互相都不需要知道对方的存在,使得它们在时间、空间和控制流三个方面都被完全解耦合,因而能很好地满足大规模、高度动态的分布式系统的需要。发布/订阅系统的基本结构如图1所示。
例如,对于一个构建于pub/sub系统之上的网上拍卖系统而言,如果某人(设为甲)要拍卖一台计算机,他所发布的事件内容为{产品=计算机,已使用年限=2年,价格=3000元,……},而如果另一个人(设为乙)对所有价格小于4000元的拍卖计算机的事件感兴趣,他可以定义一个订阅条件:{产品=计算机,价格<4000元}。这样,pub/sub系统就负责将甲所发布的事件转发给乙。
一个大规模的pub/sub系统中通常分布着多个事件代理,这些事件代理组织成一定的拓扑结构,每个事件代理为一定数量的客户(发布者或订阅者)服务,如图2所示。这种系统中的一个关键技术问题是消息的路由协议(通常被称为“基于内容路由协议”),即系统中的各种消息(订阅请求、取消订阅请求、被发布的事件等)按照何种路径从发出节点到达目的节点。基于内容路由协议对于整个系统的效率、可靠性和可伸缩性都有着重要的影响。
虽然人们已经提出了很多种基于内容路由方法,但这些方法一般都建立在固定的网络结构之上,即要求各事件代理都不发生故障,同时各事件代理之间的网络连接也不发生故障。因而,这些方法难以满足很多实际应用的要求。
近年来,以Pastry、Tapestry、Chord和CAN为代表的结构化P2P(peer to peer)网络近年来得到人们的很大关注。结构化P2P网络具有分散控制(整个系统没有一个集中控制点)和自组织(各成员可以动态地加入和退出)等一系列优点,因而也非常适合于大规模、高度动态的分布式系统。
在结构化P2P网络中,各节点被组织成一种具有特定结构的有向图,以使得任意两个点之间的路径长度一般不超过logk(N),其中k为预设的参数,N为网络中的最大节点数量。网络中两个节点之间一般存在多条路径,因此它提供了较强的容错能力和消息传输可靠性。在消息的转发途中,只有当某节点的大量邻居同时失效时,消息才无法到达目的地。
虽然每种结构化P2P网络的路由协议有所不同,但是总的来说,它们都是采用基于键的路由(key-based routing)协议。每个节点都有一个编码,节点之间通过有向的边相连,节点的每个输出边负责一定的编码区间。对于每个节点而言,它的各输出边和其所负责的编码区间构成了该节点的路由表。
下面以Pastry(A.Rowstron and P.Druschel.Pastry:Scalable,distributed objectlocation and routing for large-scale peer-to-peer systems.In Proceedings of IFIP/ACMMiddleware 2001 conference,Heidelberg,Germany,November 2001.)为例来介绍结构化P2P网络的路由协议。在Pastry中,每个节点的编码是一个长度为L的k进制的数。Pastry按照编码前缀来对全局编码区间进行分段,将其分成不同的子区间。设某节点的编码为n,该节点的路由表为RTn。为了简化起见,可以将RTn理解为如下集合:
RTn={(prefix,nodeId,address)}
其中的每个路由项表示:对于所有编码以prefix为前缀的节点,本节点将以nodeId作为下一跳向其转发消息,节点nodeId的IP地址为address。NodeId的编码一定以prefix为前缀,它相当于这一区间中的各节点的“代表”。例如,设k=4,L=3,则编码为213的节点的路由表如图3所示。如果整个网络中不存在以某编码为前缀的节点,则在路由表中不存在相应的项。
在Pastry网中,所有节点的编码构成一个线性的地址空间,它们按照编码的前缀被划分成不同层次的子空间。Pastry路由表的基本原理是:对于每个子空间,本节点都要在其中找一个“代表”,记录在路由表中。将来所有要发到该子空间中的消息,都通过该“代表”转发。如图4所示,为节点213在整个地址空间中的路由项示意图,其中每个曲线箭头代表一个路由项。
如图5所示,为节点213对全局编码区间的分割情况示意图。树中的每个节点中的数字代表编码前缀,根节点代表全局编码区间。每个叶子节点(除自身外)都在路由表中有相应的项。对于路由表中的每个编码前缀,若其长度为k,则其前k-1位与本节点编码的前k-1位相同,而第k位与本节点编码的第k位不同。
假设节点213要发送一个消息给节点201。节点213在自己的路由表中查以“20”为前缀的路由项,若得到下一跳202,则将此消息发给202。节点202再在自己的路由表中查以“201”为前缀的路由项,将消息发给相应的地址。
Pastry提供了较好的容错能力和可靠性。当消息转发过程中,如果某节点发现其相应的下一跳失效了,其则根据贪婪方法的思想,从当前路由表选择一个离目标编码最近的节点,通过该节点将此消息继续向前发送。同时,再从网络中寻找该区间的新的“代表”,以修复路由表。
近年来,很多人在结构化P2P网络上构建基于内容的pub/sub系统,希望利用P2P网络的优点,提高pub/sub系统对节点故障和拓扑结构变化的适应能力,从而更好地服务于大规模、高度动态的pub/sub系统。
构建于结构化P2P网络之上的pub/sub系统的拓扑结构又可以分为super-peer和pure-peer两种,前者是指P2P网络中的每个节点只作为事件代理,每个事件代理可以连接若干个客户,客户不在P2P网络中,如Hermes;后者指P2P网络中的每个节点同时作为事件代理和客户,如Scribe和Bayeux。这两种结构本质上是一致的;对于super-peer结构,可以将其理解为一种特殊的pure-peer结构,其中每个节点的应用层包含多个应用系统实例。为简化起见,在下面的讨论中,规定pub/sub系统基于pure-peer结构,其中每个节点上只有一个应用系统实例。
构建于结构化P2P网络之上的pub/sub系统可以分为P2P层、pub/sub层和应用层三个层次,如图6所示。P2P层用于将各事件代理组成一个自组织的P2P网络,pub/sub层负责订阅和事件在各事件代理之间的转发;应用层是负责发布和接收事件的应用系统。Pub/sub系统中的路由协议是pub/sub层的路由协议,它建立在P2P层路由协议之上。
Pub/sub层与另外两个层次之间通过“操作”进行交互,每个操作可以带有若干参数。不同节点的pub/sub层之间则通过“消息”进行交互,每个消息也可以带有若干参数。为了将消息与操作区分开,将操作表示为:操作类型(参数列表),如subscribe(f1),而将消息表示为:(消息类型:参数列表),如(subscription:sp1,f1,dp1)。
一般而言,pub/sub层至少向应用层提供如下几种操作:
subscribe(filter):应用层对所有满足filter条件的事件感兴趣。
unsubscribe(filter):应用层不再对满足filter条件的事件感兴趣。
publish(event):应用层发布一个新的事件。
应用层各实例应提供如下操作:
notify(event):pub/sub层告诉应用层,到达了一个它感兴趣的事件。
目前,结构化P2P网络上的pub/sub系统中使用的路由协议主要以Scribe(M.Castro,P.Druschel,A.-M.Kermarrec and A.Rowstron.SCRIBE:A large-scale anddecentralised application-level multicast infrastructure.IEEE Journal on Selected Areasin Communications.Vol.20,Oct.2002)中提出的多播机制为基础。Scribe是一个建立在Pastry之上的多播系统(也称为基于主题的pub/sub系统)。每个多播组在网络中都对应一个特殊的节点,称为汇合点。各节点在加入多播组时,将加入消息发送到该组的汇合点。汇合点根据各加入消息的逆向路径,构建一棵以自己为根的多播树。各节点在发布消息时,也将它发送到多播组的汇合点,再由汇合点通过多播树转发出去。为了处理多播树中节点失效的情况,它要求树中的每个节点都定期向其孩子发送心跳消息。如果某节点在一定时期内未收到其父节点的心跳消息,它就认为父节点已失效,然后它就以其他路径重新向汇合点发送订阅消息,以修复多播树。Scribe只提供了弱的可靠性保证,在多播树的断裂和修复期间,汇合点所发出的事件可能会丢失。此外,它还存在树根负载较大和单点失败的问题。
Hermes(P.Pietzuch and J.Bacon.Hermes:A distributed event-based middlewarearchitecture.Proceedings of the 1st International Workshop on Distributed Event-BasedSystems(DEBS′02),IEEE Press.Vienna,Austria.July 2002.)以及D.Tam等(D.Tam,R.Azimi,and H.-A.Jacobsen.Building Content-Based Publish/Subscribe Systems withDistributed Hash Tables.In Proceedings of First International Workshop on Databases,Information Systems,and Peer-to-Peer Computing(DBISP2P 2003),138-152.September 2003.)都是以Scribe的多播机制为基础,在此之上加以扩展,以构造pub/sub系统。但是,这些系统不能提供比Scribe更强的可靠性保证,事件可能无法到达所有的订阅者。同时,这些系统还要求在P2P网络中有若干个特殊的“汇合点”,这些汇合点提供集中式服务,其负载远远超过其它节点,从而也丧失了P2P网络的分散控制和均衡负载的优点。
发明内容
针对上述现有结构化P2P网络上的pub/sub系统中使用的路由方法中所存在的问题和不足,本发明的目的是提供一种具有可靠性高、路由效率高的构建于结构化P2P网络之上的pub/sub系统的路由方法。
本发明是这样实现的:一种构建于结构化P2P网络之上的pub/sub系统的路由方法,该系统的节点包括P2P层、pub/sub层和应用层,所述P2P层中含有路由表,所述pub/sub层中含有过滤条件表;Pub/sub层建立在P2P层之上,向应用层提供事件的订阅和通知服务,该方法包括以下步骤,
1)对所有节点进行编码,并按编码的前缀将所述节点划分成不同层次的子空间,对于每个节点,它在每个子空间中选择一个用于转发该子空间中其他节点的消息的汇合节点;
2)以所述子空间为基础,为每个节点建立相应的路由表项,并记录各子空间相应的汇合节点;
3)以所述子空间为基础,为每个节点建立相应的过滤条件表,记录各子空间所定义的订阅条件;
4)节点消息转发时,首先将消息转发到各目标子空间的所述汇合节点,汇合节点处理该消息,然后按所述汇合节点的路由表和过滤条件表将该消息转发给该汇合节点所在子空间中的相应节点。
进一步地,该方法还包括,当一个新节点动态加入时,首先进行P2P层的初始化,以构建相应路由表,然后进行pub/sub层的初始化,以构建过滤条件表;当一个节点失效时,则将转发到该失效节点的消息转发至与该失效节点处于同一子空间的其它节点处。
进一步地,所述P2P层与应用层、pub/sub层之间交互时记录其间的操作序号,设定每个节点的初始操作序号为1,执行一个操作后,操作序号加1;所述消息中含有操作序号的信息;节点收到一个消息时,比较该消息中的序号加1和自己的序号的大小,并将自己的序号设为两者的最大序号。
进一步地,所述消息转发具体为:
1)节点欲订阅消息时,将订阅条件转发给各子空间的汇合节点;当汇合节点收到此订阅条件后,将该订阅条件加入自己的过滤条件表,再将该订阅条件转发到该子空间的其他节点;
2)节点取消订阅时,将取消订阅消息转发给各子空间的汇合节点;汇合节点收到该取消订阅消息后,将相应的过滤条件取消,再将该取消订阅消息转发到该子空间的其他节点;
3)当某节点发布事件时,将检查过滤条件表以决定向哪些子空间发送该事件,然后将该事件发往相应的子空间的汇合节点;汇合节点收到该事件后,检查过滤条件表以决定向哪些更小的子空间发送该事件,这样经过若干次转发后,可使该事件到达所有定义了相应订阅条件的节点。
进一步地,该方法还包括,当子空间内的两节点发送的订阅条件有所属关系时,仅发送订阅条件大的哪一条;若订阅条件大的在后发送,则覆盖前一条件;若订阅条件大的在前发送,则在后的订阅条件小的订阅条件只需被发送到本子空间内的其他节点;当有所属关系的两订阅条件并发时,在下一非并发转发处,按前述方式发送。
进一步地,该方法还包括,当子空间内的两节点发送的取消订阅消息有所属关系时,则取消订阅条件小的订阅消息时,仅向子空间内的其他节点发送取消订阅消息;若取消订阅条件大的订阅消息时,汇合节点将向各子空间发送该取消订阅消息,同时将较小的订阅条件发送出去;当有所属关系的两取消订阅条件的消息并发时,在下一非并发转发处,按前述方式发送。
进一步地,该方法还包括,当有所属关系的取消订阅操作和订阅操作并发时,若取消订阅的条件隶属于订阅的条件,则在下一非并发转发处,仅转发订阅消息;若订阅的条件隶属于取消订阅的条件,则在下一非并发转发处,先转发取消订阅消息,再转发订阅消息。
本发明采用基于编码区间的路由方法,能够较为自然地与P2P网络本身的路由协议集成在一起,并利用P2P网络路由协议的容错机制来提高事件传输的可靠性。只要事件的发布者与订阅者之间在P2P网络中是可达的,则订阅者一定能收到它所订阅的事件,且只收到一次。本发明也具有较高的路由效率,可以避免不必要的消息转发。对于事件的传播,本发明是检测目标子网中是否有对本事件感兴趣的订阅者,并且仅发送给对本事件感兴趣的订阅者。与现有的结构化P2P网络上的基于内容路由协议相比,本发明只需要更少次消息转发就能将事件传送到各订阅者。
附图说明
下面结合附图,对本发明作出详细描述。
图1是现有发布/订阅系统的基本结构示意图;
图2是现有大规模发布/订阅系统的结构示意图;
图3是某节点213的路由表示意图;
图4是节点213在整个地址空间中的路由项示意图;
图5是节点213对全局编码区间的划分结构示意图;
图6是结构化P2P网络上的pub/sub系统体系结构示意图;
图7a是节点213执行subscribe(f1)前的各节点过滤条件表示意图;
图7b是节点213执行subscribe(f1)后的各节点过滤条件表示意图;
图8a是节点213执行unsubscribe(f1)前的各节点过滤条件表示意图;
图8b是节点213执行unsubscribe(f1)后的各节点过滤条件表示意图;
图9是本发明subscribe操作处理流程示意图;
图10是本发明unsubscribe操作处理流程示意图;
图11是本发明publish操作处理流程示意图;
图12是本发明初始化操作处理流程示意图;
图13是本发明subscription消息处理流程示意图;
图14是本发明addFilter(sp1,ef1)子过程处理流程示意图;
图15是本发明updateSubscription消息处理流程示意图;
图16是本发明notification消息处理流程示意图;
图17是本发明redirect消息处理流程示意图;
图18是本发明requestFilter消息处理流程示意图。
具体实施方式
本发明是对现有的结构化P2P网络之上的pub/sub系统的改进。根据结构化P2P网络的特点,本发明为每个节点创建一棵以其为根的生成树,其中根节点的孩子为根节点路由表中的各项。生成树中的每个节点负责一个编码区间,根节点负责全局编码区间,其它每个节点所负责的编码区间是其父节点所负责的编码区间的一部分。例如,在图3所示的例子中,设节点213要将某个消息广播到整个网络,则该节点首先将消息发送给其路由表中的各项。对于节点202,它收到消息后,将其转发给编码前缀为20的区间中各节点;对于节点031,它收到消息后,将其转发给编码前缀为0的区间中各节点,等等。订阅消息和事件消息的传播都是以上述生成树为基础。当一个节点收到客户的订阅请求后,它就将订阅消息按照以自己为根的生成树发送出去,并利用订阅条件的覆盖关系对消息转发进行优化。对于收到订阅消息的节点,它不关心该消息来自哪个输入边,而关心订阅者的编码相对于自己而言的编码区间(即:本节点沿着哪个输出边可以到达该订阅者)。这样,每个节点的生成树就同时成为事件分发树。当一个节点收到客户发来的事件时,它同样沿着该生成树将事件发送给各订阅者。
以下详细介绍本发明。
首先介绍本发明对各节点操作的顺序的确定方法。由于P2P网络是一个动态网络,两个节点之间的不同消息可能是沿着不同的路径传送的,所以不能保证消息的接收顺序与发送的顺序一致。因此,不能根据消息的接收顺序来判断导致该消息的操作的发生顺序。如果一个节点先后执行了两个操作,有可能后面的操作所导致的消息会先于前一个操作的消息而到达目标结点。为方便描述,设节点n1执行了操作op1,节点n2执行了操作op2。在如下两种情况下,称操作op1发生在op2之前:
1)n1=n2,且op2在op1之后执行;
2)n1≠n2,且n2在收到由操作op1所产生的消息之后,才开始执行op2。
为了判断操作发生的先后顺序,本发明对系统中的每一个操作设置一个序号。具体如下(设节点ni的当前操作序号为opNoi):
初始时,每个节点ni的初始操作序号opNoi=1;每个节点ni执行subscribe,unsubscribe,publish操作时,由此操作所导致的整个系统中的所有消息中,都包含该序号opNoi:每个节点ni执行一个操作后,将opNoi加1;每个节点nj收到一个消息时,比较该消息中的序号opNoi和自己的序号opNoj,并设opNoj为opNoi+1和opNoj中较大的一个。
这样,本发明对于系统中的任意两个操作op1和op2,如果op1发生在op2之前,则op1的序号一定小于op2的序号。若opPeer为执行操作的节点编号,opNo表示操作的序号,则(opPeer,opNo)唯一地标识了系统中的一个操作。
下面介绍本发明中的“扩展过滤条件”和“过滤条件表”。
为便于描述,本发明用f(e)表示断言“事件e满足过滤条件f”,用Ef表示集合{e|f(e)},即所有满足过滤条件f的事件的集合。对于两个过滤条件f1,f2,如果所有满足f2的事件也一定满足f1,则称f1覆盖f2,记为
本发明提出了节点中的一种新的数据结构——扩展过滤条件(extended filter)。一个扩展过滤条件的结构为(f,opPeer,opNo),其中f为过滤条件,opPeer为执行subscribe(f)操作的Peer的编号,opNo为操作序号。
为方便描述,对于两个扩展过滤条件ef1和ef2,当如下条件成立时,本发明称ef1真覆盖ef2,记为
为方便描述,以下将efi.f简记为fi。
每个节点的pub/sub层都维护着一个过滤条件表。设节点n的过滤条件表为FTn,则可以将它表示为如下集合:FTn={(prefix,extended_filter)}。其中每一项称为一个过滤项,表示在以prefix为前缀的编码区间中,至少有一个结点订阅了extended_filter中的过滤条件。一个prefix可以对应多个过滤项。
下面介绍本发明对不同操作的处理过程。
设某节点的编码为n1,当其应用层执行操作subscribe(f1)时,该节点的pub/sub层首先将(n1,ef1)加入自己的过滤条件表,其中ef1=(f1,n1,opNo1)。然后,它发出subscription消息,以通知其他各节点。
subscription消息的格式为:(subscription:subscriber_prefix,extended_filter,destine_prefix),其中的参数分别表示订阅者的编码区间、扩展过滤条件和本消息的目标编码区间。若A节点向B节点发送此消息,表示A请求B将此消息转发到以destine_prefix为前缀的编码区间中的各节点。
当一个汇合节点的pub/sub层收到消息(subscription:sp1,ef1,dp1)时,它首先将(sp1,ef1)插入自己的过滤条件表中,然后将此消息转发到以dp1为前缀的编码区间中的各节点。为了使其它各节点能够知道本节点的订阅请求,一个简单的办法是将此subscription消息广播到整个网络中的所有节点。在本发明中,各节点的过滤条件表是按编码区间来组织的,因此可以利用相邻编码区间的过滤条件之间的覆盖关系,来对subscription消息的转发进行优化。当某节点的pub/sub层处理操作subscribe(f1)时,它首先检查自己的过滤条件表,看看与自己的编码区间相邻的哪些编码区间已经定义了比f1范围更大的过滤条件,然后利用该信息以减少subscription消息的目标编码区间。
例如,设节点213的应用层执行操作subscribe(f1)。首先,节点213发出subscription消息到路由表中编码前缀长度为3的各项(即210,211,212)。在节点213的过滤条件表中,如果已有一个长度为3的编码前缀(如210)设置了一个过滤条件ef2,
则网络中的各节点都已经知道在以“21”为前缀的区间中有节点对Ef2感兴趣,而Ef1Ef2,所以节点213不需要发送subscription消息到路由表中编码前缀长度小于3的各项。该操作所导致的各节点的过滤条件表变化如图7a、7b所示。
当某节点的应用层执行unsubscribe(filter)操作时,该节点的pub/sub层一方面要通知其他节点,自己对Efilter不再感兴趣:另一方面,它还应考虑到该filter可能覆盖了相邻编码区间中的其它节点的过滤条件,因此要对这些被覆盖的过滤条件进行特别处理。
为此,本发明定义了一个消息类型(updateSubscription:subscriber_prefix,canceled_ef,added_efs,destine_prefix,opPeer,opNo),表示给定的编码区间将取消一个过滤条件,同时增加若干个过滤条件。消息中的参数分别表示发出“修改订阅”请求的编码区间、被取消的扩展过滤条件、新增的扩展过滤条件集合、本消息的目标编码区间、执行unsubscribe操作的节点的编码和操作序号。
例如,设节点213的应用层执行操作unsubscribe(f1)。首先,节点213在其过滤条件表中找到(n1,ef1),其中ef1.f=f1,并将该项从其过滤条件表中删除。然后,节点213发出消息(updateSubscription:213,ef1,Φ,destine_prefix,n1,opNo1)到路由表中编码前缀长度为3的各项(即210,211,212)。在节点213的过滤条件表中,如果已有一个长度为3的编码前缀(如210)设置了一个过滤条件ef2,
则以“21”为前缀的区间中仍有节点对Ef2感兴趣,而Ef1Ef2,所以节点213不必发送updateSubscription消息到路由表中编码前缀长度小于3的各项。其结果是,各节点的过滤条件表又从图7b所示的状态回到了图7a所示的状态。
在节点213的过滤条件表中,如果长度为3的各编码前缀的过滤条件均不能覆盖ef1,而且有过滤条件(设为节点211所定义的ef3)能被ef1所覆盖,则节点213应再向路由表中编码前缀长度为2的各项发出消息(updateSubscription:21,ef1,{ef3},destine_prefix,n1,opNo1)。如果长度为2的各编码前缀的过滤条件仍不能覆盖ef1,则节点213应再向路由表中编码前缀长度为1的各项发出updateSubscription消息。该操作所导致的各节点的过滤条件表变化如图8a、8b所示。
当一个节点收到来自其他节点的updateSubscription消息后,它首先调整自己的过滤条件表,为前缀subscriber_prefix删除过滤条件canceled_ef,增加added_efs中包含的过滤条件,然后向自己负责的编码区间中的其他节点转发该消息。然而,由于P2P网络是一个动态网络,当一个节点(设为n2)收到消息updateSubscription(sp1,ef1,AF1,dp1,n1,opNo1)时,它可能还没有收到相应的subscription消息,因此其过滤条件表中没有过滤项(sp1,ef1)。在这种情况下,n2应继续将向其它节点转发该消息,同时将该updateSubscription消息放入自己的等待队列中,等待其它消息(该消息的操作序号应小于opNo1)将(sp1,ef1)加入过滤条件表后,才被处理。当一个节点每次将一个过滤项加入自己的过滤条件表中时,它应检查等待队列,看有无相应的updateSubscription消息,若有,则将该消息从等待队列中取出并处理。
当某节点的应用层执行操作publish(event)时,其pub/sub层将发出notification消息,以告诉其他各节点。notification消息的格式为:(notification:event,destine_prefix,opPeer,opNo),其中的参数分别表示被发布的事件、本消息的目标编码区间、发布者的编码和操作序号。
设某节点的编码为n1,其当前操作序号为opNo1。当其应用层执行publish(e1)操作时,pub/sub层将检查过滤条件表以决定向哪些节点发送notification消息。对于Pastry路由表中的每一项rei,如果在过滤条件表中存在一个过滤项(rei.prefix,efi),且efi.f(e1)为真,则pub/sub层向rei.nodeId发出消息(notification:e1,rei.prefix,n1,opNo1)。
当其他节点(设编码为n2)收到消息(notification:e1,dp1,n1,opNo1)时,它按如下步骤处理:
1)如果过滤条件表中有(n2,ef),使ef.f(e1)为真,则通知本节点的应用层;
2)对于Pastry路由表中所有以dp1为前缀的路由项rej,如果在过滤条件表中有fe=(rej.prefix,efj),使efj.f(e1)为真,则向rej.nodeId发出消息(notification:e1,rej.prefix,n1,opNo1);
3)本节点的当前操作序号opNo2=max(opNo1+1,opNo2)。
这样经过若干跳后,可以使此消息到达整个网络中所有对该事件感兴趣的节点。
结构化P2P网络的一个重要特点就是自组织,即各节点可以动态地加入和退出。下面介绍本发明对节点动态地加入和退出的处理。
当一个新节点动态加入时,它首先进行P2P层的初始化,以构建路由表;然后进行pub/sub层的初始化,以构建过滤条件表。
pub/sub层的初始化过程如下:新节点在Pastry路由表中找到任一个与其具有最长共同前缀的节点,然后向它发送一个requestFilter消息,请它将其过滤条件表发送给自己。然后,新节点就根据该节点的过滤条件表来创建自己的过滤条件表。本发明以一个例子来说明这一过程。假设新节点的编码为213,与之有最长前缀的已有节点的编码为202。也就是说,此前整个网络中没有以21为前缀的节点。在213、202两节点的过滤条件表中,编码前缀长度为1的项(即0,1,3)是一致的。对于长度为2的编码前缀,节点202的过滤条件表中可能有22,23,一定没有20,21;而节点213的过滤条件表中可能有20,22,23。对于编码前缀22和23,节点202和213的过滤项是一致的。对于节点213中编码前缀为20的过滤项,我们可以从节点202的过滤条件表中取所有长度为3的编码前缀(201,202,...),将其过滤条件汇总而得。因为节点213是整个网络中以21为前缀的唯一节点,故节点213中不存在编码前缀长度为3的过滤项。通过这种方式,节点213的过滤条件表就初始化完成了。
由于P2P网络中的节点可能随时退出系统,在消息的转发过程中,可能会出现Pastry路由表中某一项的节点已经失效的情况。本发明对此具有较强的适应能力,这是由于给定的消息只需被发送到目标编码区间的任一节点即可,而不依赖于某个固定的节点。为了处理节点失效的情况,本发明定义了一种消息类型:(redirect:middle_id,destine_prefix,original_message),用于封装原有的消息并将其发送到目标编码区间中的任一节点。其中的参数分别表示本消息的目标编码、原消息的目标编码区间和原消息的内容,middle_id是以destine_prefix为前缀的区域的中间编码值(如“21”前缀的中间编码值为211)。
在前述各种消息的转发过程中,如果下一跳对应的节点失效了,则系统求出本消息的目标编码区间的中间编码值middle_id,然后利用P2P网络的路由机制,向middle_id发出redirect消息。P2P网络将寻找恰当的路径向前转发redirect消息,使得途中每个节点的编码都比上个节点的编码更接近middle_id。在redirect消息的转发途中,一旦到达某节点,其前缀等于destine_prefix,则停止向前发送,在该点将其转换为原来的消息,进行相应的处理。若redirect消息停止时的节点仍不是以目标编码区间为前缀,则表明该区间中的各节点均已失效,或整个P2P网络出现分区,因而该消息将被抛弃。
当故障节点恢复正常后,它按新节点加入的过程重新加入到P2P网中,并重新初始化过滤条件表。该节点以前所设置的订阅请求需要重新设置。
通过上述方法,本方法可以保证只要事件的发布者与订阅者之间在P2P网络中是可达的,则订阅者一定能收到它所订阅的事件,且只收到一次。
由于本发明的协议根据邻居的过滤条件来优化subscription消息和updateSubscription消息的发送范围,所以当邻居节点的过滤条件发生变化时,必然需要采取一定的补充措施,以避免各节点的过滤条件表出现不一致。下面介绍本发明对不同节点并发执行操作时的处理。
假设系统中有n1和n2两个节点,它们有相同的编码前缀pr1。设网络中任意两个节点之间的消息发送的最长时间为MaxDT。本发明的描述基于如下前提:
系统中的节点失败不会导致P2P网络被分割不连通的子网:当一个节点执行unsubscribe操作后,它在此后MaxDT时间内不会失败。
以下对几种操作并发执行的处理作出描述。
设节点n1执行subscribe(f1)的同时,节点n2执行subscribe(f2),且
由于两个节点都不知道对方的操作,所以它们都向全网中的所有节点发送订阅消息。然而,对于pr1区间以外的节点而言,它们只需要处理消息(subscription:pr1,ef2,destine_prefix)就够了,而不必处理消息(subscription:pr1,ef1,destine_prefix)。
为了避免发送不必要的subscription消息,造成网络资源的浪费,各节点在转发消息(subscription:sp1,ef1,destine_prefix)时,应该先检查自己的过滤条件表,看其中是否已存在过滤项(sp1,ef2),且
如果有这种过滤项,那么就不再向前发送此消息。
设节点n1执行unsubscribe(f1)的同时,节点n2执行unsubscribe(f2),且
此时,n1的过滤条件表中已经记录了n2对f2的订阅,所以它只将“取消订阅f1”消息发送给pr1区间内的节点,而不向pr1区间以外的节点发送。而n2的过滤条件表中已经记录了n1对f1的订阅,所以它向pr1区间以外的节点发送的消息是(updateSubscription:pr1,ef2,{ef1},destine_prefix,n2,opNo2)。这样,经过一段时间以后,pr1区间以外的节点中均有过滤项(pr1,ef1),而事实上pr1区间内的节点已不再订阅ef1。
为了避免这种情况,每个节点在执行unsubscribe操作后,应记录下本次操作的序号、所取消的扩展过滤条件以及updateSubscription消息的目标编码区间,然后对此后MaxDT时间内所收到的消息进行特别处理。设结点n2的unsubscribe操作的序号为opNo2,所取消的扩展过滤条件为ef2,则对于此后一段时间内收到的(updateSubscription:n1,ef1,AF,destine_prefix,n1,opNo1)消息,如果
且ef1.opNo>ef2.opNo(即n1有可能根据n2的订阅缩小了消息范围),且ef1.opNo<opNo2(即n2在unsubscribe时,过滤条件表可能已有ef1),则n2应向更大的范围补发消息(updateSubscription:n1,ef1,AF,destine_prefix,n1,opNo1),补发的范围为“取消订阅ef2”消息的目标区间减去“取消订阅ef1”消息的目标区间。
但是,上述方法又可能导致updateSubscription消息的重复发送。例如在上例中,如果n1在收到n2的updateSubscription消息之后再执行unsubscribe,则不会导致系统状态不一致,因而n2后来补发的消息是多余的。为了避免updateSubscription消息的重复发送,各节点在收到updateSubscription消息时,应该检查自己的消息历史,看看是否已经收到具有相同opPeer和opNo的消息,若已收到,则停止向前转发。
设节点n1执行subscribe(f1)的同时,节点n2执行unsubscribe(f2)。这时要分以下两种情况考虑:
1、
节点n1将“订阅ef1”消息发送到全网,同时n2也将“取消订阅ef2”消息发送到全网。对于pr1区间以外的节点(设为n3)而言,它收到消息(subscription:pr1,ef1,destine_prefix)后,即自动删除其过滤条件表中的(pr1,ef2),所以不必再处理n2的updateSubscription消息。
但是,对于n3而言,有很多种情况会导致其过滤条件表中没有过滤项(pr1,ef2),例如n2的subscription消息尚未到达等。为了保证协议的正确性,它仍应将此updateSubscription消息转发给其它节点。
2、
此时,n1的过滤条件表中已经记录了n2对ef2的订阅,所以n1只将“订阅ef1”消息发送到pr1区间内的节点,而不向pr1区间以外的节点发送。同时,n2则向全网发送“取消订阅ef2”消息。这样,经过一段时间以后,pr1区间以外的节点中既没有过滤项(pr1,ef1),又没有过滤项(pr1,ef2),从而造成n1无法收到某些它所感兴趣的事件。
为了避免这种情况,每个节点在执行unsubscribe操作后,都要对此后MaxDT时间内到达的消息进行特别处理。设结点n2的unsubscribe操作的序号为opNo2,所取消的扩展过滤条件为ef2,则对于此后一段时间内收到的(subscription:n1,ef1,destine_prefix)消息,如果
且ef1.opNo>ef2.opNo(即n1有可能根据n2的订阅缩小了消息范围),则本节点应向更大的范围补发消息(subscription:pr1,ef1,destine_prefix),补发的范围为“取消订阅ef2”消息的目标区间减去“订阅ef1”消息的目标区间。
但是,这样做又可能导致subscription消息的重复发送。例如在上例中,如果n1在收到n2的updateSubscription消息之后再执行subscribe,则不会导致系统状态不一致,因而n2后来补发的消息是多余的。因此,每个节点在收到subscription消息时,应该检查自己的消息历史,看看是否已经收到具有相同opPeer和opNo的消息,若已收到,则停止向前转发。
下面介绍本发明的全部数据结构。
在本发明中,每个节点的pub/sub层共需要维护以下四种数据:过滤条件表(Filter Table,FT)、取消操作表(Unsubscribing Operation Table,UOT)、消息历史队列(Message History Queue,MHQ)、等待消息队列(Waiting Message Queue,WMQ)。
本发明的每个节点的过滤条件表中每一项的格式为:(prefix,extended_filter)。其中,prefix为发出opPeer的编码前缀,extended_filter为扩展过滤条件。extended_filter的格式为:(filter,opPeer,opNo),其中filter为订阅请求中指定的过滤条件,opPeer为发出订阅请求的节点编码,opNo为该订阅操作的序号。
本发明的每个节点的取消操作表记录了它在过去MaxDT时间内所执行的unsubscribe操作,其中MaxDT为网络中任意两个节点之间的消息发送的最长时间。取消操作表中的每一项为:(opNo,ef,minPrefixLen)其中opNo表示取消操作的序号,ef表示所取消的扩展过滤条件,minPrefixLen表示所发送的updateSubscription消息的目标前缀的最小长度。
本发明的每个节点的消息历史队列记录了它在过去MaxDT时间内所收到的、并已处理的消息,其中MaxDT为网络中任意两个节点之间的消息发送的最长时间。
本发明的每个节点的等待消息队列记录了它在过去MaxDT时间内所收到的、由于种种原因尚未处理的消息,其中MaxDT为网络中任意两个节点之间的消息发送的最长时间。
下面介绍本发明的全部消息类型。本发明有如下四种类型的消息:
1、subscription消息,表示一个订阅请求。格式为:(subscription:subscriber_prefix,extended_filter,destine_prefix),其中,subscriber_prefix表示订阅者的编码区间;extended_filter表示订阅者指定的扩展过滤条件;destine_prefix表示本消息的目标编码区间。
2、updateSubscription消息,表示某编码区间将取消某订阅条件,并增加另一些订阅条件。格式为:(updateSubscription:subscriber_prefix,canceled_filter,added_filters,destine_prefix,opPeer,opNo),其中,subscriber_prefix表示发出请求的编码区间;canceled_filter表示被取消的过滤条件;added_filters表示要增加的过滤条件的集合;destine_prefix表示本消息的目标编码区间;opPeer表示执行unsubscribe操作的节点编码;opNo表示unsubscribe操作的序号。
3、notification消息,表示某事件的到达。格式为:(notification:event,destine_prefix,opPeer,opNo),其中,event表示被发布的事件;destine_prefix表示本消息的目标编码区间;opPeer表示执行publish操作的节点编码;opNo表示publish操作的序号。
4、redirect消息,用于封装原有的消息并将其发送到目标编码区间中的任一节点。格式为:(redirect:middle_id,destine_prefix,original_message),其中,middle_id表示本消息的目标编码,它是以destine_prefix为前缀的区间的中间编码值;destine_prefix表示原消息的目标编码区间;original_message为原消息的内容。
5、requestFilter消息,用于向某邻居结点请求获得其过滤条件表。格式为:(requestFilter:requester_id),其中,requester_id表示请求节点的编码。
下面介绍本发明对各种操作和消息的处理流程。为了方便描述,本发明定义几个基本函数:
length(n):返回编码n的长度;
left(n,i):返回编码n的前i位;
beginWith(n1,n2):测试n1是否以n2为前缀,若是则返回true,否则返回false;
mid_key(pre):返回以pre为前缀的编码区间的中间编码值;
commonPrefix(n1,n2):返回n1和n2的共同前缀。
以下为本发明对各种操作和消息的处理流程。
设节点n1执行操作subscribe(f1),该节点当前的操作序号为opNo1。节点n1的处理流程如图9所示。
设节点n1执行操作unsubscribe(ef1),该节点当前的操作序号为opNo1。节点n1的处理流程如图10所示。
设节点n1执行操作publish(e1),该节点当前的操作序号为opNo1。节点n1的处理流程如图11所示。
设节点n1刚加入P2P网络,它将初始化自己的过滤条件表。初始化操作的处理流程如图12所示。
设节点n1收到消息msg1,其内容为(subscription:sp1,ef1,dp1)。节点n1的处理流程如图13所示。
上述过程中用到一个子过程addFilter(sp1,ef1),用于向n1的过滤条件表中增加一个过滤项,并检查n1的等待消息队列中有无相应的取消订阅消息,若有则进行相应的处理。其中sp1为编码前缀,ef1为扩展过滤条件。
子过程addFilter(sp1,ef1)的执行过程如图14所示,它采用递归的方法来实现。由于每次递归调用时,新的ef均能被上次的ef所真覆盖,所以该过程必能在有限步内终止。
设节点n1收到消息msg1,其内容为(updateSubscription:sp1,ef1,AF,dp1,opPeer1,opNo1)。节点n1的处理流程如图15所示。
设节点n1收到消息msg1,其内容为(notification:e1,dp1,opPeer1,opNo1)。节点n1的处理流程如图16所示。
设节点n1收到消息msg1,其内容为(redirect:mid1,dp1,origin_msg1)。节点n1的处理流程如图17所示。
设节点n1收到消息msg1,其内容为(requestFilter:n2)。节点n1将把自己的过滤条件表转发给n2,其处理流程如图18所示。
Claims (7)
1、一种构建于结构化P2P网络之上的pub/sub系统的路由方法,该系统的节点包括P2P层、pub/sub层和应用层,所述P2P层中含有路由表,所述pub/sub层中含有过滤条件表;Pub/sub层建立在P2P层之上,向应用层提供事件的订阅和通知服务,该方法包括以下步骤:
1)对所有节点进行编码,并按编码的前缀将所述节点划分成不同层次的子空间;对于每个节点,在每个子空间中选择一个用于转发该子空间中其他节点的消息的汇合节点;
2)以所述子空间为基础,为每个节点建立相应的路由表项,并记录各子空间相应的汇合节点;
3)以所述子空间为基础,为每个节点建立相应的过滤条件表,记录各子空间所定义的订阅条件;
4)节点消息转发时,首先将消息转发到各目标子空间的所述汇合节点,汇合节点处理该消息,然后按所述汇合节点的路由表和过滤条件表将该消息转发给该汇合节点所在子空间中的相应节点。
2、如权利要求1所述的构建于结构化P2P网络之上的pub/sub系统的路由方法,其特征在于,该方法还包括,当一个新节点动态加入时,首先进行P2P层的初始化,以构建相应路由表,然后进行pub/sub层的初始化,以构建过滤条件表;当一个节点失效时,则将转发到该失效节点的消息转发至与该失效节点处于同一子空间的其它节点处。
3、如权利要求1所述的构建于结构化P2P网络之上的pub/sub系统的路由方法,其特征在于,所述P2P层与应用层、pub/sub层之间交互时记录其间的操作序号,设定每个节点的初始操作序号为1,执行一个操作后,操作序号加1;所述消息中含有操作序号的信息;节点收到一个消息时,比较该消息中的序号加1和自己的序号的大小,并将自己的序号设为两者的最大序号。
4、如权利要求1至3中任一权利要求所述的构建于结构化P2P网络之上的pub/sub系统的路由方法,其特征在于,所述消息转发具体为:
1)节点欲订阅消息时,将订阅条件转发给各子空间的汇合节点;当汇合节点收到此订阅条件后,将该订阅条件加入自己的过滤条件表,再将该订阅条件转发到该子空间的其他节点;
2)节点取消订阅时,将取消订阅消息转发给各子空间的汇合节点;汇合节点收到该取消订阅消息后,将相应的过滤条件取消,再将该取消订阅消息转发到该子空间的其他节点;
3)当某节点发布事件时,将检查过滤条件表以决定向哪些子空间发送该事件,然后将该事件发往相应的子空间的汇合节点;汇合节点收到该事件后,检查过滤条件表以决定向哪些更小的子空间发送该事件,这样经过若干次转发后,可使该事件到达所有定义了相应订阅条件的节点。
5、如权利要求4所述的构建于结构化P2P网络之上的pub/sub系统的路由方法,其特征在于,该方法还包括,当子空间内的两节点发送的订阅条件有所属关系时,仅发送订阅条件大的哪一条;若订阅条件大的在后发送,则覆盖前一条件;若订阅条件大的在前发送,则在后的订阅条件小的订阅条件只需被发送到本子空间内的其他节点;当有所属关系的两订阅条件并发时,在下一非并发转发处,按前述方式发送。
6、如权利要求4所述的构建于结构化P2P网络之上的pub/sub系统的路由方法,其特征在于,该方法还包括,当子空间内的两节点发送的取消订阅消息有所属关系时,则取消订阅条件小的订阅消息时,仅向子空间内的其他节点发送取消订阅消息;若取消订阅条件大的订阅消息时,汇合节点将向各子空间发送该取消订阅消息,同时将较小的订阅条件发送出去;当有所属关系的两取消订阅条件的消息并发时,在下一非并发转发处,按前述方式发送。
7、如权利要求4所述的构建于结构化P2P网络之上的pub/sub系统的路由方法,其特征在于,该方法还包括,当有所属关系的取消订阅操作和订阅操作并发时,若取消订阅的条件隶属于订阅的条件,则在下一非并发转发处,仅转发订阅消息;若订阅的条件隶属于取消订阅的条件,则在下一非并发转发处,先转发取消订阅消息,再转发订阅消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100099742A CN1327653C (zh) | 2004-12-09 | 2004-12-09 | 构建于结构化P2P网络之上的pub/sub系统的路由方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100099742A CN1327653C (zh) | 2004-12-09 | 2004-12-09 | 构建于结构化P2P网络之上的pub/sub系统的路由方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1625119A true CN1625119A (zh) | 2005-06-08 |
CN1327653C CN1327653C (zh) | 2007-07-18 |
Family
ID=34763151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100099742A Expired - Fee Related CN1327653C (zh) | 2004-12-09 | 2004-12-09 | 构建于结构化P2P网络之上的pub/sub系统的路由方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1327653C (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101938503A (zh) * | 2009-09-27 | 2011-01-05 | 北京暴风网际科技有限公司 | 一种点对点网络中的对端选择系统和方法 |
CN102420864A (zh) * | 2011-12-01 | 2012-04-18 | 河海大学 | 一种面向海量数据的数据交换方法 |
CN102427419A (zh) * | 2011-08-09 | 2012-04-25 | 国电南瑞科技股份有限公司 | 一种消息总线支持多态功能的方法 |
CN101394415B (zh) * | 2007-09-19 | 2012-08-29 | 北京邮电大学 | 用于结构化覆盖网络的资源广播交互机制的方法及装置 |
CN102711209A (zh) * | 2012-06-01 | 2012-10-03 | 广州市香港科大霍英东研究院 | 一种适用于无线传感器网络的动态自组织分层次路由方法 |
CN102833151A (zh) * | 2012-07-02 | 2012-12-19 | 上海交通大学 | 基于内容覆盖和反馈机制的用户个性化优先级路由算法 |
CN103412883A (zh) * | 2013-07-17 | 2013-11-27 | 中国人民解放军国防科学技术大学 | 基于p2p技术的语义智能信息发布订阅方法 |
CN103729461B (zh) * | 2014-01-12 | 2017-02-01 | 中国科学院软件研究所 | 一种基于历史记录数据挖掘的发布和订阅方法 |
WO2017214801A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息处理方法及节点 |
WO2017214803A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息回复方法及节点 |
WO2017214802A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息处理方法及节点 |
WO2017214810A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的路由方法及节点 |
CN111181853A (zh) * | 2019-12-30 | 2020-05-19 | 布比(北京)网络技术有限公司 | 一种基于区块链的纯分布式数据交换方法及系统 |
CN112702270A (zh) * | 2020-12-18 | 2021-04-23 | 深圳赛安特技术服务有限公司 | 基于事件分发机制的节点调用方法、系统及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120768A (zh) * | 1995-09-05 | 1996-04-17 | 张向东 | 在公用电话网中分层次传输数据的方法和装置 |
US6366926B1 (en) * | 1998-12-31 | 2002-04-02 | Computer Associates Think, Inc. | Method and apparatus for the dynamic filtering and routing of events |
AU2001262970A1 (en) * | 2000-05-02 | 2001-11-12 | Sun Microsystems, Inc. | Event service method and system |
WO2004072800A2 (en) * | 2003-02-06 | 2004-08-26 | Progress Software Corporation | Dynamic subscription and message routing on a topic between a publishing node and subscribing nodes |
US7293038B2 (en) * | 2003-02-25 | 2007-11-06 | Bea Systems, Inc. | Systems and methods for client-side filtering of subscribed messages |
-
2004
- 2004-12-09 CN CNB2004100099742A patent/CN1327653C/zh not_active Expired - Fee Related
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101394415B (zh) * | 2007-09-19 | 2012-08-29 | 北京邮电大学 | 用于结构化覆盖网络的资源广播交互机制的方法及装置 |
CN101938503A (zh) * | 2009-09-27 | 2011-01-05 | 北京暴风网际科技有限公司 | 一种点对点网络中的对端选择系统和方法 |
CN101938503B (zh) * | 2009-09-27 | 2013-03-20 | 北京暴风科技股份有限公司 | 一种点对点网络中的对端选择系统和方法 |
CN102427419A (zh) * | 2011-08-09 | 2012-04-25 | 国电南瑞科技股份有限公司 | 一种消息总线支持多态功能的方法 |
CN102427419B (zh) * | 2011-08-09 | 2014-03-26 | 国电南瑞科技股份有限公司 | 一种消息总线支持多态功能的方法 |
CN102420864B (zh) * | 2011-12-01 | 2014-03-26 | 河海大学 | 一种面向海量数据的数据交换方法 |
CN102420864A (zh) * | 2011-12-01 | 2012-04-18 | 河海大学 | 一种面向海量数据的数据交换方法 |
CN102711209A (zh) * | 2012-06-01 | 2012-10-03 | 广州市香港科大霍英东研究院 | 一种适用于无线传感器网络的动态自组织分层次路由方法 |
CN102711209B (zh) * | 2012-06-01 | 2015-02-11 | 广州市香港科大霍英东研究院 | 一种适用于无线传感器网络的动态自组织分层次路由方法 |
CN102833151A (zh) * | 2012-07-02 | 2012-12-19 | 上海交通大学 | 基于内容覆盖和反馈机制的用户个性化优先级路由算法 |
CN102833151B (zh) * | 2012-07-02 | 2015-07-08 | 上海交通大学 | 基于内容覆盖和反馈机制的用户个性化优先级路由方法 |
CN103412883A (zh) * | 2013-07-17 | 2013-11-27 | 中国人民解放军国防科学技术大学 | 基于p2p技术的语义智能信息发布订阅方法 |
CN103412883B (zh) * | 2013-07-17 | 2016-09-28 | 中国人民解放军国防科学技术大学 | 基于p2p技术的语义智能信息发布订阅方法 |
CN103729461B (zh) * | 2014-01-12 | 2017-02-01 | 中国科学院软件研究所 | 一种基于历史记录数据挖掘的发布和订阅方法 |
WO2017214801A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息处理方法及节点 |
WO2017214803A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息回复方法及节点 |
WO2017214802A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的消息处理方法及节点 |
WO2017214810A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的路由方法及节点 |
CN111181853A (zh) * | 2019-12-30 | 2020-05-19 | 布比(北京)网络技术有限公司 | 一种基于区块链的纯分布式数据交换方法及系统 |
CN112702270A (zh) * | 2020-12-18 | 2021-04-23 | 深圳赛安特技术服务有限公司 | 基于事件分发机制的节点调用方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN1327653C (zh) | 2007-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1625119A (zh) | 构建于结构化P2P网络之上的pub/sub系统的路由方法 | |
EP1832063B1 (en) | Virtual multicast routing for a cluster having state synchronization | |
US20020143951A1 (en) | Method and system for multicast to unicast bridging | |
CN101068186A (zh) | 一种客户端节点网络拓扑构造方法及流媒体分发系统 | |
CN101035264A (zh) | 一种内容分发网络系统及其内容和服务调度方法 | |
CN1489066A (zh) | 通信系统,通信服务器与通信方法 | |
CN1716905A (zh) | 虚拟路由器对应多点传送数据包中继装置 | |
CN101039247A (zh) | 一种点到点网络系统及重叠网间节点的互通方法 | |
CN1627760A (zh) | 用于无线多跳专门网络的协议 | |
CN1648803A (zh) | 在具有耦合计算机的网络内提供服务系统和方法 | |
EP1896981A2 (en) | Methods and apparatus for enabling a dynamic network of interactors according to personal trust levels between interactors | |
CN1852105A (zh) | 一种实现端到端文件共享的系统及方法 | |
CN1764171A (zh) | 将资源请求与对应的资源会合 | |
CN101068201A (zh) | 通信架构、通信架构中的接入点及其传送数据分组的方法 | |
CN101030946A (zh) | 一种实现数据业务的方法及系统 | |
CN101075879A (zh) | 一种数据下载方法 | |
CN1747447A (zh) | 区分服务网络域内支持不同服务质量的ip组播方法 | |
ATE476805T1 (de) | Verfahren zur verwaltung von gruppenkommunikationen in einem kommunikationsnetz | |
WO2013004191A1 (zh) | 一种消息推送方法及即时通信服务器 | |
US8385533B2 (en) | Bidding work assignment on conference/subscribe RTP clearing house | |
CN1588927A (zh) | 一种大规模多媒体接入网关的方法 | |
CN1722664A (zh) | 集群模式下实现网络安全设备高可用性的方法 | |
CN101340423B (zh) | 一种基于元调度环的多集群作业调度方法 | |
EP2518950A1 (en) | Network location recognition system and terminal location recognition device | |
CN101044741A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070718 Termination date: 20181209 |