本发明涉及计算机技术领域,特别是涉及一种分布式系统升级方法、分布式系统及升级管理设备。
背景技术:
分布式系统通常包括多台通信连接的节点设备,这些节点设备可以分为主节点、备节点和计算节点,主节点以及备节点可以对计算节点进行调度管理,计算节点可以提供各种服务。
在对分布式系统进行升级时,通常需要对系统中的各节点设备依次进行升级。目前,分布式系统中节点设备越来越多,功能也越来越复杂,使得分布式系统的升级操作耗费的时间越来越长。
一般来说,分布式系统在升级期间不能提供服务,也就是说,分布式系统的升级操作过长会影响系统的正常使用。
技术实现要素:
本发明实施例的目的在于提供一种分布式系统升级方法、分布式系统及升级管理设备,在升级的同时,能够继续提供服务。
为达到上述目的,本发明实施例公开了一种分布式系统升级方法,所述分布式系统包括:主节点、备节点和计算节点;所述方法包括:
向备节点发送升级指令,以使备节点进行升级操作;
在检测到备节点升级完成后,确定待升级计算节点;其中,所确定的待升级计算节点数量小于计算节点的总数量;
向所确定的待升级计算节点发送升级指令,以使待升级计算节点进行升级操作;
判断升级完成的计算节点的数量是否达到预设阈值,所述预设阈值不大于计算节点的总数量;
如果否,返回执行所述确定待升级计算节点的步骤;
如果是,将所述主节点切换为备节点;在升级完成的备节点中确定新的主节点;将升级完成的计算节点连接至所述新的主节点;向所述系统中未升级的备节点和/或未升级的计算节点发送升级指令,以使所述未升级的计算节点和/或备节点进行升级操作。
可选的,在所述向备节点发送升级指令之前,还可以包括:
通过切换调度策略,断开备节点与主节点的连接、以及备节点与计算节点的连接;
所述方法还可以包括:
在检测到所述系统中全部节点升级完成后,通过切换调度策略,建立备节点与主节点的连接、以及备节点与计算节点的连接。
可选的,在断开备节点与计算节点的连接之后,还可以包括:
将断开连接的计算节点连接至主节点。
可选的,所述方法还可以包括:
在检测到所述系统中全部节点升级完成后,根据预设连接规则,将计算节点连接至对应的主节点或备节点。
可选的,所述向备节点发送升级指令,以使备节点进行升级操作,包括:
获得第一升级程序,将所述第一升级程序发送给备节点,以使备节点利用所述第一升级程序进行升级;
或者,向备节点发送升级指令,以使备节点根据所述升级指令获取第一升级程序,并利用所述第一升级程序进行升级;
所述向所确定的待升级计算节点发送升级指令,以使待升级计算节点进行升级操作,包括:
获得第二升级程序,将所述第二升级程序发送给待升级计算节点,以使待升级计算节点利用所述第二升级程序进行升级;
或者,向待升级计算节点发送升级指令,以使待升级计算节点根据所述升级指令获取第二升级程序,并利用所述第二升级程序进行升级;
所述向所述系统中未升级的备节点和/或未升级的计算节点发送升级指令,以使所述未升级的计算节点和/或备节点进行升级操作,包括:
获得第三升级程序,将所述第三升级程序发送给未升级的备节点和/或未升级的计算节点,以使所述未升级的计算节点和/或备节点利用所述第三升级程序进行升级;
或者,向待升级计算节点发送升级指令,以使所述未升级的计算节点和/或备节点根据所述升级指令获取第三升级程序,并利用所述第三升级程序进行升级。
可选的,在所述向所确定的待升级计算节点发送升级指令之前,所述方法还可以包括:
向所确定的待升级计算节点发送切换指令,指示待升级计算节点将自身运行的服务或者任务切换至升级完成的计算节点中。
为达到上述目的,本发明实施例还公开了一种分布式系统,包括:升级管理设备、主节点、备节点和计算节点;其中,
所述升级管理设备,用于向备节点发送升级指令;在检测到备节点升级完成后,确定待升级计算节点;其中,所确定的待升级计算节点数量小于计算节点的总数量;向所确定的待升级计算节点发送升级指令;判断升级完成的计算节点的数量是否达到预设阈值,所述预设阈值不大于计算节点的总数量;如果否,返回执行所述确定待升级计算节点的步骤;如果是,将所述主节点切换为备节点;在升级完成的备节点中确定新的主节点;将升级完成的计算节点连接至所述新的主节点;向所述系统中未升级的备节点和/或未升级的计算节点发送升级指令;
所述备节点,用于在接收到所述升级管理设备发送的升级指令后,进行升级操作;
所述主节点,用于在接收到所述升级管理设备发送的升级指令后,进行升级操作;
所述计算节点,用于在接收到所述升级管理设备发送的升级指令后,进行升级操作。
可选的,所述升级管理设备,还用于在向备节点发送升级指令之前、以及检测到所述系统中全部节点升级完成后,切换调度策略;
所述主节点,还用于根据当前调度策略,调整自身与所述系统中备节点及计算节点的连接状态;
所述备节点,还用于根据当前调度策略,调整自身与所述系统中主节点及计算节点的连接状态。
可选的,所述升级管理设备,还用于在备节点与计算节点的连接断开之后,将断开连接的计算节点连接至主节点。
可选的,所述升级管理设备,还用于在检测到所述系统中全部节点升级完成后,根据预设连接规则,将计算节点连接至对应的主节点或备节点。
可选的,所述升级管理设备,还用于获得第一升级程序,将所述第一升级程序发送给备节点;获得第二升级程序,将所述第二升级程序发送给待升级计算节点,以使待升级计算节点利用所述第二升级程序进行升级;获得第三升级程序,将所述第三升级程序发送给未升级的备节点和/或未升级的计算节点;
所述备节点,还用于接收所述升级管理设备发送的第一升级程序,并利用所述第一升级程序进行升级;或者,根据所述升级管理设备发送的升级指令获取第一升级程序,并利用所述第一升级程序进行升级;
所述计算节点,还用于接收所述升级管理设备发送的第二升级程序,并利用所述第二升级程序进行升级;或者,根据所述升级管理设备发送的升级指令获取第二升级程序,并利用所述第二升级程序进行升级;
所述主节点,还用于接收所述升级管理设备发送的第三升级程序,并利用所述第三升级程序进行升级;或者,根据所述升级管理设备发送的升级指令获取第三升级程序,并利用所述第三升级程序进行升级。
可选的,所述计算节点,还用于在接收到所述升级管理设备发送的升级指令后,将自身运行的服务或者任务切换至升级完成的计算节点中;
或者,
所述升级管理设备,还用于向所确定的待升级计算节点发送切换指令;
所述计算节点,还用于在接收到所述切换指令后,将自身运行的服务或者任务切换至升级完成的计算节点中。
可选的,所述计算节点,还用于在与备节点断开连接后,连接至主节点。
为达到上述目的,本发明实施例还公开了一种升级管理设备,包括:
第一发送模块,用于向备节点发送升级指令,以使备节点进行升级操作;
检测模块,用于检测备节点是否升级完成,如果是,触发第一确定模块;
第一确定模块,用于确定待升级计算节点;其中,所确定的待升级计算节点数量小于计算节点的总数量;
第二发送模块,用于向所确定的待升级计算节点发送升级指令,以使待升级计算节点进行升级操作;
判断模块,用于判断升级完成的计算节点的数量是否达到预设阈值,所述预设阈值不大于计算节点的总数量;如果否,触发所述第一确定模块;如果是,触发切换模块;
切换模块,用于将所述主节点切换为备节点;
第二确定模块,用于在升级完成的备节点中确定新的主节点;
第一连接模块,用于将升级完成的计算节点连接至所述新的主节点;
第三发送模块,用于向所述系统中未升级的备节点和/或未升级的计算节点发送升级指令,以使所述未升级的计算节点和/或备节点进行升级操作。
可选的,所述设备还可以包括:
断开连接模块,用于在所述向备节点发送升级指令之前,通过切换调度策略,断开备节点与主节点的连接、以及备节点与计算节点的连接;
建立连接模块,用于在检测到所述系统中全部节点升级完成后,通过切换调度策略,建立备节点与主节点的连接、以及备节点与计算节点的连接。
可选的,所述设备还可以包括:
第二连接模块,用于在断开备节点与计算节点的连接之后,将断开连接的计算节点连接至主节点。
可选的,所述设备还可以包括:
第三连接模块,用于在检测到所述系统中全部节点升级完成后,根据预设连接规则,将计算节点连接至对应的主节点或备节点。
可选的,所述第一发送模块,具体可以用于:
获得第一升级程序,将所述第一升级程序发送给备节点,以使备节点利用所述第一升级程序进行升级;
或者,向备节点发送升级指令,以使备节点根据所述升级指令获取第一升级程序,并利用所述第一升级程序进行升级;
所述第二发送模块,具体可以用于:
获得第二升级程序,将所述第二升级程序发送给待升级计算节点,以使待升级计算节点利用所述第二升级程序进行升级;
或者,向待升级计算节点发送升级指令,以使待升级计算节点根据所述升级指令获取第二升级程序,并利用所述第二升级程序进行升级;
所述第三发送模块,具体可以用于:
获得第三升级程序,将所述第三升级程序发送给未升级的备节点和/或未升级的计算节点,以使所述未升级的计算节点和/或备节点利用所述第三升级程序进行升级;
或者,向待升级计算节点发送升级指令,以使所述未升级的计算节点和/或备节点根据所述升级指令获取第三升级程序,并利用所述第三升级程序进行升级。
可选的,所述设备还可以包括:
第四发送模块,用于向所确定的待升级计算节点发送切换指令,指示待升级计算节点将自身运行的服务或者任务切换至升级完成的计算节点中。
由此可见,本方案中,对计算节点分批次进行升级,也就是每次对部分计算节点进行升级,其它计算节点能够继续提供服务,这样,系统在升级的同时,能够继续提供服务。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式系统升级方法的流程示意图;
图2为本发明实施例提供的一种分布式系统的结构示意图;
图3为本发明实施例提供的一种升级管理设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决上述技术问题,本发明实施例提供了一种分布式系统升级方法、分布式系统及升级管理设备,该方法可以应用于升级管理设备,该升级管理设备可以为该系统中的设备,也可以为独立于该系统的设备,具体不做限定。
如果该升级管理设备为该系统中的设备,则该系统包括:主节点、备节点、计算节点和升级管理设备。如果该升级管理设备为独立于该系统的设备,则该系统包括:主节点、备节点和计算节点。或者,该方法也可以应用于其他设备,具体不做限定。
下面首先对本发明实施例提供的分布式系统升级方法进行详细说明。
图1为本发明实施例提供的一种分布式系统升级方法的流程示意图,包括:
s101:向备节点发送升级指令,以使备节点进行升级操作。
作为一种实施方式,可以先通过切换调度策略,断开备节点与主节点的连接、以及备节点与计算节点的连接,再执行s101。
举例来说,可以通过权重分配方式进行调度,比如,调度策略为“100(主):0(备)”时,表示只启动主节点,不启动备节点;调度策略为“50(主):50(备)”时,表示主、备节点都启动;调度策略为“0(主):100(备)”时,表示只启动备节点,不启动主节点……具体的调度策略可以为其他,具体不做限定。
在上述例子中,正常工作状态下,调度策略可以为“50(主):50(备)”,当系统需要升级时,可以将调度策略切换为“100(主):0(备)”,这样,就相当于停止了备节点中服务的运行,具体来说,就是断开备节点与主节点的连接、以及备节点与计算节点的连接。
作为一种实施方式,在断开备节点与计算节点的连接之后,将断开连接的计算节点连接至主节点。主节点可以代替备节点对这些计算节点进行管理,这样,这些计算节点便可以继续提供服务。
或者,这些与备节点断开连接的计算节点,也可以自动连接至主节点,这也是合理的。
停止备节点中服务的运行后,向备节点发送升级指令。
节点的升级过程,可以为新程序替换掉原程序的过程,或者也可以为新组件替换部分组件的过程。为了方便描述,以下内容中将新程序或者新组件统称为升级程序。
在本实施例中,执行本方案的设备可以获得升级程序,将升级程序发送给节点,节点接收到升级程序后,利用升级程序进行升级;
或者,执行本方案的设备不需要获得升级程序,只是向节点发送升级指令,节点接收到该升级指令后,到预设地址下载升级程序,利用下载的升级程序进行升级;
或者,执行本方案的设备发送的升级指令中可以携带下载地址,节点接收到升级指令后,根据升级指令中携带的下载地址下载升级程序,利用下载的升级程序进行升级。或者,也可以采用其他方案,在此不一一列举。
作为一种实施方式,执行本方案的设备可以获得第一升级程序,将所述第一升级程序发送给备节点,以使备节点利用所述第一升级程序进行升级。
作为另一种实施方式,执行本方案的设备可以向备节点发送升级指令,以使备节点根据所述升级指令获取第一升级程序,并利用所述第一升级程序进行升级。
s102:检测备节点是否升级完成,如果是,执行s103。
s103:确定待升级计算节点;其中,所确定的待升级计算节点数量小于计算节点的总数量。
在本实施例中,分布式系统中有多台计算节点;备节点可以有多台,也可以仅有一台,主节点可以有多台,也可以仅有一台,具体不做限定。
每次确定的待升级计算节点数量小于计算节点的总数量,也就是分批次在计算节点中确定待升级计算节点。每次确定的待升级计算节点数量可以是固定的,也可以不固定。
举例来说,分布式系统中有10台计算节点,可以每次确定2台待升级计算节点,也可以依次确定3台、3台、4台待升级计算节点;确定待升级计算节点的规则不做限定。
s104:向所确定的待升级计算节点发送升级指令,以使待升级计算节点进行升级操作。
作为一种实施方式,执行本方案的设备可以获得第二升级程序,将所述第二升级程序发送给待升级计算节点,以使待升级计算节点利用所述第二升级程序进行升级。
作为另一种实施方式,执行本方案的设备可以向待升级计算节点发送升级指令,以使待升级计算节点根据所述升级指令获取第二升级程序,并利用所述第二升级程序进行升级。
在本实施例中,执行本方案的设备可以获得升级程序,将升级程序发送给节点,节点接收到升级程序后,利用升级程序进行升级;
或者,执行本方案的设备不需要获得升级程序,只是向节点发送升级指令,节点接收到该升级指令后,到预设地址下载升级程序,利用下载的升级程序进行升级;
或者,执行本方案的设备发送的升级指令中可以携带下载地址,节点接收到升级指令后,根据升级指令中携带的下载地址下载升级程序,利用下载的升级程序进行升级。或者,也可以采用其他方案,在此不一一列举。
作为一种实施方式,在向所确定的待升级计算节点发送升级指令之前,可以先向所确定的待升级计算节点发送切换指令。计算节点可以在接收到切换指令后,将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中。
可以理解,待升级计算节点在升级前,可以将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中,这样,被切换的服务或者任务仍可以在其他计算节点中运行,提高了分布式系统对外提供的服务质量。
或者,作为另一种实施方式,执行本方案的设备也可以不发送切换指令,仅发送升级指令,这种实施方式中,计算节点在接收到升级指令后,先将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中,再进行升级操作,这也是合理的。
s105:判断升级完成的计算节点的数量是否达到预设阈值,如果否,返回执行s103,如果是,执行s106。
s105中的预设阈值小于或等于分布式系统中计算节点的总数量,比如,预设阈值可以为该总数量的一半,也可以为该总数量的三分之二,也可以为该总数量的四分之一,等等,在此不作限定。
s106:将所述主节点切换为备节点。
本领域技术人员可以理解,在分布式系统中,主节点以及备节点都是对计算节点进行调度管理,主节点与备节点是可以互相切换的。
s107:在升级完成的备节点中确定新的主节点。
s108:将升级完成的计算节点连接至所述新的主节点。
在本发明的一个可选实施例中,如果应用了上述“切换调度策略”的实施方式,这里,将原主节点切换为备节点后,原主节点仍适用于该调度策略,也就是原主节点与其他节点的连接均断开。而新的主节点也适用于该调度策略,也就是建立新的主节点与计算节点的连接。这样,升级完成的计算节点便可以连接至该新的主节点。
s109:向所述系统中未升级的备节点和/或未升级的计算节点发送升级指令,以使所述未升级的计算节点和/或备节点进行升级操作。
作为一种实施方式,执行本方案的设备可以获得第三升级程序,将所述第三升级程序发送给未升级的备节点和/或未升级的计算节点,以使所述未升级的计算节点和/或备节点利用所述第三升级程序进行升级。
作为另一种实施方式,执行本方案的设备可以向待升级计算节点发送升级指令,以使所述未升级的计算节点和/或备节点根据所述升级指令获取第三升级程序,并利用所述第三升级程序进行升级。
在本实施例中,执行本方案的设备可以获得升级程序,将升级程序发送给节点,节点接收到升级程序后,利用升级程序进行升级;
或者,执行本方案的设备不需要获得升级程序,只是向节点发送升级指令,节点接收到该升级指令后,到预设地址下载升级程序,利用下载的升级程序进行升级;
或者,执行本方案的设备发送的升级指令中可以携带下载地址,节点接收到升级指令后,根据升级指令中携带的下载地址下载升级程序,利用下载的升级程序进行升级。或者,也可以采用其他方案,在此不一一列举。
作为一种实施方式,在检测到所述系统中全部节点升级完成后,可以通过切换调度策略,建立备节点与主节点的连接、以及备节点与计算节点的连接。
需要强调的是,这里的“建立连接”是指启动备节点,使备节点可以与其他节点相连接,并不特指建立备节点与某个节点的连接。
延续上述切换策略的例子,也就是将调度策略由“100(主):0(备)”切换为“50(主):50(备)”,这样,主、备节点都运行。
作为一种实施方式,可以在检测到所述系统中全部节点升级完成后,根据预设连接规则,将计算节点连接至对应的主节点或备节点。
该预设连接规则可以为预先存储的主节点与计算节点的对应关系、以及备节点与计算节点的对应关系,将计算节点连接至其对应的主节点或者备节点,主节点及备节点对自身连接的计算节点进行管理。或者,也可以为其他,比如,预设连接规则为“主节点对应10台计算节点,备节点对应5台计算节点”,这样,具体的对应关系可以随机分配。本实施例中,具体的预设连接规则不做限定。
或者,计算节点也可以自动连接至主节点或者备节点,这也是合理的。
根据前面描述,上述预设阈值不大于计算节点的总数量。
作为一种实施方式,预设阈值可以等于计算节点的总数量,也就是说,本实施方式中,所有计算节点都升级完成后,再执行s106-s109。
本实施方式中,所有计算节点都升级完成后,将主节点切换为备节点,在升级完成的备节点中确定新的主节点,将所有计算节点连接至该新的主节点,向系统中未升级的备节点(也就是原主节点)发送升级指令,原主节点升级完成后,系统中全部节点都升级完成。
举例来说,假设系统中有一台主节点a,一台备节点b,6台计算节点:计算节点c、计算节点d、计算节点e、计算节点f、计算节点g、计算节点h。假设主节点a与计算节点c、d、e相连接,并对其进行管理,备节点b与计算节点f、g、h相连接,并对其进行管理。
1、通过切换调度策略,断开备节点b与主节点a的连接、以及备节点b与计算节点f、g、h的连接。
2、将计算节点f、g、h连接至主节点a,主节点a对计算节点f、g、h进行管理。
3、向备节点b发送升级指令,备节点b进行升级操作。具体的升级过程前面内容已经描述过,这里不再赘述。
4、备节点b升级完成后,在上述6台计算节点中,确定待升级计算节点。为了简化描述,这个例子中仅包含一台备节点,如果系统中包含多台备节点,则可以在检测到全部备节点都升级完成后,确定待升级计算节点。
5、假设确定待升级计算节点的规则为“每次确定3台”,此次确定计算节点d、e、f为待升级计算节点。
6、向待升级计算节点d、e、f发送升级指令,计算节点d、e、f进行升级操作。
7、判断升级完成的计算节点的数量是否达到预设阈值。这里假设预设阈值等于计算节点的总数量6,这时,升级完成的计算节点的数量为3,未达到6,判断结果为否。
8、继续确定待升级计算节点。此时,已经存在升级完成的计算节点;在未升级的计算节点中,确定待升级计算节点。此次确定计算节点c、g、h为待升级计算节点。
9、向待升级计算节点c、g、h发送升级指令,计算节点c、g、h进行升级操作。
10、判断升级完成的计算节点的数量是否达到预设阈值。这时,升级完成的计算节点的数量为6,达到预设阈值,判断结果为是。
11、将主节点a切换为备节点。
12、将升级完成的备节点b确定为新的主节点。为了简化描述,这个例子中仅包含一台备节点,如果系统中包含多台备节点,则可以在多台升级完成的备节点中确定新的主节点。
13、将升级完成的6台计算节点连接至新的主节点,也就是原备节点b。
在本发明的一个可选实施例中,将原主节点a切换为备节点后,原主节点a仍适用于该调度策略,也就是原主节点a与备节点的连接、及原主节点a与计算节点的连接均断开。而新的主节点b也适用于该调度策略,也就是建立新的主节点b与计算节点的连接。这样,升级完成的计算节点便可以连接至新的主节点b。
14、向系统中未升级的备节点,也就是原主节点a发送升级指令,原主节点a进行升级操作。这样,系统中全部节点升级完成。
15、通过切换调度策略,建立主节点与备节点的连接、以及备节点与计算节点的连接。
16、根据预设连接规则,将计算节点连接至对应的主节点或备节点。
假设预设连接规则为“节点a对应计算节点c、d、e;节点b对应计算节点e、f、g”,则将计算节点c、d、e重新连接至节点a。
可选的,也可以将节点a重新切换为主节点,也可以不切换,具体不做限定。
应用上述实施方式,对计算节点分批次进行升级,也就是每次对部分计算节点进行升级,其它计算节点能够继续提供服务,这样,系统在升级的同时,能够继续提供服务。进一步的,待升级计算节点在升级前,可以将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中,这样,可以使得分布式系统不受升级影响,持续对外提供服务,提高分布式系统对外提供的服务质量。
作为另一种实施方式,预设阈值可以小于计算节点的总数量,也就是说,本实施方式中,部分计算节点升级完成后,便执行s106-s109。比如,预设阈值可以为计算节点总数量的一半,这种情况下,一半计算节点升级完成后,便执行s106-s109。
具体的,一半计算节点升级完成后,将主节点切换为备节点,在升级完成的备节点中确定新的主节点,将升级完成的一半计算节点连接至该新的主节点,向系统中未升级的备节点(也就是原主节点)、以及另一半未升级的计算节点发送升级指令,原主节点以及该另一半计算节点升级完成后,系统中全部节点都升级完成。
举例来说,假设系统中有一台主节点a,一台备节点b,6台计算节点:计算节点c、计算节点d、计算节点e、计算节点f、计算节点g、计算节点h。假设主节点a与计算节点c、d、e相连接,并对其进行管理,备节点b与计算节点f、g、h相连接,并对其进行管理。
1、通过切换调度策略,断开备节点b与主节点a的连接、以及备节点b与计算节点f、g、h的连接。
2、将计算节点f、g、h连接至主节点a,主节点a对计算节点f、g、h进行管理。
3、向备节点b发送升级指令,备节点b进行升级操作。具体的升级过程前面内容已经描述过,这里不再赘述。
4、备节点b升级完成后,在上述6台计算节点中,确定待升级计算节点。为了简化描述,这个例子中仅包含一台备节点,如果系统中包含多台备节点,则可以在检测到全部备节点都升级完成后,确定待升级计算节点。
5、假设确定待升级计算节点的规则为“每次确定3台”,此次确定计算节点d、e、f为待升级计算节点。
6、向待升级计算节点d、e、f发送升级指令,计算节点d、e、f进行升级操作。
7、判断升级完成的计算节点的数量是否达到预设阈值。这里预设阈值为计算节点总数量的一半,也就是3,这时,升级完成的计算节点的数量为3,判断结果为是。
8、将主节点a切换为备节点。
9、将升级完成的备节点b确定为新的主节点。为了简化描述,这个例子中仅包含一台备节点,如果系统中包含多台备节点,则可以在多台升级完成的备节点中确定新的主节点。
10、将升级完成的3台计算节点d、e、f连接至新的主节点,也就是原备节点b。
在本发明的一个可选实施例中,将原主节点a切换为备节点后,原主节点a仍适用于该调度策略,也就是原主节点a与备节点的连接、及原主节点a与计算节点的连接均断开。而新的主节点b也适用于该调度策略,也就是建立新的主节点b与计算节点的连接。这样,升级完成的计算节点d、e、f便可以连接至新的主节点b。
11、向系统中未升级的备节点(也就是原主节点a)、以及未升级的3台计算节点c、g、h发送升级指令,原主节点a以及计算节点c、g、h进行升级操作。这样,系统中全部节点升级完成。
12、通过切换调度策略,建立主节点与备节点的连接、以及备节点与计算节点的连接。
13、根据预设连接规则,将计算节点连接至对应的主节点或备节点。
假设预设连接规则为“节点a对应计算节点c、d、e;节点b对应计算节点e、f、g”,则将计算节点c、d、e连接至节点a,将计算节点e、f、g连接至节点b。
可选的,也可以将节点a重新切换为主节点,也可以不切换,具体不做限定。
在本发明的一个可选实施例中,“预设阈值为计算节点总数量的一半”仅为本实施例提供的一种具体情况,并不对“预设阈值”构成限定。
在上述升级过程中,升级完成的计算节点d、e、f与升级完成的节点b相连接,未升级的计算节点c、g、h与未升级的节点a相连接;也就是说,不存在升级完成的节点与未升级的节点的连接;因此,本方案还可以解决系统升级新旧版本不兼容的问题。
可以理解,升级完成的计算节点与升级完成的主/备节点是兼容的,未升级的计算节点与未升级的主/备节点是兼容的;而上述升级过程中,升级完成的计算节点d、e、f与升级完成的节点b相连接,未升级的计算节点c、g、h与未升级的节点a相连接,不存在新旧版本不兼容的问题。
应用上述实施方式,第一方面,对计算节点分批次进行升级,也就是每次对部分计算节点进行升级,其它计算节点能够继续提供服务,这样,系统在升级的同时,能够继续提供服务。第二方面,待升级计算节点在升级前,可以将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中,这样,可以使得分布式系统不受升级影响,持续对外提供服务,提高分布式系统对外提供的服务质量。第三方面,解决了升级前的系统与升级后的系统不兼容的问题。
与上述方法实施例相对应,本发明实施例还提供一种分布式系统。
图2为本发明实施例提供的一种分布式系统的结构示意图,包括:升级管理设备、主节点、备节点及计算节点。在本实施例中,分布式系统中有多台计算节点(计算节点1、计算节点2……计算节点n);备节点可以有多台,也可以仅有一台,主节点可以有多台,也可以仅有一台,具体不做限定。
在图2所示实施例中,升级管理设备,用于向备节点发送升级指令;在检测到备节点升级完成后,确定待升级计算节点;其中,所确定的待升级计算节点数量小于计算节点的总数量;向所确定的待升级计算节点发送升级指令;判断升级完成的计算节点的数量是否达到预设阈值,所述预设阈值不大于计算节点的总数量;如果否,返回执行所述确定待升级计算节点的步骤;如果是,将所述主节点切换为备节点;在升级完成的备节点中确定新的主节点;将升级完成的计算节点连接至所述新的主节点;向所述系统中未升级的备节点和/或未升级的计算节点发送升级指令;
备节点,用于在接收到所述升级管理设备发送的升级指令后,进行升级操作;
主节点,用于在接收到所述升级管理设备发送的升级指令后,进行升级操作;
计算节点,用于在接收到所述升级管理设备发送的升级指令后,进行升级操作。
作为一种实施方式,升级管理设备,还可以用于在向备节点发送升级指令之前、以及检测到所述系统中全部节点升级完成后,切换调度策略;
主节点,还可以用于根据当前调度策略,调整自身与所述系统中备节点及计算节点的连接状态;
备节点,还用于根据当前调度策略,调整自身与所述系统中主节点及计算节点的连接状态。
举例来说,可以通过权重分配方式进行调度,比如,调度策略为“100(主):0(备)”时,表示只启动主节点,不启动备节点;调度策略为“50(主):50(备)”时,表示主、备节点都启动;调度策略为“0(主):100(备)”时,表示只启动备节点,不启动主节点……具体的调度策略可以为其他,具体不做限定。
正常工作状态下,调度策略可以为“50(主):50(备)”,当系统需要升级时,升级管理设备可以将调度策略切换为“100(主):0(备)”,这样,就相当于停止了备节点中服务的运行,具体来说,就是断开备节点与主节点的连接、以及备节点与计算节点的连接。
在检测到所述系统中全部节点升级完成后,可以将调度策略由“100(主):0(备)”切换为“50(主):50(备)”,这样,主、备节点都运行。
或者,升级管理设备可以仅切换调度策略,断开连接/建立连接的操作由主/备节点执行。比如,升级管理设备将调度策略切换为“100(主):0(备)”后,备节点自动断开与主节点及计算节点的连接;升级管理设备将调度策略切换为“50(主):50(备)”后,备节点自动建立与主节点及计算节点的连接。
作为一种实施方式,升级管理设备,还可以用于在备节点与计算节点的连接断开之后,将断开连接的计算节点连接至主节点。
作为一种实施方式,升级管理设备,还可以用于在检测到所述系统中全部节点升级完成后,根据预设连接规则,将计算节点连接至对应的主节点或备节点。
作为一种实施方式,升级管理设备,还可以用于获得第一升级程序,将所述第一升级程序发送给备节点;获得第二升级程序,将所述第二升级程序发送给待升级计算节点,以使待升级计算节点利用所述第二升级程序进行升级;获得第三升级程序,将所述第三升级程序发送给未升级的备节点和/或未升级的计算节点;
所述备节点,还用于接收所述升级管理设备发送的第一升级程序,并利用所述第一升级程序进行升级;或者,根据所述升级管理设备发送的升级指令获取第一升级程序,并利用所述第一升级程序进行升级;
所述计算节点,还用于接收所述升级管理设备发送的第二升级程序,并利用所述第二升级程序进行升级;或者,根据所述升级管理设备发送的升级指令获取第二升级程序,并利用所述第二升级程序进行升级;
所述主节点,还用于接收所述升级管理设备发送的第三升级程序,并利用所述第三升级程序进行升级;或者,根据所述升级管理设备发送的升级指令获取第三升级程序,并利用所述第三升级程序进行升级。
作为一种实施方式,所述升级管理设备,还用于向所确定的待升级计算节点发送切换指令;
所述计算节点,还用于在接收到所述切换指令后,将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中。
或者,作为另一种实施方式,所述计算节点,还可以用于在接收到所述升级管理设备发送的升级指令后,将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中。
所述计算节点,还可以用于在与备节点断开连接后,连接至主节点;
也就是说,节点之间断开连接、建立连接的操作可以由升级管理设备执行,也可以由节点自动执行。类似的,计算节点自身运行的服务/任务切换至其他计算节点的操作可以由升级管理设备执行,也可以由计算节点自动执行。
应用本发明图2所示实施例,对计算节点分批次进行升级,也就是每次对部分计算节点进行升级,其它计算节点能够继续提供服务,这样,系统在升级的同时,能够继续提供服务。进一步的,待升级计算节点在升级前,可以将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中,这样,可以使得分布式系统不受升级影响,持续对外提供服务,提高分布式系统对外提供的服务质量。
与上述方法实施例相对应,本发明实施例还提供一种升级管理设备。
图3为本发明实施例提供的一种升级管理设备的结构示意图,包括:
第一发送模块301,用于向备节点发送升级指令,以使备节点进行升级操作;
检测模块302,用于检测备节点是否升级完成,如果是,触发第一确定模块303;
第一确定模块303,用于确定待升级计算节点;其中,所确定的待升级计算节点数量小于计算节点的总数量;
第二发送模块304,用于向所确定的待升级计算节点发送升级指令,以使待升级计算节点进行升级操作;
判断模块305,用于判断升级完成的计算节点的数量是否达到预设阈值,所述预设阈值不大于计算节点的总数量;如果否,触发所述第一确定模块303;如果是,触发切换模块306;
切换模块306,用于将所述主节点切换为备节点;
第二确定模块307,用于在升级完成的备节点中确定新的主节点;
第一连接模块308,用于将升级完成的计算节点连接至所述新的主节点;
第三发送模块309,用于向所述系统中未升级的备节点和/或未升级的计算节点发送升级指令,以使所述未升级的计算节点和/或备节点进行升级操作。
作为一种实施方式,所述设备还可以包括:断开连接模块和建立连接模块(图中未示出),其中,
断开连接模块,用于在所述向备节点发送升级指令之前,通过切换调度策略,断开备节点与主节点的连接、以及备节点与计算节点的连接;
建立连接模块,用于在检测到所述系统中全部节点升级完成后,通过切换调度策略,建立备节点与主节点的连接、以及备节点与计算节点的连接。
作为一种实施方式,所述设备还可以包括:
第二连接模块(图中未示出),用于在断开备节点与计算节点的连接之后,将断开连接的计算节点连接至主节点。
作为一种实施方式,所述设备还可以包括:
第三连接模块(图中未示出),用于在检测到所述系统中全部节点升级完成后,根据预设连接规则,将计算节点连接至对应的主节点或备节点。
作为一种实施方式,第一发送模块301,具体可以用于:
获得第一升级程序,将所述第一升级程序发送给备节点,以使备节点利用所述第一升级程序进行升级;
或者,向备节点发送升级指令,以使备节点根据所述升级指令获取第一升级程序,并利用所述第一升级程序进行升级;
第二发送模块304,具体可以用于:
获得第二升级程序,将所述第二升级程序发送给待升级计算节点,以使待升级计算节点利用所述第二升级程序进行升级;
或者,向待升级计算节点发送升级指令,以使待升级计算节点根据所述升级指令获取第二升级程序,并利用所述第二升级程序进行升级;
第三发送模块309,具体可以用于:
获得第三升级程序,将所述第三升级程序发送给未升级的备节点和/或未升级的计算节点,以使所述未升级的计算节点和/或备节点利用所述第三升级程序进行升级;
或者,向待升级计算节点发送升级指令,以使所述未升级的计算节点和/或备节点根据所述升级指令获取第三升级程序,并利用所述第三升级程序进行升级。
作为一种实施方式,所述设备还可以包括:
第四发送模块(图中未示出),用于向所确定的待升级计算节点发送切换指令,指示待升级计算节点将自身运行的服务或者任务切换至升级完成的计算节点中。
应用本发明图3所示实施例,对计算节点分批次进行升级,也就是每次对部分计算节点进行升级,其它计算节点能够继续提供服务,这样,系统在升级的同时,能够继续提供服务。进一步的,待升级计算节点在升级前,可以将自身运行的服务或者任务切换至其他已经升级完成、或者此次不进行升级的计算节点中,这样,可以使得分布式系统不受升级影响,持续对外提供服务,提高分布式系统对外提供的服务质量。
在本发明的一个可选实施例中,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。