一种对等网络中控制过负荷的方法及系统
技术领域
本发明涉及对等(P2P,Peer-to-Peer)网络技术,特别是指一种P2P网络中控制过负荷的方法及系统。
背景技术
目前,P2P网络技术在文件交换、分布式计算、以及服务共享等方面已经充分显示出了强大的技术优势。然而,P2P网络技术的应用主要集中在因特网(Internet)的应用中,而在传统的电信网络中尚未大规模应用。由于目前及将来的电信网络中,会话控制的主流为会话初始化协议(SIP,Session Initiation Protocol),因此,如果将P2P网络技术引入到电信网络中,就要求必须保证SIP在P2P网络中的应用,同时要求能够运行各类典型业务。
基于以上考虑,目前,业界的许多研究机构都在致力于如何将P2P网络技术引入到电信网络中的研究,图1为现有研究中得到大多数研究者与研究机构认同的一种P2P核心网架构示意图,如图1所示,P2P核心网包括:P2P叠加网101、P2P节点102、非P2P终端103、以及P2P终端104。其中,P2P叠加网101为由各类担负不同角色的P2P节点102组成的逻辑网络;节点102为P2P叠加网101中的基本组成部分,是能够给P2P叠加网101中其它节点提供存储和传送服务的节点;非P2P终端103为接入到P2P叠加网101中的不支持任何P2P协议、仅支持SIP的终端设备;P2P终端104为接入到P2P叠加网101中的既支持P2P协议、也支持SIP的终端设备,由于终端设备,尤其是手持终端设备的能力较弱,因此,在实际部署时,P2P终端104一般仅仅作为P2P客户端接入到P2P叠加网101中,并不承担存储、传送等服务器功能,并且,考虑到电信营运的需要,要求P2P终端104与非P2P终端103都必须通过就近的P2P节点102接入到P2P叠加网101中,当P2P节点102同时作为非P2P终端103、以及P2P终端104的接入节点时,对于非P2P终端103,负责将非P2P终端103采用的SIP与P2P叠加网101内部路由SIP所采用的协议进行转换,之后对消息进行中继,对于P2P终端104,则P2P节点102仅需要对消息进行中继。
在P2P叠加网101中,P2P节点102之间根据分布式哈希表(DHT,Distributed HashTable)算法,实现节点之间数据的动态实时备份。
图2为传统的网络过负荷控制的方法流程示意图,如图2所示,该流程包括以下步骤:
步骤201:前向节点感知后向节点过负荷,这里,前向节点感知后向节点过负荷的途径为:后向节点或过负荷服务器告知前向节点后向节点过负荷,或者,前向节点根据消息延迟推断出后向节点过负荷;
步骤202:前向节点依据过负荷策略及后向节点过负荷的程度,按照既定的比例丢弃或发送消息给后向节点,以减少后向节点的负荷。
从上面的描述中可以看出,当前向节点感知后向节点过负荷时,会按照既定的比例丢弃或发送消息给后向节点,如果采用上述过负荷控制方法,控制引入P2P网络技术的电信网络中的过负荷,则无法体现P2P网络技术的优势,反而会扩大P2P网络的不稳定性,具体地讲,P2P网络的优势在于:以数量换取高质量,但是,P2P网络中的单个节点的稳定性要比传统的电信网络中的单个节点的稳定性要差,因此,在网络高负荷运作时候,P2P网络中的节点更容易形成资源过负荷,如果按照传统的过负荷控制方式,则会导致高负荷的时候,引入P2P网络技术的电信网络的接通率远远低于传统的电信网络的接通率,如此,会大大降低用户体验。
发明内容
有鉴于此,本发明的主要目的在于提供一种P2P网络中控制过负荷的方法及系统,能保证电信业务的连续性,进而提升用户体验。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种P2P网络中控制过负荷的方法,该方法包括:
接收消息的节点过负荷后,所述接收消息的节点的备份节点接收发送消息的节点发送的消息。
上述方案中,该方法进一步包括:
所述发送消息的节点感知所述接收消息的节点过负荷后,直接向所述接收消息的节点的备份节点发送消息;或者,
所述接收消息的节点过负荷后,将所述发送消息的节点发送的消息转发给所述备份节点。
上述方案中,该方法进一步包括:
所述备份节点收到消息后,代理所述接收消息的节点处理业务,并在处理完成后,向所述发送消息的节点返回业务请求应答消息。
上述方案中,在代理所述接收消息的节点处理业务之前,该方法进一步包括:
所述备份节点向所述接收消息的节点发送代理征求请求消息,并在收到所述代理征求请求消息应答消息后,代理所述接收消息的节点处理业务;或者,
所述备份节点向所述接收消息的节点发送代理征求请求消息;
在定时器超时,且未收到所述接收消息的节点返回的任何消息后,所述备份节点为即将代理的用户数据设置未同步标识,之后代理所述接收消息的节点处理业务。
上述方案中,在收到所述代理征求请求消息应答消息之前,该方法进一步包括:
所述接收消息的节点收到代理征求请求消息,且允许所述备份节点代理处理业务后,所述接收消息的节点为所述备份节点即将代理的用户数据设置不完整性标识,之后向所述备份节点返回应答消息。
上述方案中,所述不完整性标标识包含所述备份节点的地址信息;
在为所述备份节点即将代理的用户数据设置不完整性标识后,该方法进一步包括:
所述接收消息的节点将所述不完整性标识同步到所述接收消息的节点的所有备份节点。
上述方案中,当所述接收消息的节点过负荷状态取消后,该方法进一步包括:
所述接收消息的节点与所述备份节点进行数据同步。
上述方案中,所述与所述备份节点进行数据同步,为:
所述备份节点将代理所述接收消息的节点处理业务时产生的变更数据同步给所述接收消息的节点。
上述方案中,该方法进一步包括:
所述备份节点收到消息,且感知所述接收消息的节点的所有备份节点均过负荷时,通知所述发送消息的节点;
所述发送消息的节点收到通知后,依据过负荷策略,按比例丢弃或发送消息。
上述方案中,该方法进一步包括:
所述接收消息的节点过负荷,且所述接收消息的节点或所述接收消息的节点的其它备份节点再次收到所述发送消息的节点发送的消息后,将所述消息转发至对应的用户数据区中标记的地址。
本发明还提供了一种P2P网络节点过负荷过程中数据迁移的方法,该方法包括:
新加入节点向负责节点发送加入请求消息;
所述负责节点将新加入节点应负责的数据迁移给所述新加入节点;
所述新加入节点收到迁移数据,且确定收到的迁移数据中存在部分用户的数据不完整后,向所述负责节点的备份节点获取所述部分用户的数据。
上述方案中,所述确定收到的迁移数据中存在部分用户的数据不完整,为:
所述新加入节点根据用户的数据中的不完整性标识,确定所述用户的数据不完整。
上述方案中,所述不完整性标识包含所述备份节点的地址信息;
所述向所述负责节点的备份节点获取所述部分用户的数据,为:
所述新加入节点根据所述备份节点的地址信息,向所述备份节点获取所述部分用户的数据。
上述方案中,所述部分用户的数据包括所述备份节点代理时产生的变更数据。
本发明还提供了一种对等网络中控制过负荷的系统,该系统至少包括:第一节点,为接收消息的节点的备份节点,用于接收消息的节点过负荷后,接收发送消息的节点发送的消息。
上述方案中,第一节点,还用于收到第二节点发送的消息后,代理所述接收消息的节点处理业务,并在处理完成后,向第二节点返回业务请求应答消息;
该系统进一步包括:第二节点,用于接收第二节点返回的业务请求应答消息。
上述方案中,该系统进一步包括:第三节点,用于收到第一节点发送的代理征求请求消息后,为第一节点即将代理的数据设置不完整性标识,之后向第一节点返回应答消息;
在代理第三节点处理业务之前,所述第一节点,还用于向第三节点发送代理征求请求消息,并在收到第三节点返回的应答消息后,代理第三节点处理业务;或者,
在代理第三节点处理业务之前,所述第一节点,还用于向第三节点发送代理征求请求消息,并在定时器超时,且未收到第三节点返回的任何消息后,为即将代理的数据设置未同步标识,并代理第三节点处理业务。
上述方案中,所述第三节点,用于过负荷后,将收到的第二节点发送的消息转发给第一节点;
所述第二节点,还用于向第三节点发送消息;或者,
所述第二节点,还用于感知第三节点过负荷后,直接向第一节点发送消息。
上述方案中,所述第三节点,还用于过负荷状态取消后,与第一节点进行数据同步;
所述第一节点,还用于第三节点过负荷状态取消后,与第三节点进行数据同步。
上述方案中,所述第一节点,还用于收到第二节点发送的消息后,且感知第三节点的所有备份节点均过负荷时,通知第二节点;
所述第二节点,还用于收到第一节点的通知后,依据过负荷策略,按比例丢弃或发送消息。
本发明还提供了一种P2P网络节点过负荷过程中数据迁移的系统,该系统包括:第四节点、第五节点、以及第六节点;其中,
第四节点,用于加入对等网络时,向第五节点发送加入请求消息,并在收到第五节点迁移的迁移数据,且确定收到的迁移数据中存在部分用户的数据不完整后,向第六节点获取所述部分用户的数据;
所述第五节点,还用于收到第四节点发送的加入请求消息后,将第四节点应负责的数据迁移给第四节点;
所述第六节点,用于向第四节点提供所述部分用户的数据。
上述方案中,所述部分用户的数据包括所述第六节点代理时产生的变更数据。
本发明提供的P2P网络中控制过负荷的方法及系统,接收消息的节点过负荷后,所述接收消息的节点的备份节点接收发送消息的节点发送的消息,在接收消息的节点过负荷时,由接收消息的节点的备份节点代理接收消息的节点处理业务,如此,能在引入P2P网络技术的电信网络的节点高负荷时,有效地提高业务接通率,从而保证电信业务的连续性,进而提升用户体验。
本发明提供的P2P节点过负荷过程中数据迁移的方法及系统,新加入节点向负责节点发送加入请求消息;所述负责节点将新加入节点应负责的数据迁移给所述新加入节点;所述新加入节点收到迁移数据,且确定收到的迁移数据中存在部分用户的数据不完整后,向所述负责节点的备份节点获取所述部分用户的数据,如此,能在引入P2P网络技术的电信网络的节点高负荷时,确保迁移数据的完整性,进而保证网络的正常运行,提升用户体验。
附图说明
图1为现有的引入P2P网络技术的电信网络架构示意图;
图2为传统的网络过负荷控制的方法流程示意图;
图3为本发明P2P网络中控制过负荷的方法流程示意图;
图4为实施例一P2P网络中控制过负荷的方法流程示意图;
图5为实施例二P2P网络中控制过负荷的方法流程示意图;
图6为实施例三P2P网络中控制过负荷的方法流程示意图;
图7为实施例四P2P网络中控制过负荷的方法流程示意图;
图8为实施例五实现数据迁移的方法流程示意图;
图9为本发明P2P网络中控制过负荷的系统结构示意图。
具体实施方式
本发明的基本思想是:接收消息的节点过负荷后,所述接收消息的节点的备份节点接收发送消息的节点发送的消息。
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明P2P网络中控制过负荷的方法,如图3所示,包括以下步骤:
步骤301:接收消息的节点过负荷后,所述接收消息的节点的备份节点接收发送消息的节点发送的消息;
这里,在所述接收消息的节点的备份节点接收发送消息的节点发送的消息之前,该方法可以进一步包括:
发送消息的节点通过现有技术感知接收消息的节点过负荷后,直接向所述备份节点发送消息;或者,
接收消息的节点过负荷后,将发送消息的节点发送的消息转发给所述备份节点。
步骤302:所述备份节点收到消息后,代理所述接收消息的节点处理业务,并在处理完成后,向所述发送消息的节点返回业务请求应答消息;
备份节点收到消息并在代理所述接收消息的节点处理业务之前,该方法还可以进一步包括:
所述备份节点向所述接收消息的节点发送代理征求请求消息;
所述接收消息的节点收到请求消息后,为所述备份节点即将代理的用户数据设置不完整性标识,之后向所述备份节点返回应答消息;
所述备份节点收到应答消息后,代理所述接收消息的节点处理业务;或者,
所述备份节点向所述接收消息的节点发送代理征求请求消息;
在定时器超时,且未收到所述接收消息的节点返回的任何消息后,所述备份节点为即将代理的用户数据设置未同步(Non-SYN)标识,之后代理所述接收消息的节点处理业务;
其中,所述不完整性标识,用于标识该用户的数据不完整;所述不完整性标识可以进一步包含所述备份节点的地址信息,比如:所述备份节点的节点(Node)标识(ID,IDentity)信息;在为所述备份节点即将代理的用户数据设置不完整性标识后,该方法还可以进一步包括:所述接收消息的节点将所述不完整性标识同步到所述接收消息的节点的所有备份节点;之后如果所述接收消息的节点或所述接收消息的节点的其它备份节点再次收到的消息为所述备份节点代理的用户的业务时,则将所述消息转发至所述用户数据区中标记的地址,即:所述备份节点的地址;
所述不完整性标识具体可以是半激活(Semi-Active)标识;所述Semi-Active标识用于标识该用户的业务已由备份节点代理处理;Non-SYN标识用于表明该用户的数据未进行同步;
当定时器超时且未收到所述接收消息的节点的消息时,所述备份节点认为所述接收消息的节点为满负荷状态。
本发明还提供了一种P2P网络节点过负荷过程中数据迁移的方法,该方法包括:
新加入节点向负责节点发送加入请求消息;
负责节点收到请求消息后,将新加入节点应负责的数据迁移给新加入节点;
新加入节点收到迁移数据,且确定收到的迁移数据存在部分用户的数据不完整后,向负责节点的备份节点获取所述部分用户的数据;
其中,所述负责节点过负荷,将新加入节点应负责的数据迁移给新加入节点的具体处理过程可采用现有的处理过程;
当迁移数据中存在部分设置有不完整性标识Semi-Active或不可信(Non-Trust)标识的用户的数据时,则新加入节点确定收到的迁移数据中存在部分用户的数据不完整;所述Non-Trust标识用于标识数据不可信任,当所述接收消息的节点在自身的满负荷状态取消后,会为自身维护的所有数据设置Non-Trust标识;
所述不完整性标识还可以进一步包含所述备份节点的地址信息,比如:所述备份节点的节点ID信息;所述新加入节点根据所述备份节点的地址信息,向所述备份节点获取所述部分用户的数据;
所述部分用户的数据包括所述备份节点代理时产生的变更数据。
当所述接收消息的节点过负荷状态取消后,与所述备份节点进行数据同步;具体地,所述备份节点将代理所述接收消息的节点处理业务时产生的变更数据同步给所述接收消息的节点。
当所述备份节点收到消息,且感知所述接收消息的节点的所有备份节点均过负荷时,通知所述发送消息的节点;所述发送消息的节点收到通知后,依据过负荷策略,按比例丢弃或发送消息。
实施例一:
本实施例的应用场景为:节点1为发送消息的节点,节点2为接收消息的节点,且过负荷,节点3为节点2的备份节点,这里,所述过负荷是指节点2的负荷达到过负荷预设的阀门值,本实施例P2P网络中控制过负荷的方法,如图4所示,包括以下步骤:
步骤401:节点1感知节点2过负荷后,节点1根据过负荷策略,选择向节点3发送业务请求消息;
这里,节点1可通过现有技术感知节点2过负荷;节点1可通过DHT算法,获得节点3,进而据此向节点3发送业务请求消息;
可以依据需要设置所述过负荷策略,所述过负荷策略可以包括:过负荷的阀门值、满负荷的阀门值等;比如:可以设置过负荷的阀门值为90%,满负荷的阀门值为96%,等等;
所述业务请求消息包含:用户身份标识或资源ID;
本步骤中,还可以是节点1未感知到节点2过负荷,当节点1向节点2发送业务请求消息后,节点2因过负荷将所述业务请求消息转发给节点3。
步骤402:节点3收到业务请求消息后,向节点2发送代理征求请求消息;
这里,所述代理征求请求消息包含:用户身份标识或资源ID。
步骤403:节点2收到代理征求请求消息,如果允许节点3代理业务,则执行步骤404,否则执行步骤407;
这里,节点2依据需要,确定是否允许节点3代理业务,举个例子来说,节点2过负荷后,节点2的另一个备份节点代理过某个用户的业务,当节点3收到的业务请求信息仍为该用户的业务时,节点2可以不允许节点3代理业务,仍由节点2的另一个备份节点代理该用户的业务。
步骤404:节点2在所述用户身份标识或资源ID对应的数据区中设置Semi-Active标识,之后向节点3返回应答消息;
这里,所述Semi-Active标识可以包含:节点3的地址信息,比如:节点3的节点(Node)标识ID信息;所述Semi-Active标识用于标识该用户的业务已由备份节点代理处理;
节点2可以将设置的Semi-Active标识同步到自身的所有备份节点。
步骤405:节点3收到应答消息后,代替节点2处理业务,并在处理完成后向节点1返回业务请求应答消息,之后执行步骤406;
这里,如果节点1发送的业务请求涉及到数据修改,则需要执行步骤402~404,并在节点3收到节点2的应答消息后,代理节点2处理业务,或者,节点3可以依据与节点2之间的协议,直接代理节点2处理业务;如果节点1发送的业务请求仅涉及读操作业务,节点3可以不需要征求节点2的同意,即:不执行步骤402~404,直接代理节点2处理业务;其中,所述协议可以依据需要进行设置。
步骤406:当节点2过负荷状态取消后,节点3与节点2进行数据同步,节点3将代理节点2处理业务时产生的变更数据同步给节点2,结束当前处理流程;
这里,当节点2过负荷状态取消后,可以通知节点3,节点3收到通知后,与节点2进行数据同步;或者,节点2在过负荷状态取消后,判断自身是否存在Semi-Active标识的用户数据,如果存在,则向节点3获取数据,从而实现数据同步;或者,节点2可以根据Semi-Active标识中的节点3的地址信息,直接向节点3获取数据,从而实现数据同步;或者,节点3定时查询节点2的过负荷状态,发现节点2过负荷状态取消后,向节点2同步数据;其中,节点3可以通过定时向节点2发送消息的方式查询节点2的过负荷状态是否取消,或者,可以定时向过负荷服务器查询节点2的过负荷状态是否取消。
步骤407:节点2向节点3返回拒绝消息。
步骤408:节点3收到拒绝消息后,向节点1返回拒绝消息,之后结束当前处理流程。
实施例二:
本实施例的应用场景为:节点1为发送消息的节点,节点2为接收消息的节点,且满负荷,节点3为节点2的备份节点,这里,所述满负荷是指节点2的负荷达到满负荷预设的阀门值,本实施例P2P网络中控制过负荷的方法,如图5所示,包括以下步骤:
步骤501:节点1感知节点2满负荷后,节点1根据过负荷策略,选择向节点3发送业务请求消息;
这里,节点1可通过现有技术感知节点2过负荷;节点1可通过DHT算法,获得节点3,进而据此向节点3发送业务请求消息;
可以依据需要设置所述过负荷策略,所述过负荷策略可以包括:过负荷的阀门值、满负荷的阀门值等;比如:可以设置过负荷的阀门值为90%,满负荷的阀门值为96%,等等;
所述业务请求消息包含:用户身份标识或资源ID;
本步骤中,还可以是节点1未感知到节点2满负荷,当节点1向节点2发送业务请求消息后,节点2因过负荷将所述业务请求消息转发给节点3。
步骤502:节点3收到业务请求消息后,向节点2发送代理征求请求消息,并启动定时器;
这里,所述代理征求请求消息包含:用户身份标识或资源ID;
所述定时器的时长依据需要进行设置,比如:1s等。
步骤503:定时器超时且未收到节点2的应答消息后,为所述用户身份表示或资源ID对应的数据区中设置Non-SYN标识,之后代理节点2处理业务,并在处理完成后向节点1返回业务请求应答消息,之后执行步骤504;
这里,当定时器超时后且未收到节点2的应答消息时,节点3可以重复多次向节点2发送确认消息,如果仍未收到节点2的确认消息,则代理节点2处理业务;其中,发送确认消息的次数可以依据需要进行设置,比如:3次;
当定时器超时且未收到节点2的应答消息时,节点3会认为节点2为满负荷状态;
所述Non-SYN标识用于表明该用户的数据未进行同步;所述Non-SYN标识可以包含节点3的地址信息,比如:节点3的Node ID信息;
如果节点1发送的业务请求涉及到数据修改,则需要执行步骤502,并在将所述用户身份表示或资源ID对应的数据区中设置Non-SYN标识后,代理节点2处理业务,或者,节点3可以依据与节点2之间的协议,直接代理节点2处理业务;如果节点1发送的业务请求仅涉及读操作业务,节点3可以不向节点2发送代理征求请求消息,直接代理节点2处理业务;其中,所述协议可以依据需要进行设置。
步骤504:当节点2满负荷状态取消后,节点3与节点2进行数据同步,将代理节点2处理业务时产生的变更数据同步给节点2,结束当前处理流程;
这里,当节点2满负荷状态取消后,认为自身维护的所有数据已经不可信任,可以为自身维护的所有数据设置Non-Trust标识,之后向节点3获取变更数据,从而实现数据同步;或者,节点2满负荷状态取消后,向节点3查询数据状态消息,节点3收到查询数据状态消息后,将自身具有Non-SYN标识的所有用户数据列表发送给节点2,节点2收到列表后,为自身所述用户数据列表中的用户数据区设置Semi-Active标识,之后通知节点3满负荷状态取消;节点3收到通知后,与节点2进行数据同步;其中,Semi-Active标识用于标识该用户的业务已由备份节点代理处理。
实施例三:
本实施例的应用场景为:节点1为发送消息的节点,节点2为接收消息的节点,且过负荷,节点3及节点4为节点2的备份节点,且节点3也过负荷,这里,所述过负荷是指节点2及节点3的负荷达到过负荷预设的阀门值,本实施例P2P网络中控制过负荷的方法,如图6所示,包括以下步骤:
步骤601:节点1感知节点2过负荷后,节点1根据过负荷策略,选择向节点3发送业务请求消息;
这里,节点1可通过现有技术感知节点2过负荷;节点1可通过DHT算法,获得节点3,进而据此向节点3发送业务请求消息;
可以依据需要设置所述过负荷策略,所述过负荷策略可以包括:过负荷的阀门值、满负荷的阀门值等;比如:可以设置过负荷的阀门值为90%,满负荷的阀门值为96%,等等;
所述业务请求消息包含:用户身份标识或资源ID;
本步骤中,还可以是节点1未感知到节点2过负荷,当节点1向节点2发送业务请求消息后,节点2因过负荷将所述业务请求消息转发给节点3。
步骤602:节点3收到业务请求消息后,发现自身过负荷,将收到的业务请求消息转发给节点4;
这里,节点3可通过DHT算法,获得节点4,进而据此向节点4转发业务请求消息;
所述业务请求消息包含:用户身份标识或资源ID。
步骤603:节点4收到业务请求消息后,向节点2发送代理征求请求消息;
这里,节点4还可以向节点3发送代理征求请求消息,节点3收到消息后,将消息转发给节点2;
所述代理征求请求消息包含:用户身份标识或资源ID。
步骤604:节点2收到代理征求请求消息,如果允许节点4代理业务,则执行步骤605,否则执行步骤608;
这里,节点2依据需要,确定是否允许节点4代理业务,举个例子来说,节点2过负荷后,节点2的另一个备份节点代理过某个用户的业务,当节点4收到的业务请求信息仍为该用户的业务时,节点2可以不允许节点4代理业务,仍由节点2的另一个备份节点代理该用户的业务。
步骤605:节点2在所述用户身份标识或资源ID对应的数据区中设置Semi-Active标识,之后向节点4返回应答消息;
这里,节点2还可以向节点3返回应答消息,节点3收到消息后,向节点4转发应答消息;
所述Semi-Active标识可以包含:节点4的地址信息,比如:节点4的NodeID信息;所述Semi-Active标识用于标识该用户的业务已由备份节点代理处理;
节点2可以将设置的Semi-Active标识同步到自身的所有备份节点。
步骤606:节点4收到应答消息后,代替节点2处理业务,并在处理完成后向节点1返回业务请求应答消息,之后执行步骤607;
这里,如果节点1发送的业务请求涉及到数据修改,则需要执行步骤603~605,并在节点4收到节点2的应答消息后,代理节点2处理业务,或者,节点4可以依据与节点2之间的协议,直接代理节点2处理业务;如果节点1发送的业务请求仅涉及读操作业务,节点4可以不需要征求节点2的同意,即:不执行步骤603~605,直接代理节点2处理业务;其中,所述协议可以依据需要进行设置。
步骤607:当节点2过负荷状态取消后,节点4与节点2进行数据同步,节点4将代理节点2处理业务时产生的变更数据同步给节点2,结束当前处理流程;
这里,当节点2过负荷状态取消后,可以通知节点4,节点4收到通知后,与节点2进行数据同步;或者,节点2在过负荷状态取消后,判断自身是否存在Semi-Active标识的用户数据,如果存在,则向节点4获取数据,从而实现数据同步;或者,节点2可以根据Semi-Active标识中的节点4的地址信息,直接向节点4获取数据,从而实现数据同步;或者,节点4定时查询节点2的过负荷状态,发现节点2过负荷状态取消后,向节点2同步数据;其中,节点4可以通过定时向节点2发送消息的方式查询节点2的过负荷状态是否取消,或者,可以定时向过负荷服务器查询节点2的过负荷状态是否取消。
步骤608:节点2向节点4返回拒绝消息。
步骤609:节点4收到拒绝消息后,向节点1返回拒绝消息,之后结束当前处理流程。
实施例四:
本实施例的应用场景为:节点1为发送消息的节点,节点2为接收消息的节点,且过负荷,节点3为节点2的第一备份节点,即:当节点2过负荷时首选的备份节点,节点2的所有备份节点均过负荷,这里,所述过负荷是指节点的负荷达到过负荷预设的阀门值,本实施例P2P网络中控制过负荷的方法,如图7所示,包括以下步骤:
步骤701:节点1感知节点2过负荷后,节点1根据过负荷策略,选择向节点3发送业务请求消息;
这里,节点1可通过现有技术感知节点2过负荷;节点1可通过DHT算法,获得节点3,进而据此向节点3发送业务请求消息;
可以依据需要设置所述过负荷策略,所述过负荷策略可以包括:过负荷的阀门值、满负荷的阀门值等;比如:可以设置过负荷的阀门值为90%,满负荷的阀门值为96%,等等;
所述业务请求消息包含:用户身份标识或资源ID;
本步骤中,还可以是节点1未感知到节点2过负荷,当节点1向节点2发送业务请求消息后,节点2因过负荷将所述业务请求消息转发给节点3。
步骤702:节点3收到业务请求消息后,感知节点2的所有备份节点均过负荷,通知节点1;
这里,节点3可采用现有技术感知节点2的所有备份节点均过载。
步骤703:节点1收到通知后,依据过负荷策略,按比例丢弃或发送消息;
这里,节点1按比例丢弃或发送消息的具体处理过程可采用现有的处理过程。
实施例五:
本实施例的应用场景为:当新节点加入P2P网络时,原负责节点过负荷,且原负责节点采用实施例一、实施例二、以及实施例三中的控制过负荷的方式,已由原负责节点的备份节点代理原负责节点处理业务,本实施例实现数据迁移的方法,如图8所示,包括以下步骤:
步骤801:新加入节点向原负责节点发送加入请求消息,获取应负责的数据。
步骤802:原负责节点收到请求消息后,根据P2P网络算法,将新加入节点应负责的数据迁移给新加入节点;
这里,所述根据P2P网络算法,将新加入节点应负责的数据迁移给新加入节点的具体处理过程与现有的处理过程完全相同,这里不再赘述。
步骤803:新加入节点收到迁移数据,并发现迁移数据中存在部分设置有Semi-Active或Non-Trust标识后,向原负责节点的备份节点获取代理时产生的变更数据;
这里,当新加入节点发现移数据中存在部分设置有Semi-Active或Non-Trust标识时,则认为当前设置有Semi-Active或Non-Trust标识的数据为不完整数据,需要从原负责节点的备份节点获取代理时产生的变更数据;
新加入节点可以依据标识中携带的地址信息,向原负责节点的备份节点获取代理时产生的变更数据;或者,可以根据DHT算法,获得原负责节点的备份节点,据此向原负责节点的备份节点获取代理时产生的变更数据。
步骤804:原负责节点的备份节点向新加入节点迁移代理原负责节点处理业务时产生的变更数据。
基于上述P2P网络中控制过负荷的方法,本发明还提供了一种P2P网络中控制过负荷的系统,如图9所示,该系统包括:第一节点91、以及第二节点92;其中,
第一节点91,用于接收消息的节点过负荷后,接收第二节点91发送的消息;
第二节点92,用于感知所述接收消息的节点过负荷后,直接向第一节点91发送消息。
这里,需要说明的是:第一节点91为接收消息的节点的备份节点;第二节点92为发送消息的节点。
其中,所述第一节点91,还用于收到第二节点92发送的消息后,代理所述接收消息的节点处理业务,并在处理完成后,向第二节点92返回业务请求应答消息;
所述第二节点92,还用于接收第一节点91返回的业务请求应答消息。
该系统还可以进一步包括:第三节点93,用于收到第一节点91发送的代理征求请求消息后,为第一节点91即将代理的数据设置不完整性标识,之后向第一节点91返回应答消息;
在代理第三节点93处理业务之前,所述第一节点91,还用于向第三节点93发送代理征求请求消息,并在收到第三节点返回的应答消息后,代理第三节点93处理业务;或者,
在代理第三节点93处理业务之前,所述第一节点91,还用于向第三节点93发送代理征求请求消息,并在定时器超时,且未收到第三节点93返回的任何消息后,为即将代理的数据设置Non-SYN,并代理第三节点93处理业务;
这里,需要说明的是:第三节点93是指接收消息的节点,第一节点91为第三节点93的备份节点。
在第三节点93过负荷后,所述第三节点93,还用于将第二节点92发送的消息转发给第一节点91;
第二节点92,还用于向第三节点93发送消息。
所述第三节点93,还用于过负荷状态取消后,与第一节点91进行数据同步;
所述第一节点91,还用于第三节点93过负荷状态取消后,与第三节点93进行数据同步。
所述第一节点91,还用于收到第二节点92发送的消息后,且感知第三节点93的所有备份节点均过负荷时,通知第二节点92;
所述第二节点92,还用于收到第一节点91的通知后,依据过负荷策略,按比例丢弃或发送消息。
这里,本发明的所述系统中的第一节点、及第三节点的具体处理过程已在上文中详述,不再赘述。
基于上述P2P网络节点过负荷过程中数据迁移的方法,本发明还提供了一种P2P网络节点过负荷过程中数据迁移的系统,该系统包括:第四节点、第五节点、以及第六节点;其中,
第四节点,用于加入对等网络时,向第五节点发送加入请求消息,并在收到第五节点迁移的迁移数据,且确定收到的迁移数据中存在部分用户的数据不完整后,向第六节点获取所述部分用户的数据;
所述第五节点,还用于收到第四节点发送的加入请求消息后,将第四节点应负责的数据迁移给第四节点;
所述第六节点,用于向第四节点提供所述部分用户的数据。
这里,需要说明的是:第五节点过负荷,第六节点为第五节点的备份节点。
其中,所述部分用户的数据包括所述第六节点代理时产生的变更数据。
这里,本发明的所述P2P网络节点过负荷过程中数据迁移的系统中的第四节点、及第六节点的具体处理过程已在上文中详述,不再赘述。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。