发明内容
本发明的实施例提供一种升级方法和节点设备,使被升级节点只需要和初始升级节点存在通路就可以完成升级,从而提高了升级的成功率,而且实现了多个节点并行升级,提高了升级效率。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种升级方法,包括:
首节点接收第一升级指令;
若所述首节点需要升级,所述首节点根据所述第一升级指令下载升级包进行升级,并保存所述升级包;
所述首节点将所述首节点的所有邻接节点分为一个或多个升级组;
所述首节点向所述每个升级组中的第一节点发送第二升级指令及本升级组的优先升级队列;
所述每个升级组中的第一节点根据所述第二升级指令及所述本升级组的优先升级队列对本升级组中的节点进行升级;
除首节点外的每个节点在自身已升级后,对自身的邻接节点进行扫描,并将所述自身的邻接节点中需要升级的节点根据所述升级包进行升级。
在第一种可能的实现方式中,所述首节点根据所述第一升级指令下载升级包进行升级,并保存所述升级包包括:
所述首节点根据自身的负载判断是否满足升级条件;
当满足升级条件时,所述首节点根据所述第一升级指令下载所述升级包进行升级,并保存所述升级包;
当不满足升级条件时,所述首节点再次根据自身的负载判断是否满足升级条件,直至满足升级条件并根据所述第一升级指令下载所述升级包进行升级,保存所述升级包。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述首节点将所述首节点的所有邻接节点分为一个或多个升级组,包括:
所述首节点将自身的所述每个邻接节点分别划分为一个升级组。
结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述首节点根据节点分组算法将所述首节点的所有邻接节点分为一个或多个升级组,包括:
所述首节点在拓扑图中屏蔽所述首节点与所述首节点的所有邻接节点之间的链接;
在屏蔽所述链接之后,所述首节点将所有邻接节点中链接数目最多的节点与所述链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,其中,所述链接数目最多的节点为该升级组的所述第一节点,所述优先升级队列为在该升级组的所述第一节点完成升级后,该升级组其余节点的升级顺序;
若所述首节点的所有邻接节点中除已分组节点外的剩余节点存在非孤立节点,则将所述除已分组节点外的剩余节点中链接数目最多的节点与所述剩余节点中链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,直至所述首节点的所有邻接节点中除已分组节点外的剩余节点都为孤立节点;
将所述剩余的每个孤立节点分别划分为一个升级组。
结合第一方面或第一方面的第一种至第三种任一可能的实现方式,在第四种可能的实现方式中,所述首节点向所述每个升级组中的第一节点发送第二升级指令及本升级组的优先升级队列包括:
所述首节点根据所述每个升级组的优先级顺序依次向所述每个升级组中的第一节点发送所述第二升级指令及本升级组的优先升级队列。
结合第一方面或第一方面的第一种至第四种任一可能的实现方式,在第五种可能的实现方式中,所述每个升级组中的第一节点根据所述第二升级指令及所述本升级组的优先升级队列对本升级组中的节点进行升级,包括:
若所述第一节点需要升级,所述第一节点根据所述第二升级指令从所述首节点下载所述升级包进行升级,并保存所述升级包;
所述第一节点根据所述第二升级指令,按照所述本升级组的优先升级队列依次向本升级组中的其他节点发送第三升级指令。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述除首节点外的每个节点在自身已升级后,对自身的邻接节点进行扫描包括:
所述除首节点外的每个节点根据所接收的后续升级指令进行升级,其中所述后续升级指令为所述第二升级指令、所述第三升级指令、第四升级指令中的任一升级指令;
所述除首节点外的每个节点在自身已升级后,对自身的邻接节点进行扫描,得到自身的邻接节点的升级情况,根据所述邻接节点的升级情况向所述自身的邻接节点中需要升级的节点发送所述第四升级指令以便所述需要升级的节点根据所述第四升级指令进行升级。
结合第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述除首节点外的每个节点根据所接收的后续升级指令进行升级包括:
所述除首节点外的每个节点接收到所述后续升级指令后,判断自身是否需要升级;
当自身需要升级时,从发送所述后续升级指令的上一节点获取所述升级包;
根据自身的负载判断是否满足升级条件;
当满足升级条件时,根据所述后续升级指令进行升级,并保存所述升级包;
当不满足升级条件时,再次判断是否满足升级条件,直至满足升级条件后,根据所述后续升级指令进行升级,且保存所述升级包。
结合第一方面或第一方面的第一种至第七种任一可能的实现方式,在第八种可能的实现方式中,所述方法还包括:
除首节点外的每个节点完成自身的升级后,向所述首节点上报所述自身的邻接节点的升级情况,所述首节点根据接收到的所有节点的升级情况判断是否有升级失败的节点,如果有升级失败的节点,则重新执行将所有邻接节点分为一个或多个升级组及后续的升级流程,直至所有节点完成升级。
第二方面,提供一种节点设备,包括:
接收单元,用于当所述节点设备作为首节点时,接收第一升级指令;还用于当所述节点设备不是首节点时,接受后续升级指令,所述后续升级指令为第二升级指令、第三升级指令中的一种;
升级单元,用于若所述节点设备需要升级,根据所述接收单元接收的所述第一升级指令或后续升级指令下载升级包进行升级,并保存所述升级包;
扫描节点,用于对自身的邻接节点进行扫描,当所述节点设备不是首节点时,获取所述自身的邻接节点的升级情况;
分组单元,用于当所述节点设备作为首节点时,根据所述扫描节点的扫描结果将所述首节点的所有邻接节点分为一个或多个升级组;
发送单元,用于当所述节点设备作为首节点时,根据所述分组单元的分组结果,向所述每个升级组中的第一节点发送所述第二升级指令及该升级组的优先升级队列,以使所述第一节点根据所述首节点发送的所述第二升级指令及所述优先升级队列对本升级组中的节点进行升级;还用于当所述节点设备不是首节点时,根据扫描节点获取的所述自身的邻接节点的升级情况,向所述自身的邻接节点中需要升级的节点发送所述第三升级指令。
在第二方面的第一种可能的实现方式中,所述升级单元,具体用于:
根据自身的负载判断是否满足升级条件;
当满足升级条件时,根据所述接收单元接收的所述第一升级指令或后续升级指令下载所述升级包进行升级,并保存所述升级包;
当不满足升级条件时,再次根据自身的负载判断是否满足升级条件,直至满足升级条件并根据所述接收单元接收的所述第一升级指令或后续升级指令下载所述升级包进行升级,并保存所述升级包。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述分组单元具体用于:
当所述节点设备作为首节点时,根据所述扫描节点的扫描结果将自身的所述每个邻接节点分别划分为一个升级组。
结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述分组单元包括:
链接屏蔽子单元,用于当所述节点设备作为首节点时,根据所述扫描节点单元的扫描结果在拓扑图中屏蔽所述首节点与所述首节点的所有邻接节点之间的链接,并将屏蔽后的各个节点的链接数发送至分组子单元;
所述分组子单元,用于当所述节点设备作为首节点时,在所述链接屏蔽子单元屏蔽所述链接之后,将所有邻接节点中链接数目最多的节点与所述链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,其中,所述链接数目最多的节点为该升级组的所述第一节点,所述优先升级队列为在该升级组的所述第一节点完成升级后,该升级组其余节点的升级顺序;若所述首节点的所有邻接节点中除已分组节点外的剩余节点存在非孤立节点,则将所述除已分组节点外的剩余节点中链接数目最多的节点与所述剩余节点中链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,直至所述首节点的所有邻接节点中除已分组节点外的剩余节点都为孤立节点;将所述剩余的每个孤立节点分别划分为一个升级组。
结合第二方面或第二方面的第一种至第三种任一可能的实现方式,在第四种可能的实现方式中,所述发送单元,用于当所述节点设备作为首节点时,根据所述分组单元的分组结果,向所述每个升级组中的第一节点发送所述第二升级指令及该升级组的优先升级队列,具体为:
所述发送单元,用于当所述节点设备作为首节点时,根据所述分组单元的分组结果,按照所述每个升级组的优先级顺序依次向所述每个升级组中的第一节点发送所述第二升级指令及该升级组的优先升级队列。
结合第二方面或第二方面的第一种至第四种任一可能的实现方式,在第五种可能的实现方式中,所述升级单元,还用于:
当所述节点设备不是首节点时,在完成自身的升级后,向所述首节点上报所述自身的邻接节点的升级情况;当所述节点设备为首节点时,根据接受的所有节点的升级情况判断是否有升级失败的节点,如果有升级失败的节点,则重新执行将所有邻接节点分为一个或多个升级组及后续的升级流程,直至所有节点完成升级。
第三方面,提供一种节点设备,包括:
处理器和存储器,所述存储器存储执行指令,当所述节点设备运行时,所述处理器执行所述执行指令使得所述节点设备执行如下的方法:
当所述节点设备作为首节点时,
接收第一升级指令;
若所述首节点需要升级,根据所述第一升级指令下载升级包进行升级,并保存所述升级包;
将所述首节点的所有邻接节点分为一个或多个升级组;
向每个所述升级组中的第一节点发送第二升级指令及本升级组的优先升级队列;
当作用于所述每个升级组中的第一节点时,根据所述第二升级指令及所述本升级组的优先升级队列对本升级组中的节点进行升级;
当作为除首节点以外的其他节点时,在自身已升级后,对自身的邻接节点进行扫描,并将所述自身的邻接节点中需要升级的节点根据所述升级包进行升级。
在第三方面的第一种可能的实现方式中,所述根据所述第一升级指令下载升级包进行升级,并保存所述升级包,包括:
根据自身的负载判断是否满足升级条件;当满足升级条件时,根据所述第一升级指令下载所述升级包进行升级,并保存所述升级包;
当不满足升级条件时,再次根据自身的负载判断是否满足升级条件,直至满足升级条件并根据所述第一升级指令下载所述升级包进行升级,保存所述升级包。
结合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将所述首节点的所有邻接节点分为一个或多个升级组,包括:
将所述首节点的所述每个邻接节点分别划分为一个升级组。
结合第三方面或第三方面的第一种可能的实现方式,在第三种可能的实现方式中,所述将所述首节点的所有邻接节点分为一个或多个升级组,包括:
在拓扑图中屏蔽所述首节点与所述首节点的所有邻接节点之间的链接;
在屏蔽所述链接之后,将所有邻接节点中链接数目最多的节点与所述链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,其中,所述链接数目最多的节点为该升级组的所述第一节点,所述优先升级队列为在该升级组的所述第一节点完成升级后,该升级组其余节点的升级顺序;
若所述首节点的所有邻接节点中除已分组节点外的剩余节点存在非孤立节点,则将所述除已分组节点外的剩余节点中链接数目最多的节点与所述剩余节点中链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,直至所述首节点的所有邻接节点中除已分组节点外的剩余节点都为孤立节点;
将所述每个剩余的孤立节点分别划分为一个升级组。
结合第三方面或第三方面的第一种至第三种任一可能的实现方式,在第四种可能的实现方式中,所述向所述每个升级组中的第一节点发送第二升级指令及本升级组的优先升级队列包括:
根据所述每个升级组的优先级顺序依次向所述每个升级组中的第一节点发送所述第二升级指令及本升级组的优先升级队列。
结合第三方面或第三方面的第一种至第四种任一可能的实现方式,在第五种可能的实现方式中,所述根据所述第二升级指令及所述本升级组的优先升级队列对本升级组中的节点进行升级,包括:
若所述第一节点需要升级,根据所述第二升级指令从所述首节点下载所述升级包进行升级,并保存所述升级包;
根据所述第二升级指令,按照所述本升级组的优先升级队列依次向本升级组中的其他节点发送第三升级指令。
结合第三方面或第三方面的第一种至第五种任一可能的实现方式,在第六种可能的实现方式中,所述在自身已升级后对自身的邻接节点进行扫描,包括:
根据所接收的后续升级指令进行升级,其中所述后续升级指令为所述第二升级指令、所述第三升级指令、第四升级指令中的任一升级指令;
在自身已升级后,对自身的邻接节点进行扫描,得到自身的邻接节点的升级情况,根据所述邻接节点的升级情况向所述自身的邻接节点中需要升级的节点发送所述第四升级指令以便所述需要升级的节点根据所述第四升级指令进行升级。
结合第三方面的第六种可能的实现方式,在第七种可能的实现方式中,所述根据所接收的上一节点发送的升级指令进行升级包括:
接收到所述后续升级指令后,判断自身是否需要升级;
当自身需要升级时,从发送所述后续升级指令的上一节点获取所述升级包;
根据自身的负载判断是否满足升级条件;
当满足升级条件时,根据所述后续升级指令进行升级,并保存所述升级包;
当不满足升级条件时,再次判断是否满足升级条件,直至满足升级条件后,根据所述上一节点发送的升级指令进行升级,且保存所述升级包。
结合第三方面或第三方面的第一种至第七种任一可能的实现方式,在第八种可能的实现方式中,所述处理器还用于执行所述执行指令使得所述节点设备执行如下的方法:
当作为除首节点外的每个节点时,完成自身的升级后,向所述首节点上报所述自身的邻接节点的升级情况;
当作为所述首节点时,根据接收到的所有节点的升级情况,判断是否有升级失败的节点,如果有升级失败的节点,则重新执将所有邻接节点分为一个或多个升级组及后续的升级流程,直至所有节点完成升级。
本发明的实施例提供一种升级方法和节点设备,在需要升级的节点网络中,首节点在接收到升级指令后,将自身相邻节点分组,并向各分组的第一个节点下达升级指令,各分组的第一个节点将组内节点升级,除首节点外的节点在自身升级后扫描与其相连的节点升级情况并对需要升级节点进行升级,被升级节点只需要和初始升级节点存在通路就可以完成升级,从而提高了升级的成功率,而且实现了多个节点并行升级,提高了升级效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种升级方法,如图1所示,该方法包括:
S101、首节点接收第一升级指令。
具体的,该首节点可以是所有节点中的任意一个节点,可以采用随机方式或按照配置在各个节点中指定一个首节点,也可以由系统自动或人工来进行选取,可以采用现有方法来指定,本发明对此并不限制。而后,首节点接收升级指令。
S102、若首节点需要升级,首节点根据第一升级指令下载升级包进行升级,并保存升级包。
具体的,首节点在接收到第一升级指令首先判断自身是否已经升级,若升级则直接执行S103;若首节点需要升级,则下载升级包进行升级,并保存升级包。
S103、首节点将首节点的所有邻接节点分为一个或多个升级组。
S104、首节点向每个升级组中的第一节点发送第二升级指令及本升级组的优先升级队列,以使第一节点根据第二升级指令及优先升级队列对本升级组中的节点进行升级。
S105、每个升级组中的第一节点根据第二升级指令及本升级组的优先升级队列对本升级组中的节点进行升级。
S106、除首节点外的每个节点在自身已升级后,对自身的邻接节点进行扫描,并将自身的邻接节点中需要升级的节点根据升级包进行升级。
示例性的,在完成分组后,按照各组的优先级由高到低地将各组进行逐组升级,每个组在升级组内的节点时也要按照节点的优先级由高到低地进行逐点升级。需要说明的是,这里的优先级可以是按照生成分组的时间先后自动决定的,即首先生成的分组具有最高的优先级,最后生成的分组具有最低的优先级,当然也可以采用其他的方法确定各组的优先级,例如,通过升级组中节点的数量来确定,数量多的升级组优先级高,以加快升级的速度,本发明对此并不限制。组内每个节点在完成升级后还要扫描自身的邻接节点,并将邻接节点中需要升级的节点进行升级,这样就实现了多个节点的并行升级。并且,除首节点外的每个节点在自身已升级后,都会对自身的邻接节点进行扫描,并将自身的邻接节点中需要升级的节点根据升级包进行升级。而且,每个节点在升级完成后都会保存升级包,以便在下一个节点升级时将该升级包传给下一个节点,因此,各节点只需要和首节点存在通路就可以完成升级。其中,上述节点可以是服务器。
本发明的实施例提供一种升级的方法,在需要升级的节点网络中,首节点在接收到升级指令后,将自身的相邻节点分组,并向各分组的第一个节点下达升级指令和优先升级列表,各分组的第一个节点根据升级指令优先升级列表将组内节点升级,除首节点外的节点在自身升级后要扫描与其相连的节点升级情况并对需要升级节点进行升级,被升级节点只需要和初始升级节点存在通路就可以完成升级,从而提高了升级的成功率,而且实现了多个节点并行升级,提高了升级效率。
本发明另一实施例提供一种升级的方法,如图2所示,该方法包括:
S201、首节点接收第一升级指令。
其中,选择首节点可以由升级管理系统来完成,具体的,可以采用随机方式或按照配置或由人工选取的方法在各个节点中指定一个首节点,这里升级管理系统可以是一个软件平台并运行在一种节点设备中,该设备可以是一种嵌入式设备,网络可以指局域网,节点可以是服务器。例如,在数据中心的网络中,有多台服务器需要升级软件或者固件,该数据中心的网络可以选择任意一台服务器作为升级的首节点。在确定首节点后,升级管理系统就可以向该首节点下发升级指令。
S202、首节点在接收第一升级指令后,首节点判断自身是否需要升级,当首节点不需要升级时,执行S204;当首节点需要升级时,执行S203。
首节点根据用户设定的标准判断自身是否需要升级,如果需要升级,则执行S203;如果不需要升级,则首节点不进行升级。
示例性的,假设管理员设定的升级标准为在每周一上午8点自动连接Microsoft官网检测Windows Server2008的系统补丁有无更新,如果检测到系统补丁的版本号高于服务器中已安装的补丁版本号,则按照执行S2032进行升级步骤,如果检测到系统补丁的版本号不高于服务器中已安装的补丁版本号,则不执行升级步骤。
S203、首节点根据升级包进行升级并保存该升级包。具体的,节点升级的方法可以包括以下步骤:
S2031、首节点判断自身的负载是否允许升级,如果负载允许首节点升级,则执行S2032;如果负载不允许首节点升级,则再次执行S2031,直至首节点的负载允许升级时为止,并执行则执行S2032。
S2032、首节点下载升级包,根据升级包进行升级,并保存升级包。
S204、首节点将首节点的所有邻接节点分为一个或多个升级组。
具体的,可以有以下几种实现方法:
第一种,首节点可以将自身的每一个邻接节点分为一个组。例如,假设网络中有1~10共10个节点,其中节点1为首节点,节点2~节点9为节点1的邻接节点,与节点1直接相连,而节点10为节点5的邻接节点,如图3所示。根据上述方法可以将节点2~节点9中每个节点分为一组,共得到8个组,而节点10不分组。
或者,第二种方法包括:
第一步,首节点在拓扑图中屏蔽首节点与首节点的所有邻接节点之间的链接。
第二步,在屏蔽链接之后,首节点将所有邻接节点中链接数目最多的节点与链接数目最多的节点的邻接节点分为一个升级组,并确定该组的优先升级队列,其中,链接数目最多的节点为该升级组的第一节点,优先升级队列为在该升级组的第一节点完成升级后,该升级组其余节点的升级顺序。
若除已分组节点外的剩余节点都为孤立节点,则令首节点把每个孤立节点分为一个组。
若首节点的所有邻接节点中除已分组节点外的剩余节点存在非孤立节点,则将除已分组节点外的剩余节点中链接数目最多的节点与剩余节点中链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,直至首节点的所有邻接节点中除已分组节点外的剩余节点都为孤立节点为止,并将剩余的每个孤立节点分别划分为一个升级组。
例如,如图3所示的10个节点,可以首先将节点1与节点1的邻接节点之间的链接屏蔽掉,即节点1与节点2~节点9之间的链接,屏蔽掉链接后的结果如图4所示,选出在将节点1与节点1的邻接节点之间的链接屏蔽掉后链接个数最多的节点,有节点4、节点2、节点5、节点6,将节点4及节点4的邻接节点分为一个组,即将节点4、节点3、节点5、节点6分为一个组,标记为A组,而后屏蔽A组内所有的节点,删除后的结果图5所示,而后将剩余的节点中链接最多的节点,即节点8和节点9分为一个组,标记为B组,令剩余的孤立节点2、节点7各自构成一个组,并标记为C组、D组,由于节点10不直接与节点1相连,因此,此处不存在节点10的分组。
或者,还可以采用其他的算法进行分组,例如还可以采用数据挖掘算法,例如K-means算法这种典型的基于距离的聚类算法,具体采用何种算法可以根据实际需求来设置,本实施例不做限定。
S205、首节点向每个升级组中的第一节点发送第二升级指令及本升级组的优先升级队列。
具体的,在完成分组后,首节点可以根据每个升级组的优先级顺序依次向所述每个升级组中的第一节点发送所述第二升级指令及本升级组的优先升级队列。这里的优先级可以是按照生成分组的时间先后自动决定的,即首先生成的分组具有最高的优先级,最后生成的分组具有最低的优先级,当然也可以采用其他的方法确定各组的优先级,例如,通过升级组中节点的数量来确定,数量多的升级组优先级高,以加快升级的速度,本发明对此并不限制。
S206、每个升级组的第一节点根据第二升级指令及本升级组的优先升级队列对本升级组中的节点进行升级。
各升级组的第一节点接收到第一节点发送的第二升级指令后,判断自身是否需要升级,若需要升级,则第一节点根据所述第二升级指令从所述首节点下载所述升级包进行升级,并保存所述升级包;
第一节点根据第二升级指令,按照所接收的本升级组的优先升级队列依次向本升级组中的其他节点发送第三升级指令,以便其他节点根据接收的升级指令进行升级。
S207、除首节点外的每个节点在自身已升级后,对自身的邻接节点进行扫描,并将自身的邻接节点中需要升级的节点进行升级。
具体的,除首节点外的每个节点根据所接收的后续升级指令进行升级,这里的后续升级指令是指包括首节点发送给各升级组中的第一节点的第二升级指令、各第一节点发送给本升级组内的其他节点的第三升级指令、各节点发送给所搜索到的自身的邻接节点中需要升级的其他节点的第四升级指令中的任一种升级指令;除首节点外的每个节点在自身已升级后,对自身的邻接节点进行扫描,得到自身的邻接节点的升级情况,根据自身的邻接节点的升级情况向其中需要升级的节点发送第四升级指令以便需要升级的节点根据第四升级指令进行升级。
当然,除首节点外的每个节点在接收到后续升级指令后,也可以先判断自身是否需要升级,当自身需要升级时,从发送后续升级指令给自己的上一个节点获取升级包,并根据自身的负载判断是否满足升级条件。当满足升级条件时,根据后续升级指令进行升级,并保存升级包;当不满足升级条件时,再次判断是否满足升级条件,直至满足升级条件后,根据接收的后续升级指令进行升级,且保存获取的升级包。
例如,优先级最高的组内的第一节点为当前需要升级的节点,简称当前节点。该当前节点在接收到上一级节点,也就是首节点发送的升级指令和本组节点的升级队列后,该当前节点判断自身是否已升级。当前节点已升级时,当前节点就扫描自身的邻接节点,得到自身的邻接节点的升级情况,而后,当前节点按照节点的优先升级队列向自身的邻接点发送第三升级指令,令当前节点的邻接点根据节点的优先升级队列和升级包进行升级;若当前节点需要升级时,当前节点从上一节点,即首节点获取升级包。而后,当前节点根据自身的负载判断是否满足升级条件;若满足升级条件,则当前节点根据升级包进行升级,并保存升级包;若当前节点不满足升级条件,则当前节点再次判断是否满足升级条件,直至当前节点满足升级条件且根据升级包进行升级,并保存升级包。在完成升级后,当前节点需要上报其上一节点,这里指首节点。
当当前节点完成升级后,向节点的升级队列中规定的下一个节点发送第三升级指令,以便该下一个节点进行升级,同时当前节点还要对自身的邻接节点进行扫描,查找自身的邻接节点中需要升级的节点,并向自身的邻接节点中需要升级的节点发送第四升级指令,使这些需要升级的节点进行升级。
接收到第三升级指令或第四升级指令的各节点,在完成自身的升级后,对自身的邻接节点进行扫描,查找自身的邻接节点中需要升级的节点,并向自身的邻接节点中需要升级的节点发送第四升级指令,使这些需要升级的节点进行升级。
当上述优先级最高的组内的所有节点升级完成后,首节点向优先级第二高的组的第一个节点发送第二升级指令和节点的优先升级队列,使该组内的节点按照节点的优先升级队列进行升级,具体方法与上述优先级最高的组内的节点的升级方法完全相同,不再赘述。
示例性的,假设网络中有1~10共10个节点,其中节点1为首节点,节点2~节点9为节点1的邻接节点,与节点1直接相连,而节点10为节点5的邻接节点。
若分组时采用的是S204中的第一种分组方法,则分为8个组,每个组内有一个节点,分别为节点2~节点9,节点10不分组。在完成分组后,节点1先向第一组发送升级指令,即先升级节点2,节点2在完成升级后上报给节点1,节点1向第二组发送升级指令,即升级节点3,同时节点2扫描到其邻接节点6需要升级,所以节点2向节点6发送升级指令,令节点6也升级,这样就实现了节点3与节点6同时升级,节点3在完成升级后上报给节点1,而由于节点6的升级并不是由节点1下发的任务,因此,节点6升级完后并不向节点1上报,而是向节点2上报,当然可以再由节点2向上级节点节点1上报。而后节点1向第三组发送升级指令,即升级节点4,同时节点6在完成升级后扫描到其邻接节点7需要升级,所以节点6向节点7发送升级指令,令节点7也升级,这样就实现了节点4与节点7同时升级,节点4在完成升级后上报给节点1,而由于节点7的升级并不是由节点1下发的任务,因此,节点7升级完后并不向节点1上报,而是向节点6上报,也可以由节点6再向上级节点节点2上报。而后节点1向第四组发送升级指令,即升级节点5,节点5在完成升级后上报给节点1,而此时节点1发现第五组的节点6和第六组的节点7已完成升级,此时,可以是节点接收各节点逐级上报的结果得到的相关升级情况信息,当然,也可以采用节点1自己扫描相邻节点的方法获取相关升级情况信息,或者是节点1向第五组的节点6和第六组的节点7发送升级命令时发现节点6、7已完成了升级,本发明对此并不限制。故节点1向第七组发送升级指令,即升级节点8,同时节点5在扫描到其邻接节点10需要升级后,向节点10发送升级指令,令节点10升级,这样就实现了节点8与节点10同时升级,节点8在完成升级后上报给节点1,而由于节点10的升级并不是由节点1下发的任务,因此,节点10升级完后并不向节点1上报。最后,节点1向第八组发送升级指令,令节点9升级。这样就完成了所有节点的升级,可以看出,节点3和节点6、节点4和节点7、节点8和节点10是同时升级的,节省了升级时间。
若分组时采用的是S204中的第二种分组方法,则分为5个组,A组包括:节点4、节点3、节点5和节点6,B组包括节点8、节点9,C包括节点2,D组包括节点7,E组包括节点10。
在完成分组后,节点1先向A组的节点4发送升级指令,令节点4升级,节点4完成升级后上报节点1,而后节点4按照A组的优先升级队列向下一个节点,即节点3发送升级指令,令节点3升级,同时节点4在扫描到其邻接节点5需要升级后,向节点5发送升级指令,令节点5升级,这样就实现了节点3和节点5同时升级,在节点3和节点5完成升级后上报给节点4以便节点4上报给节点1。而后节点4按照节点的优先升级列表向节点6发送升级指令,令节点6升级,同时节点5扫描到其邻接节点10需要升级后,向节点10发送升级指令,令节点10升级,这样就实现了节点6和节点10同时升级,节点6在完成升级后上报给节点4以便节点4上报给节点1,而由于节点10的升级并不是由节点1下发的任务,因此,节点10升级完后并不向节点4上报。此时,就完成了A组的升级,故节点1向B组的节点8发送升级指令,令节点8升级,同时节点6在扫描到其邻接节点2和邻接节点7需要升级,因此,在节点8升级时,节点6向节点2发送指令,这样实现了节点8和节点2的同时升级,由于节点2并不是节点1下发的任务,所以节点6不向节点4上报。节点6向邻接节点7发送升级指令,同时节点8根据B组的优先升级队列向下一个节点9发送升级指令,实现了节点7与节点9的同时升级,由于节点9的升级是节点1给节点8下发的任务,节点8向节点1上报节点9的升级情况。节点1依次向C组节点2和D节点7以及E组节点10下发升级指令时发现三个节点均已完成升级,从而本轮升级结束。
这样就完成了所有节点的升级,可以看出,节点3和节点5、节点6和节点10、节点7和节点9是同时升级的,节省了升级时间。
S208、首节点检查所有节点的升级情况,判断是否有升级失败的节点,如果有升级失败的节点,则重新执行S204~S207,直至所有节点完成升级;如果没有升级失败的节点则升级结束。
由于在除首节点外的每个节点完成升级后,都会向首节点上报升级情况,首节点根据上报的升级情况判断是否有升级失败的节点。
例如,可以通过以下方式实现:每个节点完成升级后扫描自身的邻接节点并生成邻接表(该邻接表用于存储邻接节点的升级情况),每个节点在生成邻接表后发送给首节点,当所有节点执行过一次升级后,首节点也就得到了所有节点上报的邻接表,而后首节点根据这些邻接表就可以检查所有节点的升级情况,从而判断出是否存在升级失败的节点。
本发明的实施例提供一种升级的方法,在需要升级的节点网络中,首节点在接收到升级指令后,将扫描到的节点分组,并向各分组的第一个节点下达优先升级列表,各分组的第一个节点根据优先升级列表将组内节点升级,分组内的节点在自身升级后要扫描与其相连的节点升级情况并对需要升级节点进行升级,被升级节点只需要和初始升级节点存在通路就可以完成升级,从而提高了升级的成功率,而且实现了多个节点并行升级,提高了升级效率。
本发明又一实施例提供一种节点设备01,如图6所示,包括:
接收单元011,用于当所述节点设备作为首节点时,接收第一升级指令;还用于当所述节点设备不是首节点时,接受后续升级指令,所述后续升级指令为第二升级指令、第三升级指令中的一种;
升级单元012,用于若节点设备需要升级,根据接收单元011接收的第一升级指令或后续升级指令下载升级包进行升级,并保存升级包;
扫描节点单元013,用于对自身的邻接节点进行扫描,当节点设备不是首节点时,获取自身的邻接节点的升级情况;
分组单元014,用于当节点设备作为首节点时,根据扫描节点单元013的扫描结果将首节点的所有邻接节点分为一个或多个升级组;
发送单元015,用于当节点设备作为首节点时,根据分组单元014的分组结果,向每个升级组中的第一节点发送第二升级指令及该升级组的优先升级队列,以使第一节点根据首节点发送的第二升级指令及优先升级队列对本升级组中的节点进行升级;还用于当节点设备不是首节点时,根据扫描节点单元013获取的自身的邻接节点的升级情况,向自身的邻接节点中需要升级的节点发送第三升级指令。
进一步的,升级单元012可以具体用于:
根据自身的负载判断是否满足升级条件;
当满足升级条件时,根据接收单元011接收的第一升级指令或后续升级指令下载升级包进行升级,并保存升级包;
当不满足升级条件时,再次根据自身的负载判断是否满足升级条件,直至满足升级条件并根据接收单元011接收的第一升级指令或后续升级指令下载升级包进行升级,并保存升级包。
分组单元014可以具体用于:
当节点设备作为首节点时,根据扫描节点单元013的扫描结果将自身的每个邻接节点分别划分为一个升级组。
或者进一步的,如图7所示,分组单元014可以包括:
链接屏蔽子单元0141,用于当节点设备作为首节点时,根据扫描节点单元013的扫描结果在拓扑图中屏蔽首节点与首节点的所有邻接节点之间的链接,并将屏蔽后的各个节点的链接数发送至分组子单元0142;
所述分组子单元0142,用于当节点设备作为首节点时,在链接屏蔽子单元屏蔽链接之后,将所有邻接节点中链接数目最多的节点与链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,其中,链接数目最多的节点为该升级组的第一节点,优先升级队列为在该升级组的第一节点完成升级后,该升级组其余节点的升级顺序;若首节点的所有邻接节点中除已分组节点外的剩余节点存在非孤立节点,则将除已分组节点外的剩余节点中链接数目最多的节点与剩余节点中链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,直至首节点的所有邻接节点中除已分组节点外的剩余节点都为孤立节点;将所剩余的每个孤立节点分别划分为一个升级组。
再进一步的,发送单元015,用于当节点设备作为首节点时,根据分组单元014的分组结果,向每个升级组中的第一节点发送第二升级指令及该升级组的优先升级队列,具体为:
发送单元015,用于当节点设备作为首节点时,根据分组单元014的分组结果,根据升级组的优先级顺序依次向每个升级组中的第一节点发送第二升级指令及该升级组的优先升级队列。
更进一步的,升级单元012还可以具体用于:
当节点设备不是首节点时,在完成自身的升级后,向首节点上报自身的邻接节点的升级情况;当节点设备为首节点时,根据所有节点的升级情况判断是否有升级失败的节点,如果有升级失败的节点,则重新执行将所有邻接节点分为一个或多个升级组及后续的升级流程,直至所有节点完成升级。
本发明的实施例提供一种节点设备,在需要升级的节点网络中,节点设备作为首节点在接收到升级指令后,将所有邻接的节点分组,并向各分组的第一个节点下达优先升级列表,节点设备作为各分组的第一个节点根据优先升级列表将组内节点升级,节点设备作为首节点以外的其他节点在自身升级后扫描与其相连的节点升级情况并对需要升级节点进行升级,被升级节点只需要和初始升级节点存在通路就可以完成升级,从而提高了升级的成功率,而且实现了多个节点并行升级,提高了升级效率。
本发明实施例还提供另一种节点设备02,包括处理器024和存储器023,如图8所示,当然,该设备还可以包括接收装置021、发送装置022,本发明对此并不限制。
存储器023,用于存储执行指令;
处理器024,用于当节点设备运行时,执行所述执行指令使得节点设备执行如下的方法:
当所述节点设备作为首节点时,
首节点接收第一升级指令;
若首节点需要升级,根据第一升级指令下载升级包进行升级,并保存升级包;
将首节点的所有邻接节点分为一个或多个升级组;
向每个升级组中的第一节点发送第二升级指令及本升级组的优先升级队列。
当节点设备作为每个升级组的第一节点时,根据第二升级指令及本升级组的优先升级队列对本升级组中的节点进行升级;
当节点设备作为除首节点以外的其他节点时,用于在自身已升级后,对自身的邻接节点进行扫描,并将自身的邻接节点中需要升级的节点根据升级包进行升级。
进一步的,节点设备作为首节点时,根据第一升级指令下载升级包进行升级,并保存所述升级包,包括:
根据自身的负载判断是否满足升级条件;当满足升级条件时,根据第一升级指令下载升级包进行升级,并保存升级包;
当不满足升级条件时,再次根据自身的负载判断是否满足升级条件,直至满足升级条件并根据第一升级指令下载升级包进行升级,保存升级包。
再进一步的,节点设备作为首节点时,将首节点的所有邻接节点分为一个或多个升级组,包括:
将自身的每个邻接节点分别划分为一个升级组。
或者,节点设备作为首节点时,将首节点的所有邻接节点分为一个或多个升级组,包括:
在拓扑图中屏蔽首节点与首节点的所有邻接节点之间的链接;
在屏蔽链接之后,将所有邻接节点中链接数目最多的节点与链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,其中,链接数目最多的节点为该升级组的第一节点,优先升级队列为在该升级组的第一节点完成升级后,该升级组其余节点的升级顺序;
若首节点的所有邻接节点中除已分组节点外的剩余节点存在非孤立节点,则将除已分组节点外的剩余节点中链接数目最多的节点与剩余节点中链接数目最多的节点的邻接节点分为一个升级组,并确定该升级组的优先升级队列,直至首节点的所有邻接节点中除已分组节点外的剩余节点都为孤立节点;
将剩余的每个孤立节点分别划分为一个升级组。
再进一步的,节点设备作为首节点时,向每个升级组中的第一节点发送第二升级指令及本升级组的优先升级队列,包括:
根据每个升级组的优先级顺序依次向每个升级组中的第一节点发送第二升级指令及该升级组的优先升级队列。
更进一步的,节点设备作为每个升级组的第一节点时,根据第二升级指令及本升级组的优先升级队列对本升级组中的节点进行升级,包括:
若第一节点需要升级,根据第二升级指令从首节点下载升级包进行升级,并保存升级包;
根据第二升级指令,按照本升级组的优先升级队列依次向本升级组中的其他节点发送第三升级指令。
再进一步的,当节点设备作为除首节点以外的其他节点时,在自身已升级后对自身的邻接节点进行扫描,包括:
根据所接收的后续升级指令进行升级,其中后续升级指令为包括首节点发送给各升级组中的第一节点的第二升级指令、各第一节点发送给本升级组内的其他节点的第三升级指令、各节点发送给所搜索到的自身的邻接节点中需要升级的其他节点的第四升级指令中的任一种升级指令;
在自身已升级后,对自身的邻接节点进行扫描,得到自身的邻接节点的升级情况,根据邻接节点的升级情况向自身的邻接节点中需要升级的节点发送第四升级指令以便需要升级的节点根据第四升级指令进行升级。
更进一步的,当节点设备作为除首节点以外的其他节点时,所述根据所接收的后续升级指令进行升级,包括:
接收到上一节点发送的后续升级指令后,判断自身是否需要升级;
当自身需要升级时,从发送后续升级指令的上一节点获取升级包;
根据自身的负载判断是否满足升级条件;
当满足升级条件时,根据后续升级指令进行升级,并保存升级包;
当不满足升级条件时,再次判断是否满足升级条件,直至满足升级条件后,根据后续升级指令进行升级,且保存升级包。
再进一步的,处理器024还用于执行执行指令使得节点设备执行如下的方法:
当作为除首节点外的每个节点时,完成自身的升级后,向首节点上报自身的邻接节点的升级情况;
当作为首节点时,根据接收到的所有节点的升级情况,判断是否有升级失败的节点,如果有升级失败的节点,则重新执将所有邻接节点分为一个或多个升级组及后续的升级流程,直至所有节点完成升级。
本发明的实施例提供一种节点设备,在需要升级的节点网络中,在作为首节点接收到升级指令后,将自身的相邻节点分组,并向各分组的第一个节点下达升级指令和优先升级列表,在作为各分组的第一个节点时,根据升级指令和优先升级列表将组内节点升级,在作为除首节点以外的节点时,在自身升级后扫描与其相连的节点升级情况并对需要升级节点进行升级,被升级节点只需要和初始升级节点存在通路就可以完成升级,从而提高了升级的成功率,而且实现了多个节点并行升级,提高了升级效率。在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。