CN101399740A - 一种p2p网络中节点优雅退出的方法和系统 - Google Patents
一种p2p网络中节点优雅退出的方法和系统 Download PDFInfo
- Publication number
- CN101399740A CN101399740A CNA2007101517744A CN200710151774A CN101399740A CN 101399740 A CN101399740 A CN 101399740A CN A2007101517744 A CNA2007101517744 A CN A2007101517744A CN 200710151774 A CN200710151774 A CN 200710151774A CN 101399740 A CN101399740 A CN 101399740A
- Authority
- CN
- China
- Prior art keywords
- node
- message
- withdraws
- network
- key assignments
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种对等P2P网络中节点优雅退出的方法,包括以下步骤:退出节点开始优雅退出时,向确定接收其键值的邻居节点发送离开消息并接收所述邻居节点的确认消息;所述退出节点向所述邻居节点转移键值,并向其他节点发送离开消息;所述键值转移完成后,所述退出节点退出P2P网络。退出节点向邻居节点转移键值期间,退出节点和邻居节点通过配合,完成对新请求的响应。本发明还公开了一种P2P网络中节点优雅退出的系统。通过使用本发明,实现了P2P网络中节点优雅退出过程中,对该退出节点负责的业务的顺利切换转移。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种P2P(Peer to Peer,对等网络)网络中节点优雅退出的方法和系统。
背景技术
P2P技术充分利用网络中的各个节点的能力,由各节点互相提供服务。使用P2P技术将大大提高网络中节点的利用率,从而进一步提升网络设备和信息服务的效能。P2P网络分为结构化、非结构化和松散结构化网络。其中,结构化P2P网络的特点在于资源的发布和网络拓扑紧密相关,资源按照P2P拓扑中的逻辑地址精确的分布在网络中。在这类网络中的每个节点都具有虚拟的逻辑地址,并根据地址使所有节点构成一个相对稳定而紧密的拓扑结构。结构化P2P网络中,对资源根据Hash(哈希算法)后生成的值为Key(关键字)。因为Key的名字空间和P2P节点的名字空间存在映射关系,资源根据该Key和映射关系分布在结构化P2P网络中,之后可以通过该Key在P2P网络中找到该资源。建立在P2P技术之上的网络通常都具有良好的扩展性、易管理性、自组织等特点。
P2P网络中的节点可能是在任意时刻加入网络的,也可能会在任意时刻退出网络。节点退出P2P网络又分为优雅退出和非优雅退出两种方式:非优雅退出是由于节点设备宕机、网络中断等突然发生的故障造成的,会给网络造成较大的影响,节点应当尽量避免非优雅退出;优雅退出是节点在真正退出网络前,先把自己在P2P网络中负责的Key/Value(键值)对转移到相应的节点上,然后才退出网络。优雅退出可以尽可能的减少节点退出行为对P2P网络造成的影响。
现有技术中提出了一种实现结构化P2P网络中节点优雅退出的方法,具体步骤为:
步骤s101、退出节点停止响应PING。
步骤s102、退出节点向已经打开的连接发送CLOSE命令。
步骤s103、退出节点向邻居集合中的节点发送UPDATE(更新)消息,通知这些节点更新路由表。
步骤s104、退出节点将其保存的数据转移到新的负责这些数据的节点上。
步骤s105、退出节点关闭所有打开的连接。
该方法的一应用场景如图1所示,在一个结构化P2P网络中,节点A的邻居节点有B、C、D、E、F,其中B、F是A的逻辑上最近的邻居节点,B、F在A退出P2P网络后,负责A上的Key/Value。A在停止响应PING、向已打开的连接发送CLOSE命令后,向B、C、D、E、F发送UPDATE消息,通知这些节点更新路由表。然后将Key/Value向B、F转移,最后在Key/Value转移完成后关闭所有的连接,退出P2P网络。
上述优雅退出方案中,退出节点先通知邻居集合中的节点修改路由表,再转移数据,在实施时存在以下两个方面问题:
(1)退出节点只通知了邻居集合中的节点修改路由表,未通知那些虽然不在邻居集合中但在路由表中有该退出节点的节点进行路由更新,这些节点路由更新只能靠P2P网络的定时更新来进行,路由收敛比较慢。
(2)由于在网络中消息传递的快慢不同,不同的节点更新路由表和转移数据所需的时间长短不同,在节点更新路由表和转移数据两个过程中其他节点的路由表有可能指向新节点,也可能仍指向退出节点,有的Key/Value转移完成,有的Key/Value还没有转移。因此会造成两种情况,一种情况是新的业务请求消息仍发给了退出节点,但是退出节点正在关闭它与其他节点的连接,新的业务请求会失败;另一种情况是新的业务请求消息到达了在接收转移数据的节点,数据转移可能还没有完成,新的业务请求很可能会失败。
上述问题的一应用场景如图2所示,描述优雅退出过程中的一个状态。延续图1,节点B、C、E、F已经修改了路由,而节点D还没有修改路由,Key/Value的转移过程还在继续。这时会存在这样的问题:节点D还会向节点A发消息,但是由于节点A正在关闭其与其他节点的连接,它不能响应D转发过来的消息;C、E把原先转发给A的消息转发给了B或F,由于Key/Value还在进行转移,因此到达B、F的请求有可能无法得到正确响应。
发明内容
本发明的实施例提供一种P2P网络中节点优雅退出的方法和系统,以实现P2P网络中节点优雅退出过程中,路由的快速收敛以及退出节点对接收到的业务请求的正常处理或转移。
为达到上述目的,本发明的实施例提供一种P2P网络中节点优雅退出的方法,包括如下步骤:
退出节点开始优雅退出时,向确定接收其键值的邻居节点发送离开消息并接收所述邻居节点的确认消息;
所述退出节点向所述邻居节点转移键值,并向其他节点发送离开消息;
所述键值转移完成后,所述退出节点退出P2P网络。
本发明的实施例还提供一种P2P网络中节点优雅退出的方法,包括如下步骤:
退出节点优雅退出P2P网络时,所述退出节点的邻居节点接收所述退出节点发送的离开消息;
所述邻居节点接收所述退出节点转移的键值;
所述键值转移过程中,所述邻居节点更新本地路由表。
本发明的实施例还提供一种P2P网络中节点优雅退出的方法,包括如下步骤:
退出节点优雅退出P2P网络时,保存有所述退出节点路由关系的其他节点接收所述退出节点发送的离开消息或离开确认消息;
所述其他节点根据所述离开消息或离开确认消息更新本地路由表。
本发明的实施例还提供一种P2P网络中节点优雅退出的处理方法,包括以下步骤:
退出节点在优雅退出P2P网络过程中,与邻居节点配合处理在所述优雅退出过程中接收到的消息。
本发明的实施例还提供一种P2P网络中节点优雅退出的系统,包括:
退出节点,用于在优雅退出的过程中,向与本节点存在路由关系的邻居节点和其他节点发送离开消息,将本地负责的键值向所述邻居节点转移;并在键值转移完成后退出P2P网络;
邻居节点,作为所述退出节点的邻居节点,用于接收到所述退出节点发送的离开消息时,接收并存储所述退出节点转移的键值;
其他节点,作为与所述退出节点存在路由关系的非邻居节点,用于在接收到所述退出节点发送的离开消息时,对本地的路由表进行更新。
与现有技术相比,本发明的实施例至少具有以下优点:
通过使用上述实施例提供的方法,通过退出节点与邻居节点的配合,使得退出节点在优雅退出过程中,可以继续响应业务请求;键值转移完成后,对请求的响应可以无缝的转移到在线的邻居节点上。另外,退出节点在开始退出时就通知其他节点开始更新路由表,因此路由的收敛速度快。
附图说明
图1是现有技术中一种P2P网络中节点优雅退出的方法的示意图;
图2是现有技术中一种P2P网络中节点优雅退出的过程中的状态图;
图3是本发明实施例一的一种P2P网络中节点优雅退出的方法的流程图;
图4是本发明实施例二的一种P2P网络中节点优雅退出的方法的流程图;
图5是本发明实施例二中一种采用pastry算法的P2P网络中的网络拓扑情况的具体场景图;
图6是本发明实施例二中经过变换后的网络拓扑情况图;
图7是本发明实施例二中Leaving Peer处理业务请求的一示意图;
图8是本发明实施例二中Leaving Peer处理业务请求的另一示意图;
图9是本发明实施例二中Leaving Peer处理业务请求的另一示意图;
图10是本发明实施例三中一种P2P网络中节点优雅退出的方法的流程图;
图11是本发明实施例四中一种P2P网络中节点优雅退出的方法的流程图;
图12是本发明实施例五中一种P2P网络中节点优雅退出系统的结构图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明的实施例一中,一种P2P网络中节点优雅退出的方法如图3所示,包括以下步骤:
步骤s301、退出节点开始优雅退出时,向确定接收其键值的邻居节点发送离开消息并接收邻居节点的确认消息。
步骤s302、退出节点将需要转移的键值向所述确定接收其键值邻居节点转移,并向其他节点发送离开消息。
步骤s303、邻居节点接收退出节点转移的键值。
步骤s304、键值转移过程中,退出节点与邻居节点互相配合对接收到的消息进行处理。
步骤s305、键值转移完成后,退出节点退出P2P网络。
上述流程中,接收到退出节点发送的离开消息的邻居节点和其他节点,还需要进行本地路由表的更新。
以下结合具体的应用场景,对本发明中P2P网络中节点优雅退出的方法进行描述。以下描述中,Leaving Peer表示P2P网络中正在优雅退出的节点;Neighbor Peer表示P2P网络中Leaving Peer逻辑上的邻居节点,一般情况下Neighbor Peer与Leaving Peer的ID号在P2P网络中是最接近的,根据P2P网络中采用的算法的不同,Leaving Peer可以有一个或多个Neighbor Peer;Other Peer表示P2P网络中除Leaving Peer、Neighbor Peer外的其他节点,因为P2P网络中一个Leaving Peer不可能感知所有的其他节点,所以Other Peer一般指和该Leaving Peer有路由关系的节点;Leaving Peer通过Leaving(离开)消息通知各节点其将要退出P2P网络。
本发明的实施例二中,一种P2P网络中节点优雅退出的方法如图4所示,该图中以Leaving Peer具有两个邻居节点Neighbor Peer1和Neighbor Peer2、两个已知的其他节点Other Peer1和Other Peer2为例,在邻居节点和其他接点的数量发生变化时,该流程是相同的。本实施例中的P2P网络中节点优雅退出方法包括以下步骤:
步骤s401、Leaving Peer向确定接收其Key/Value的Neighbor Peer发送Leaving消息。
具体的,该Leaving消息可以是“Leaving&Transfer Key Range”(离开&转移键值范围),即Leaving Peer通知Neighbor Peer其将要退出P2P网络,以及将要向Neighbor Peer转移的Key值范围;也可以是Leaving Peer发起Transfer过程,带上Transfer原因的Leaving消息。
步骤s402、Neighbor Peer接收该Leaving消息,向Leaving Peer发送OK确认消息。
步骤s403、Neighbor Peer更新本节点负责的Key值范围并更新路由表。
步骤s404、Leaving Peer向所有其已知的Other Peer发送Leaving消息,通知Other Peer其将要退出P2P网络。
Leaving Peer在开始退出之时就通知了Neighbor Peer和Other Peer更新路由表,这样可以加快网络路由的收敛速度。
步骤s405、Leaving Peer向Neighbor Peer转移Key/Value。
其中,步骤s404和步骤s405没有时序限制,考虑到发送Leaving消息相对转移Key/Value是一个较短过程,可以步骤s404在前。图中对两个Other Peer的通知时,采取了不同的通知流程,对其中一个s404和s405进行了交换。
步骤s406、Other Peer收到Leaving消息后,开始更新路由表。
步骤s407、Leaving Peer和Neighbor Peer互相配合,完成对Leaving Peer开始退出程序后接收到的业务请求的响应。
其中,Other Peer在更新路由表的过程中,不管路由表是否更新完成,都依照当前的路由表来转发业务请求消息,这时可能会出现:应该给Leaving Peer的消息,可能发给Leaving Peer,也可能发给该Leaving Peer的Neighbor Peer。具体的,业务请求的内容为“Join/Put/Get/Remove”,其中Join表示节点加入到P2P网络中的行为,Put表示节点将资源加入到P2P网络中的行为,Get表示节点从P2P网络中获取资源的行为,Remove表示节点从P2P网络中移出资源的行为。
Neighbor Peer在和Leaving Peer的互相配合中遵守下面的规则:
(1)Neighbor Peer收到非Get/Remove请求消息后正常处理;
(2)Neighbor Peer收到Get/Remove请求,如果本节点不持有该Key/Value而Leaving Peer将向本节点转发该Key/Value,则将Get/Remove请求转发给Leaving Peer;
(3)如果P2P网络严格要求数据同步,Neighbor Peer收到Put请求消息也需要向Leaving Peer转发Put请求;
(4)如果P2P网络严格要求数据同步,Neighbor Peer收到Remove请求消息,在持有该Key/Value且是Leaving Peer向本节点转发过来的情况下,不仅要处理该Remove请求,还要转发Remove请求。
Leaving Peer在和Neighbor Peer的配合中遵守下面的规则:
(1)Leaving Peer收到非Neighbor Peer转发的消息,向消息的转发者发送一个Leaving消息,继续按照下面的规则处理;
(2)Leaving Peer收到Join/Put请求,根据Key值向相应的Neighbor Peer转发;
(3)Leaving Peer收到Remove请求,如果该Key/Value已经转移过,且Remove消息不是从Transfer过该Key/Value的Neighbor Peer过来的,则将Remove消息转发给相应的Neighbor Peer;如果本节点持有该Key/Value则删除该Key/Value;
(4)如果P2P网络严格要求数据同步,Leaving Peer收到Put请求不仅要向Neighbor Peer转发Put请求,还需要在本节点下增加该Put的Key/Value;
(5)Leaving Peer收到其他消息,做正常的处理。
步骤s408、Leaving Peer完成转移Key/Value过程,向所有节点(包括Neighbor Peer和Other Peer)发送Leave(离开确认)消息,退出P2P网络,不再响应任何消息。在具体实现中,该步骤为可选,但通过增加该步骤,可以使P2P网络中的节点更加明确的得知Leaving Peer的退出。
上述实施例中,Leaving Peer在开始优雅退出后仍有可能会收到各种消息,包括需要其转发的消息、需要其处理的消息。这些消息的转发节点都是LeavingPeer在P2P网络中的上游节点,这些上游节点之前可能收到了Leaving Peer给其发送的Leaving消息,但是没有来得及更新路由表,所以消息还会发送到Leaving Peer;也可能是因为这些上游节点在一段时间内还没有和Leaving Peer有交互,Leaving Peer还没有给其发过Leaving消息。Leaving Peer对这两种情况不做区分,都给这些上游节点发一个Leaving消息,这样可以促进这些转发节点更新路由表。随着这些上游节点路由表的更新,转发到Leaving Peer的消息会逐渐趋近于无。同时,随着转移过程的进行,从Neighbor Peer转发过来的消息也会渐渐趋近于无。Leaving Peer可以平滑地完成优雅退出。
以如图5所示的网络拓扑情况的具体场景为例,对本发明的实施例二中的方法做详细描述,其中节点所在网络为采用pastry算法的P2P网络。为了方便描述,图5只画出部分节点和部分节点的Key值范围,其中,Peer 20为LeavingPeer,Peer 11和Peer 27为Peer 20的Neighbor Peer,Peer 10、Peer 36和Peer 37等为Other Peer;图中的箭头表示节点间的路由关系,例如Peer 37可以直接路由消息到Peer 20;节点下方的文字说明节点负责的Key值范围,Peer 20负责的Key值范围是[16,23],Peer 11负责的Key值范围是[11,15],Peer 27负责的Key值范围是[24,31]。本具体场景的具体步骤如下:
步骤s501、Peer 20向Peer 11发送“Leaving & Transfer[16,19]”消息,向Peer 27发送“Leaving & Transfer[20,23]”消息。
步骤s502、Peer 11和Peer 27接收上述消息,并向Peer 20发送OK确认消息。
步骤s503、Peer 11和Peer 27更新本身负责的Key值范围,并更新路由表。
步骤s504、Peer 20收到Peer 11和Peer 27的OK确认消息后,向Peer 10、Peer36、Peer 37发送Leaving消息。
步骤s505、Peer 10、Peer 36、Peer 37收到Leaving消息后开始更新路由表。
步骤s506、Peer 20向Peer 11转移[16,19]的Key/Value,Peer 20向Peer 27转移[20,23]的Key/Value。
图6是完成以上步骤后网络的拓扑情况,其中Peer 10、Peer 36完成了路由表更新,而Peer 37还没有完成路由表更新;Peer 11负责的Key值范围是[11,19],Peer 27负责的Key值范围是[20,31];转移只完成了一部分,Peer 11上得到了Key=16、17的Value,Peer 27上得到了Key=20的Value。
下面以图6所示的P2P网络状态下的具体场景为例,描述完成上述步骤后Leaving Peer对各种具体业务请求的处理过程,其中业务请求的具体内容为:“Join/Put/Get/Remove”。
(1)对Join消息的处理:
Peer 37转发了一个Peer 17的Join消息。因为Peer 37的路由表还没有完成更新,Peer 37认为离ID=17最近的节点为Peer 20,所以Peer 37把Join消息转发到了Peer 20上,Peer 20因为是Leaving Peer,遵从对Leaving Peer的规定,向Peer37发送一个Leaving消息,把Join消息转发给Peer 11(因为此时Peer 11的Key值范围是[11,19]),Peer 11收到Peer 17的Join消息后则按P2P网络规定的Join消息的处理方法来处理这个Join消息。见图7中虚线箭头所示“17 Join”的传递过程。
(2)对Put消息的处理:
A)、Peer 37转发了一个Put Key=21的消息。
因为Peer 37的路由表还没有完成更新,Peer 37认为离ID=21最近的节点为Peer 20,所以Peer 37把Put消息转发到了Peer 20上,Peer 20因为是LeavingPeer,遵从对Leaving Peer的规定,向Peer 37发送一个Leaving消息,把Put消息转发给了Peer 27(因为此时Peer 27的Key值范围是[20,31]),Peer 27收到PutKey=21的消息后则按P2P网络规定的Put消息的处理方法来处理这个Put消息。见图7中虚线箭头所示“21 Put”的传递过程。
B)、Peer 10转发了一个Put Key=19的消息。
因为Peer 10的路由表已经完成更新,Peer 10认为离ID=19最近的节点为Peer 11,所以Peer 10把Put消息转发到了Peer 11上,Peer 11收到Put Key=19的消息后则按P2P网络规定的Put消息的处理方法来处理这个Put消息。见图7中虚线箭头所示“19 Put”的传递过程。
(3)对Get消息的处理:Peer 10转发了一个Get Key=18的消息。
因为Peer 10的路由表已经完成更新,Peer 10认为离ID=18最近的节点为Peer 11,所以Peer 10把Get消息转发到Peer 11上,Peer 11收到Get消息后检查发现Key=18的Value还没有从Peer 20 Transfer过来,所以它把Get Key=18消息转发给了Peer 20,Peer 20收到Peer 11的转发的Get消息后则按P2P网络规定的Get消息的处理方法来处理这个Get消息,并且向Get的请求Peer发送一个Leaving消息,促使该Peer更新路由表。见图8中虚线箭头所示“18 Get”的传递过程。
(4)对Remove消息的处理:Peer 36转发了一个Remove Key=23的消息。
因为Peer 36的路由表已经完成了更新,Peer 36认为离ID=23最近的节点为Peer 27,所以Peer 36把Remove消息转发到了Peer 27上,Peer 27收到Remove消息后检查发现自己不持有Key=23的Value,但是Peer 20将向自己Transfer该Key/Value,则把Remove Key=23的消息转发给了Peer 20,Peer 20收到RemoveKey=23的消息后发现该Key/Value还没有被Transfer,则按P2P网络规定的Remove消息的处理方法来处理这个Remove消息,并且向Remove的请求Peer发送一个Leaving消息,促使该Peer更新路由表。见图8中虚线箭头所示“23Remove的传递过程。
图9是Peer 20完成Key/Value转移,其他节点都完成路由表更新后的状态。
本发明的实施例三中,一种P2P网络中节点优雅退出的方法如图10所示,其中Neighbor Peer1和Neighbor Peer2为Leaving Peer的任意两个邻居节点,Other Peer1和Other Peer2为Other Peer中的任意两个节点。本实施例包括以下步骤:
步骤s1001~步骤s1005、与实施例二中步骤s401~步骤s405相同,在此不作重复描述。
步骤s1006、Other Peer收到Leaving消息后,开始更新路由表。与实施例二的区别在于,Other Peer在本地同时设置一个定时器,该定时器超时后即便没有收到步骤s1008中的Leave消息也认为Leaving Peer完成离开,将LeavingPeer从路由表中删除。
步骤s1007、Leaving Peer和Neighbor Peer互相配合,完成Leaving Peer开始退出后对收到的业务请求的响应。
步骤s1008、Leaving Peer完成转移Key/Value后,向所有已知的节点(包括Neighbor Peer、Other Peer)发送Leave消息。
步骤s1009、Leaving Peer退出P2P网络,不再响应任何消息。
其中Leave消息为:Leaving Peer通知节点其已经退出P2P网络。收到Leave消息的节点认为Leaving Peer离开了P2P网络,将Leaving Peer从路由表中删除。
本发明的实施例四中,一种P2P网络中节点优雅退出的方法如图11所示,其中Neighbor Peer1和Neighbor Peer2为Leaving Peer的任意两个邻居节点,Other Peer1和Other Peer2为Other Peer中的任意两个节点。本实施例包括以下步骤:
步骤s1101~步骤s1103、与实施例二中步骤s401~步骤s403相同,在此不作重复描述。
步骤s1104、Leaving Peer向Neighbor Peer转移Key/Value,直到转移完成。
步骤s1105、Leaving Peer向所有其已知的Other Peer发送Leaving消息。
步骤s1106、Other Peer收到Leaving消息后,开始更新路由表。
步骤s1107、Leaving Peer和Neighbor Peer互相配合,完成开始退出后对收到的业务请求的响应,该过程持续一段时间,与实施例二的区别在于,此期间Leaving Peer收到的业务请求“Join/Put/Get/Remove”消息都转发给NeighborPeer处理,对Keep-alive、Update路由表等消息不再响应。
步骤s1108、Leaving Peer向所有已知的节点(包括Neighbor Peer、OtherPeer)发送Leave消息。
步骤s1109、Leaving Peer退出P2P网络,不再响应任何消息。
在实施例二至实施四中描述的节点优雅退出过程,也可以采用下面的方法:Leaving Peer在向Neighbor Peer或Other Peer发送Leaving消息或Leave消息时,可以带上推荐的替换节点,Neighbor Peer或Other Peer可以采用LeavingPeer推荐的节点来替换路由表中的Leaving Peer。该替换节点的选择方法为,Leaving Peer将负责转移后的Key/Value的节点作为替换节点。
通过使用上述实施例提供的方法,虽然在节点更新路由表和转移数据两个过程中其他节点的路由表有可能指向新节点,也可能仍指向退出节点,有的Key/Value转移完成,有的Key/Value还没有转移,但对退出节点负责的Key/Value的操作按P2P的路由最终只会到达退出节点或退出节点的邻居,通过退出节点和邻居节点的配合,这些业务请求都可以成功处理。
本发明的实施五中,一种P2P网络中节点优雅退出的系统如图12所示,具体包括:
退出节点10,用于在优雅退出的过程中,通知与本节点存在路由关系的邻居节点20和其他节点30,将本地负责的Key/Value向邻居节点转移,转移过程中与邻居节点20配合对接收到的请求进行处理。
邻居节点20,作为退出节点10的邻居节点,用于在接收到退出节点10的离开消息时,接收退出节点10转移的Key/Value,并与退出节点10配合对接收到的请求进行处理。
其他节点30,作为退出节点10所感知到的与退出节点10存在路由关系的非邻居节点,根据退出节点发送的离开消息或者离开确认消息对本地的路由表进行更新,并按照更新的路由表发送请求消息。
具体的,退出节点10进一步包括:
消息发送单元11,用于向邻居节点20和其他节点30发送Leaving和Leave消息。
键值转移单元12,用于向邻居节点20发送需要转移的Key/Value。
退出节点业务处理单元13,用于与邻居节点20配合对本节点优雅退出过程中接收到的业务请求进行相应的处理。
邻居节点20进一步包括:
键值处理单元21,用于根据从退出节点10接收到的Leaving消息,更新本节点中Key值的范围,以及接收并保存退出节点10转移的Key/Value。
邻居节点路由处理单元22,用于根据退出节点10发送的Leaving消息更新路由表。
邻居节点业务处理单元23,用于与退出节点10结合对退出节点10优雅退出过程中接收到的业务请求做相应的处理。
其他节点30进一步包括:
其他节点路由处理单元31,用于根据退出节点10发送的Leaving消息更新路由表。
其他节点30还包括:
定时器单元32,用于当本节点接收到退出节点10发送的Leaving消息的同时设置一个定时器,定时器超时后即便没有收到退出节点10的Leave消息也认为该退出节点10已经离开网络,将该退出节点10从本地路由表处理单元中删除。
以上系统描述了在退出节点从结构化P2P网络中优雅退出时,通知邻居节点和其他节点,并和邻居节点配合对接收到的业务请求进行处理的过程,在该特定场景中,所涉及的每个节点的功能是单一的。但一般情况下,在不同的应用场景中,同一个节点可以充当不同的角色,这也就要求结构化P2P网络中的每个节点设备应该同时具有上述退出节点、邻居节点和其他节点的功能。对于该兼具多功能的节点设备的结构,为上述实施例中退出节点、邻居节点和其他节点所应具有的功能的总和,在此不做重复描述。
通过使用上述实施例提供的系统和设备,虽然在节点更新路由表和转移数据两个过程中其他节点的路由表有可能指向新节点,也可能仍指向退出节点,有的Key/Value转移完成,有的Key/Value还没有转移,但对退出节点负责的Key/Value的操作按P2P的路由最终只会到达退出节点或退出节点的邻居,通过退出节点和邻居节点的配合,这些业务请求都可以成功处理。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台P2P网络中的节点设备执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (22)
1、一种对等P2P网络中节点优雅退出的方法,其特征在于,包括以下步骤:
退出节点开始优雅退出时,向确定接收其键值的邻居节点发送离开消息并接收所述邻居节点的确认消息;
所述退出节点向所述邻居节点转移键值,并向其他节点发送离开消息;
所述键值转移完成后,所述退出节点退出P2P网络。
2、如权利要求1所述P2P网络中节点优雅退出的方法,其特征在于,所述退出节点向确定接收其键值的邻居节点发送离开消息的步骤具体为:
所述退出节点向确定接收其键值的邻居节点发送离开消息,所述离开消息中包括以下信息中的一种或多种:
所述退出节点将要退出所述P2P网络;或
将要向所述邻居节点转移的键值的范围;或
需要将键值进行转移的原因。
3、如权利要求1所述P2P网络中节点优雅退出的方法,其特征在于,所述退出节点将需要转移的键值向所述邻居节点开始转移后,向其他节点发送离开消息;或
所述退出节点向其他节点发送离开消息后,将需要转移的键值向所述邻居节点转移。
4、如权利要求1或3所述P2P网络中节点优雅退出的方法,其特征在于,所述退出节点向其他节点发送离开消息的步骤具体为:
所述退出节点向其他节点发送离开消息,表示退出节点将要退出所述P2P网络。
5、如权利要求1所述P2P网络中节点优雅退出的方法,其特征在于,所述退出节点将需要转移的键值向邻居节点转移,并向其他节点发送离开消息后,还包括步骤:
所述退出节点处理所述键值转移过程中接收到的消息。
6、如权利要求5所述P2P网络中节点优雅退出的方法,其特征在于,所述处理至少包括以下方式中的一种或多种:
所述退出节点接收到邻居节点转发的消息时,向所述消息的发送方发送离开消息;或
当所述转发的消息为加入P2P网络的Join消息、或将资源加入P2P网络的Put消息、或从P2P网络获取资源的Get消息时,所述退出节点根据所述消息中携带的键值向相应的邻居节点转发所述消息;或
当所述转发的消息为将键值从P2P网络移除的Remove消息时,如果所述消息中携带的键值已经由所述退出节点转移给邻居节点,且所述Remove消息不是从接收所述键值的邻居节点发送的,则将所述Remove消息转发给存储该键值的邻居节点;如果本节点存储有所述键值则删除所述键值;或
如果P2P网络严格要求数据同步,所述退出节点收到Put请求后向相应的邻居节点转发所述Put请求,并存储所述Put请求中包括的键值;
或所述退出节点将接收到的Join/Put/Get/Remove消息全部转发到所述邻居节点进行处理。
7、如权利要求1所述P2P网络中节点优雅退出的方法,其特征在于,所述键值转移完成后,所述退出节点退出P2P网络时,向所述邻居节点和/或其他节点发送离开确认消息。
8、一种P2P网络中节点优雅退出的方法,其特征在于,包括以下步骤:
退出节点优雅退出P2P网络时,所述退出节点的邻居节点接收所述退出节点发送的离开消息;
所述邻居节点接收所述退出节点转移的键值;
所述键值转移过程中,所述邻居节点更新本地路由表。
9、如权利要求8所述P2P网络中节点优雅退出的方法,其特征在于,所述邻居节点接收所述退出节点转移的键值后,还包括步骤:
所述邻居节点在所述键值转移过程中,处理所述退出节点转发的消息与所述退出节点配合处理接收的消息。
10、如权利要求9所述P2P网络中节点优雅退出的方法,其特征在于,所述处理至少包括以下方式中的一种或多种:
所述邻居节点收到Get/Remove消息时,如果本节点没有存储处理所述Get/Remove消息所需的键值而所述退出节点将向本节点转发所述键值,则将所述Get/Remove消息转发给所述退出节点;或
如果P2P网络严格要求数据同步,所述邻居节点收到Put消息时向所述退出节点转发所述Put消息;或
如果P2P网络严格要求数据同步,所述邻居节点收到Remove消息时,在存储有所述消息所需的键值、且所述键值是所述退出节点向本节点转发来的情况下,处理所述Remove请求,并向所述退出节点转发所述Remove请求。
11、一种P2P网络中节点优雅退出的方法,其特征在于,包括以下步骤:
退出节点优雅退出P2P网络时,保存有所述退出节点路由关系的其他节点接收所述退出节点发送的离开消息或离开确认消息;
所述其他节点根据所述离开消息或离开确认消息更新本地路由表。
12、如权利要求11所述P2P网络中节点优雅退出的方法,其特征在于,所述其他节点根据所述离开消息或离开确认消息更新本地路由表的步骤具体为:
接收到所述退出节点发送的离开消息或离开确认消息时,更新本节点的路由表;或
接收到所述退出节点发送的离开消息时,更新本节点的路由表,在本地启动一定时器,所述定时器超时后即判断为所述退出节点已经退出P2P网络,更新本节点的路由表。
13、一种P2P网络中节点优雅退出的处理方法,其特征在于,包括以下步骤:
退出节点在优雅退出P2P网络过程中,与邻居节点配合处理在所述优雅退出过程中接收到的消息。
14、如权利要求13所述P2P网络中节点优雅退出的处理方法,其特征在于,所述退出节点进行的处理至少包括以下方式中的一种或多种:
所述退出节点接收到邻居节点转发的消息时,向所述消息的发送方发送离开消息;或
当所述转发的消息为加入P2P网络的Join消息、或将资源加入P2P网络的Put消息、或从P2P网络获取资源的Get消息时,所述退出节点根据所述消息中携带的键值向相应的邻居节点转发所述消息;或
当所述转发的消息为将键值从P2P网络移除的Remove消息时,如果所述消息中携带的键值已经由所述退出节点转移给邻居节点,且所述Remove消息不是从接收所述键值的邻居节点发送的,则将所述Remove消息转发给存储该键值的邻居节点;如果本节点存储有所述键值则删除所述键值;或
如果P2P网络严格要求数据同步,所述退出节点收到Put请求后向相应的邻居节点转发所述Put请求,并存储所述Put请求中包括的键值;
或所述退出节点将接收到的Join/Put/Get/Remove消息全部转发到所述邻居节点进行处理。
15、如权利要求13所述P2P网络中节点优雅退出的处理方法,其特征在于,所述邻居节点进行的处理至少包括以下方式中的一种或多种:
所述邻居节点收到Get/Remove消息时,如果本节点没有存储处理所述Get/Remove消息所需的键值而所述退出节点将向本节点转发所述键值,则将所述Get/Remove消息转发给所述退出节点;或
如果P2P网络严格要求数据同步,所述邻居节点收到Put消息时向所述退出节点转发所述Put消息;或
如果P2P网络严格要求数据同步,所述邻居节点收到Remove消息时,在存储有所述消息所需的键值、且所述键值是所述退出节点向本节点转发来的情况下,处理所述Remove请求,并向所述退出节点转发所述Remove请求。
16、一种P2P网络中节点优雅退出的系统,其特征在于,包括:
退出节点,用于在优雅退出的过程中,向与本节点存在路由关系的邻居节点和其他节点发送离开消息,将本地负责的键值向所述邻居节点转移;并在键值转移完成后退出P2P网络;
邻居节点,作为所述退出节点的邻居节点,用于接收到所述退出节点发送的离开消息时,接收并存储所述退出节点转移的键值;
其他节点,作为与所述退出节点存在路由关系的非邻居节点,用于在接收到所述退出节点发送的离开消息时,对本地的路由表进行更新。
17、如权利要求16所述P2P网络中节点优雅退出的系统,其特征在于,所述退出节点进一步包括:
消息发送单元,用于向所述邻居节点和其他节点发送离开消息或离开确认消息;
键值转移单元,用于向所述邻居节点发送需要转移的键值。
18、如权利要求16所述P2P网络中节点优雅退出的系统,其特征在于,所述退出节点还包括:
退出节点业务处理单元,用于与所述邻居节点配合对本节点优雅退出过程中接收到的消息进行相应的处理。
19、如权利要求16所述P2P网络中节点优雅退出的系统,其特征在于,所述邻居节点进一步包括:
键值处理单元,用于根据从所述退出节点接收到的离开消息,更新本节点中键值的范围并保存所述退出节点转移的键值。
邻居节点路由处理单元,用于根据所述退出节点发送的离开消息更新本地的路由表。
20、如权利要求19所述P2P网络中节点优雅退出的系统,其特征在于,所述邻居节点还包括:
邻居节点业务处理单元,用于与所述退出节点配合对所述退出节点优雅退出过程中接收到的消息做相应的处理。
21、如权利要求16所述P2P网络中节点优雅退出的系统,其特征在于,所述其他节点进一步包括:
其他节点路由处理单元,用于根据所述退出节点发送的离开消息更新本地的路由表。
22、如权利要求21所述P2P网络中节点优雅退出的系统,其特征在于,所述其他节点还包括:
定时器单元,用于当接收到所述退出节点发送的离开消息时开始计时,所述定时器超时后,判断所述退出节点已经离开网络,通知所述路由更新单元更新本地的路由表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101517744A CN101399740A (zh) | 2007-09-30 | 2007-09-30 | 一种p2p网络中节点优雅退出的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101517744A CN101399740A (zh) | 2007-09-30 | 2007-09-30 | 一种p2p网络中节点优雅退出的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101399740A true CN101399740A (zh) | 2009-04-01 |
Family
ID=40518011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101517744A Pending CN101399740A (zh) | 2007-09-30 | 2007-09-30 | 一种p2p网络中节点优雅退出的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101399740A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166860A (zh) * | 2011-12-19 | 2013-06-19 | 中兴通讯股份有限公司 | 一种p2p叠加网络数据迁移的方法和装置 |
CN102724226B (zh) * | 2011-03-30 | 2016-12-14 | 中兴通讯股份有限公司 | 一种节点加入对等网络的方法及系统 |
CN111543080A (zh) * | 2017-12-12 | 2020-08-14 | 华为技术有限公司 | 用于网络拓扑管理的系统和方法 |
-
2007
- 2007-09-30 CN CNA2007101517744A patent/CN101399740A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724226B (zh) * | 2011-03-30 | 2016-12-14 | 中兴通讯股份有限公司 | 一种节点加入对等网络的方法及系统 |
CN103166860A (zh) * | 2011-12-19 | 2013-06-19 | 中兴通讯股份有限公司 | 一种p2p叠加网络数据迁移的方法和装置 |
CN111543080A (zh) * | 2017-12-12 | 2020-08-14 | 华为技术有限公司 | 用于网络拓扑管理的系统和方法 |
CN111543080B (zh) * | 2017-12-12 | 2024-02-09 | 华为技术有限公司 | 用于网络拓扑管理的系统和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109729111B (zh) | 用于管理分布式系统的方法、设备和计算机程序产品 | |
CN101425961B (zh) | 实现链路状态数据库同步方法、路由器及线路板、主控板 | |
CN102624635B (zh) | 一种平滑重启实现方法及设备 | |
CN112968967A (zh) | 区块同步方法及装置 | |
CN103475566A (zh) | 一种实时消息交换平台及分布式集群组建方法 | |
CN103546572B (zh) | 一种多云存储联网系统和方法 | |
CN108363641A (zh) | 一种主备机数据传递方法、控制节点以及数据库系统 | |
CN101702678B (zh) | 一种星形堆叠系统和方法 | |
JP2011175448A (ja) | ノード装置およびコンピュータプログラム | |
EP3975027A1 (en) | Blockchain systems, and message transmission methods and apparatuses | |
WO2015058705A1 (zh) | 数据分发方法和装置 | |
CN102724064B (zh) | 一种网络应用仿真系统构建方法 | |
CN101465753A (zh) | P2p系统组管理方法及其装置和系统 | |
JPWO2010109767A1 (ja) | データ同期システム、データ同期方法、及び同期管理サーバ | |
CN101399740A (zh) | 一种p2p网络中节点优雅退出的方法和系统 | |
WO2018153347A1 (en) | Elastic consistency high availability in multiple boards | |
Meiklejohn et al. | Loquat: A framework for large-scale actor communication on edge networks | |
CN110830370B (zh) | 一种基于ospf协议的ibgp传递路由更新方法 | |
CN114422526A (zh) | 一种区块同步方法、装置、电子设备和存储介质 | |
CN101420352B (zh) | 一种结构化p2p网络中键值转移的方法和系统 | |
CN114338714A (zh) | 一种区块同步方法、装置、电子设备和存储介质 | |
CN114338724A (zh) | 一种区块同步方法、装置、电子设备和存储介质 | |
JP2005252986A (ja) | 動的なネットワークにおけるサービス選択方法およびサービス選択システム | |
CN103001987A (zh) | 一种数据处理方法和数据处理节点 | |
JP6043307B2 (ja) | ネットワーク制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090401 |