本发明涉及分布式集群技术领域,特别是涉及一种分布式集群升级方法及分布式集群。
背景技术:
分布式集群通常包括多台通信连接的节点设备,在对分布式集群进行升级时,通常需要对系统中的各节点设备依次进行升级。目前,分布式集群中节点设备越来越多,功能也越来越复杂,使得分布式集群的升级操作耗费的时间越来越长。
一般来说,分布式集群在升级期间不能提供服务,也就是说,分布式集群的升级操作过长会影响系统的正常使用。
技术实现要素:
本发明实施例的目的在于提供一种分布式集群升级方法及分布式集群,在升级的同时,能够继续提供服务。
本发明实施例提供一种分布式集群升级方法,应用于升级管理设备,所述分布式集群中包括多台节点设备;所述方法包括:
在所述多台节点设备中确定当前升级节点设备;
将所述当前升级节点设备的读写操作切换至所述分布式集群中的非当前升级节点设备中;
对当前升级节点设备中的第一类软件层进行升级;其中,所述第一类软件层为:与所述分布式集群的内部通信相关的软件层;
对当前升级节点设备中的第二类软件层进行升级;其中,所述第二类软件层为:与所述分布式集群的内部与外部通信相关的软件层。
作为一种实施方式,所述分布式集群中包括多个数据中心,每个数据中心包括至少一台节点设备;
所述在所述多台节点设备中确定当前升级节点设备,可以包括:
在所述多个数据中心中确定当前升级数据中心;
将所述当前升级数据中心中各台节点设备作为当前升级节点设备;
所述将所述当前升级节点设备的读写操作切换至所述分布式集群中的非当前升级节点设备中,可以包括:
将当前升级数据中心中各台节点设备的读写操作切换至非当前升级数据中心的节点设备中。
作为一种实施方式,在所述对当前升级节点设备中的第一类软件层进行升级之前,还可以包括:
对当前升级节点设备中的操作系统进行升级;
对当前升级节点设备中安装的、与所述分布式集群的通信无关的软件进行升级。
作为一种实施方式,在所述将所述当前升级节点设备的读写操作切换至所述分布式集群中的非当前升级节点设备中之后,还可以包括:
启动升级服务程序,通过所述升级服务程序,生成针对当前升级节点设备的升级计划;
所述对当前升级数节点设备中的第一类软件层进行升级,包括:
根据所述升级计划,对当前升级节点设备中的第一类软件层进行升级;
所述对当前节点设备中的第二类软件层进行升级,可以包括:
根据所述升级计划,对当前升级节点设备中的第二类软件层进行升级。
作为一种实施方式,所述方法还可以包括:
在对当前升级节点设备升级完成后的预设时间段后,将所述当前升级节点设备中升级前的版本进行删除。
本发明实施例还提供一种分布式集群升级方法,应用于分布式集群中的当前升级节点设备,所述当前升级节点设备包括第一类软件层和第二类软件层,所述第一类软件层为:与所述分布式集群的内部通信相关的软件层,所述第二类软件层为:与所述分布式集群的内部与外部通信相关的软件层;
所述方法包括:
将所述当前升级节点设备的读写操作切换至所述分布式集群中的非当前升级节点设备中,所述非当前升级节点设备为:当前时刻下未进行升级的节点设备;
对所述第一类软件层进行升级;
对所述第二类软件层进行升级。
作为一种实施方式,所述分布式集群中包括至少一个数据中心,每个数据中心包括至少一台节点设备;所述当前升级节点设备属于当前升级数据中心;
所述将所述当前升级节点设备的读写操作切换至所述分布式集群中的非当前升级节点设备中,包括:
将所述当前升级节点设备的读写操作切换至所述分布式集群中的非当前升级数据中心的节点设备中,所述非当前升级数据中心为:当前时刻下未进行升级的数据中心;
或者,将所述当前升级节点设备的读写操作切换至所述当前升级数据中心中的已升级节点设备。
作为一种实施方式,在所述将所述当前升级节点设备的读写操作切换至所述当前升级数据中心中的已升级节点设备之前,还可以包括:
判断所述当前升级数据中心中是否存在已升级节点设备;
如果不存在,将所述读写操作对应的数据写入缓存文件;并且在当前升级数据中心中存在已升级节点设备之后,通过所述已升级节点设备,对所述读写操作对应的数据进行处理;
如果存在,执行所述将所述当前升级节点设备的读写操作切换至所述当前升级数据中心中的已升级节点设备的步骤。
作为一种实施方式,在所述对所述第二类软件层进行升级之后,还包括:
将属于所述当前升级节点设备的读写操作切换回所述当前升级节点设备,并启动版本调用程序;
若接收到的读写操作指令针对升级前的版本,则通过所述版本调用程序,调用所述升级前的版本对所述读写操作指令进行处理;
若接收到的读写操作指令针对升级后的版本,则通过所述版本调用程序,调用所述升级后的版本对所述读写操作指令进行处理。
作为一种实施方式,所述对所述第一类软件层进行升级,包括:
获取所述第一类软件层对应的新类的状态;其中,类为对象的模板,新类为升级后的类;
将所述第一类软件层中的类状态转换为所述新类的状态;
获取所述第一类软件层对应的新对象;其中,所述对象为类的实例,新对象为升级后的对象;
将所述新对象替换第一类软件层中的对象。
本发明实施例还提供一种分布式集群,包括升级管理设备和多台节点设备,
所述升级管理设备,用于在所述多台节点设备中确定当前升级节点设备;向所述当前升级节点设备发送第一切换指令、第一软件层升级指令和第二软件层升级指令;
所述节点设备,用于在接收到所述第一切换指令后,将自身的读写操作切换至所述分布式集群中的非当前升级节点设备中;在接收到所述第一软件层升级指令后,对自身的第一类软件层进行升级;其中,所述第一类软件层为:与所述分布式集群的内部通信相关的软件层;在接收到所述第二软件层升级指令后,对自身的第二类软件层进行升级;其中,所述第二类软件层为:与所述分布式集群的内部与外部通信相关的软件层。
作为一种实施方式,所述分布式集群中包括多个数据中心,每个数据中心包括至少一台节点设备;
所述升级管理设备,还用于在所述多个数据中心中确定当前升级数据中心;将所述当前升级数据中心中各台节点设备作为当前升级节点设备;
所述节点设备,还用于在接收到所述第一切换指令后,将自身的读写操作切换至非当前升级数据中心的节点设备中。
作为一种实施方式,所述升级管理设备,还用于向升级完成的节点设备发送第二切换指令;
所述节点设备,还用于在接收到所述第二切换指令后,将属于自身的读写操作切换回自身。
作为一种实施方式,所述节点设备,还用于在将属于自身的读写操作切换回自身之后,启动版本调用程序;若接收到的读写操作指令针对升级前的版本,则通过所述版本调用程序,调用所述升级前的版本对所述读写操作指令进行处理;若接收到的读写操作指令针对升级后的版本,则通过所述版本调用程序,调用所述升级后的版本对所述读写操作指令进行处理。
应用本发明实施例,升级管理设备在分布式集群中确定当前升级节点设备;将当前升级节点设备的读写操作切换至非当前升级节点设备中;对当前升级节点设备中的第一类软件层进行升级;第一类软件层为:与分布式集群的内部通信相关的软件层;对当前升级节点设备中的第二类软件层进行升级;第二类软件层为:与分布式集群的内部与外部通信相关的软件层;可见,第一方面,即使节点设备在升级过程中接收到读写操作指令,该读写操作指令也会切换至其他非当前升级节点设备中,由其他非当前升级节点设备继续提供服务,因此,本方案在升级的同时能够继续提供服务;第二方面,本方案对节点设备进行分层升级,提供了一种新的升级方式。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用于升级管理设备的分布式集群升级方法的流程示意图;
图1a为本发明实施例提供的一种节点设备示意图;
图1b为本发明实施例提供的一种节点设备中的分层示意图;
图1c为本发明实施例提供的一种节点设备中各层升级示意图;
图2为本发明实施例提供的一种应用于节点设备的分布式集群升级方法的流程示意图;
图3为本发明实施例提供的一种分布式集群的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决上述技术问题,本发明实施例提供了一种应用于升级管理设备的分布式集群升级方法、一种应用于节点设备的分布式集群升级方法、以及一种分布式集群。
下面首先对应用于升级管理设备的分布式集群升级方法进行详细介绍。该分布式集群中包括多台节点设备;该升级管理设备可以为分布式集群中的设备,也可以为分布式集群之外的设备。
图1为本发明实施例提供的一种应用于升级管理设备的分布式集群升级方法的流程示意图,包括:
s101:在分布式集群的多台节点设备中确定当前升级节点设备。
一种实施方式中,升级管理设备可以按照预设升级顺序,依次对各台节点设备进行升级,所要升级的节点设备即为当前升级节点设备。升级管理设备可以同时对一台或多台节点设备进行升级,也就是可以确定一台或多台当前升级节点设备。
另一种实施方式中,可以预先将分布式集群中的节点设备划分为不同的数据中心,不同的数据中心可以处理不同类型的数据,或者,不同的数据中心可以处理来自不同区域的数据,等等,数据中心的划分方式具体不做限定。
这种实施方式中,对分布式集群进行升级时,可以先确定各数据中心之间的升级顺序,按照该顺序,在该多个数据中心中确定当前升级数据中心。当前升级数据中心可以有一个或多个,或者说,可以同时对一个或多个数据中心进行升级,具体升级顺序不做限定。当前升级数据中心中的节点设备均为当前升级节点设备。
s102:将当前升级节点设备的读写操作切换至分布式集群中的非当前升级节点设备中。
上述一种实施方式中,依次对各台节点设备进行升级,未进行升级的节点设备、或者已经升级完成的节点设备都可以称为非当前升级节点设备。
上述另一种实施方式中,依次对各个数据中心进行升级,未进行升级的节点设备、或者已经升级完成的数据中心中的节点设备都可以称为非当前升级数据中心,非当前升级数据中心中的节点设备都为非当前升级节点设备。
这种实施方式中,s102可以为:将当前升级数据中心中各台节点设备的读写操作切换至非当前升级数据中心的节点设备中。
升级管理设备可以对各台节点设备进行控制,比如,升级管理设备确定出当前升级数据中心后,升级管理设备可以向当前升级数据中心中的各台节点设备发送第一切换指令,使得该各台节点设备将自身的读写操作切换至非当前升级数据中心的节点设备中。
举例来说,可以在升级管理设备及节点设备中安装升级客户端,通过该升级客户端实现升级管理设备对节点设备的控制。如图1a所示,节点设备中安装客户端,由客户端控制进行升级。
s103:对当前升级节点设备中的第一类软件层进行升级;其中,第一类软件层为:与分布式集群的内部通信相关的软件层。
s104:对当前升级数据中心中的每台节点设备中的第二类软件层进行升级;其中,第二类软件层为:与分布式集群的内部与外部通信相关的软件层。
本实施例中,对节点设备进行分层升级,先对第一类软件层进行升级,再对第二类软件层进行升级;或者,也可以先对第二类软件层进行升级,再对第一类软件层进行升级。
第一类软件层与分布式集群的内部通信相关,具体可以包括:单数据中心层、跨数据中心层、持久化层。单数据中心层是指:在一个数据中心中进行的数据交互所依赖的软件层;跨数据中心层是指:在多个数据中心之间进行的数据交互所依赖的软件层;持久化层是指:数据库的逻辑结构所在的软件层。
举例来说,一个分布式集群中可以存在两个数据库,一者为单数据中心数据库,另一者为跨数据中心数据库,可以将一些各数据中心之间通用的数据保存在跨数据中心数据库中,这样,该通用的数据仅保存一份,占用较少的存储资源。节点设备中存在持久化层,该持久化层包括数据库的逻辑结构,通过该持久化层,可以实现节点设备调用数据库。
第二类软件层与分布式集群的内部与外部通信相关,具体可以包括:平台服务层和应用层。平台服务层是指:调用远程设备所依赖的软件层,远程设备即为分布式集群之外的设备,平台服务层中可以通过rpc(remoteprocedurecallprotocol,远程过程调用协议)实现调用远程设备;应用层是指与用户交互所依赖的软件层。
一种实施方式中,在s103之前可以先执行如下步骤:对当前升级节点设备中的操作系统进行升级;对当前升级节点设备中安装的、与所述分布式集群的通信无关的软件进行升级。
当前升级节点设备中安装的、与分布式集群的通信无关的软件可以称为机器节点层,比如办公软件等单机运行的软件,等等。举例来说,可以采用软件包管理器(redhatpackagemanager,rpm)的方式,对机器节点层进行升级。
另一些实施方式中,也可以不对操作系统及机器节点层进行升级;或者说,并不是每次升级都需要对操作系统、及机器节点层进行升级。
如图1b所示,可以将节点设备切分为多个软件层:操作系统层、机器节点层、单数据中心集群层、跨数据中心集群层、持久化层、平台服务层、应用层,可以按照由下往上的顺序,依次对节点设备的各个软件层进行升级。
举例来说,假设分布式集群中包括15台节点设备:节点设备1-15,将该分布式集群划分为三个数据中心:数据中心1、数据中心2和数据中心3,其中,数据中心1中包括5台节点设备:节点设备1-5,数据中心2中包括5台节点设备:节点设备6-10,数据中心3中包括5台节点设备:节点设备11-15。
以节点设备1为例来说,节点设备1可以通过自身的单数据中心层,与数据中心1中的其他4台设备(节点设备2-5)进行数据交互。节点设备1可以通过自身的跨数据中心层,与数据中心2中的5台节点设备、以及数据中心3中的5台节点设备进行数据交互。节点设备1可以通过自身的持久化层,调用分布式集群中的数据库。节点设备1可以通过自身的平台服务层,调用分布式集群之外的远程设备。节点设备1可以通过自身的应用层与用户进行交互。
图1a中,由客户端控制节点设备各个软件层进行升级,图1b中的各个软件层相当于被屏蔽,各软件层感知不到升级过程。
作为一种实施方式,在s102之后,还可以启动升级服务程序,通过所述升级服务程序,生成针对当前升级节点设备的升级计划;这样,s103为:根据该升级计划,对当前升级节点设备中的第一类软件层进行升级;s104为:根据该升级计划,对当前升级节点设备中的第二类软件层进行升级。
如上所述,可以在升级管理设备及节点设备中安装升级客户端,该客户端中可以设置有升级服务程序,由该升级服务程序引导完成对节点设备的升级。升级服务程序可以根据分布式集群的拓扑结构,生成每台当前升级节点设备的升级计划。
比如,分布式集群的拓扑结构信息可以包括节点设备列表、节点设备所提供的服务列表等等,具体不做限定。升级程序可以根据该拓扑结构信息,了解节点设备之间的数据交互、以及节点设备与分布式集群外部设备之间的数据交互,进而生成针对当前升级节点设备的升级计划。
作为一种实施方式,在对当前升级节点设备升级完成后的预设时间段后,将所述当前升级节点设备中升级前的版本进行删除。
也就是说,在对节点设备升级完成后,并不立即将该节点设备中的旧版本删除,而是等待一段时间后,再将旧版本删除。这样,如果新版本运行出现错误,仍可以运行旧版本,节点设备仍可以提供服务。该预设时间段可以根据实际情况进行设定,比如,一天、一周等等,具体不做限定。
本实施例中对节点设备进行分层升级,每一类软件层可以对应一个版本。比如,图1b中每个软件层可以对应一个版本。而且每个软件层升级完成后,都同时存在旧版本和新版本,则升级过程可以如图1c所示,图1c中版本1为旧版本,版本2为新版本:升级之前,三个软件层都为版本1;对软件层1进行升级后,软件层1中同时存在版本1和版本2;对软件层2进行升级2,软件层2中同时存在版本1和版本2,等等,不再一一列举。
节点设备升级完成后,升级管理设备将属于该节点设备的读写操作切换回该节点设备。另外,在分布式集群中各台节点设备都升级完成后,升级管理设备可以针对分布式集群进行一些升级后的处理操作,比如,删除一些升级过程中产生的垃圾数据,等等,具体不做限定。
应用本发明图1所示实施例,第一方面,即使节点设备在升级过程中接收到读写操作指令,该读写操作指令也会切换至其他非当前升级节点设备中,由其他非当前升级节点设备继续提供服务,因此,本方案在升级的同时能够继续提供服务;第二方面,本方案对节点设备进行分层升级,提供了一种新的升级方式。
下面对应用于节点设备的分布式集群升级方法进行介绍,如上所述,节点设备中包括第一类软件层和第二类软件层,所述第一类软件层为:与所述分布式集群的内部通信相关的软件层,所述第二类软件层为:与所述分布式集群的内部与外部通信相关的软件层。为了区分描述,图2实施例中,将执行主体称为当前升级节点设备。
图2为本发明实施例提供的一种应用于节点设备的分布式集群升级方法的流程示意图,包括:
s201:将当前升级节点设备的读写操作切换至分布式集群中的非当前升级节点设备中。
其中,所述非当前升级节点设备为:当前时刻下未进行升级的节点设备,比如,非当前升级节点设备可以为已经升级完成的节点设备,也可以为还未进行升级的节点设备。
举例来说,当前升级节点设备可以在接收到升级管理设备的升级指令后执行s201,换句话说,节点设备可以在接收到升级管理设备的升级指令后,将自身确定为当前升级节点设备,并执行图2所示实施例。
节点设备的升级过程可以由升级管理设备控制完成。比如,可以在升级管理设备及节点设备中安装升级客户端,通过该升级客户端实现升级管理设备对节点设备的控制。如图1a所示,节点设备中安装客户端,由客户端控制进行升级。
作为一种实施方式,分布式集群中包括多个数据中心,每个数据中心包括至少一台节点设备,升级管理设备同时对一个或多个数据中心进行升级;这种实施方式中,可以采用第一种切换方案:将当前升级节点设备的读写操作切换至分布式集群中的非当前升级数据中心的节点设备中,所述非当前升级数据中心为:当前时刻下未进行升级的数据中心。具体的,非当前升级数据中心可以为已经升级完成的数据中心,也可以为还未进行升级的数据中心。
或者,这种实施方式中,也可以采用第二种切换方案:当前升级节点设备也可以将自身的读写操作切换至当前升级数据中心中的已升级节点设备,当前升级数据中心为当前升级节点设备所属的数据中心。
在采用第二种切换方案的情况下:当前升级节点设备将自身的读写操作切换至当前升级数据中心中的已升级节点设备,可以先判断当前升级数据中心中是否存在已升级节点设备;如果不存在,将该读写操作对应的数据写入缓存文件;并且在当前升级数据中心中存在已升级节点设备之后,通过该已升级节点设备,对该读写操作对应的数据进行处理;如果存在,再将当前升级节点设备的读写操作切换至当前升级数据中心中的已升级节点设备。
具体的,缓存文件可以为日志文件(log),也可以为其他,具体不做限定。
作为另一种实施方式,也可以不对分布式集群进行数据中心的划分,或者说,分布式集群中仅包括一个数据中心,升级管理设备同时对一台或多台节点设备者升级;这种情况下,可以将当前升级节点设备的读写操作切换至非当前升级节点设备。
s202:对该第一类软件层进行升级。
s203:对该第二类软件层进行升级。
本实施例中,对节点设备进行分层升级,先对第一类软件层进行升级,再对第二类软件层进行升级;或者,也可以先对第二类软件层进行升级,再对第一类软件层进行升级。
第一类软件层与分布式集群的内部通信相关,具体可以包括:单数据中心层、跨数据中心层、持久化层。单数据中心层是指:在一个数据中心中进行的数据交互所依赖的软件层;跨数据中心层是指:在多个数据中心之间进行的数据交互所依赖的软件层;持久化层是指:数据库的逻辑结构所在的软件层。
举例来说,一个分布式集群中可以存在两个数据库,一者为单数据中心数据库,另一者为跨数据中心数据库,可以将一些各数据中心之间通用的数据保存在跨数据中心数据库中,这样,该通用的数据仅保存一份,占用较少的存储资源。节点设备中存在持久化层,该持久化层包括数据库的逻辑结构(schema),通过该持久化层,可以实现节点设备调用数据库。
第二类软件层与分布式集群的内部与外部通信相关,具体可以包括:平台服务层和应用层。平台服务层是指:调用远程设备所依赖的软件层,远程设备即为分布式集群之外的设备;应用层是指与用户交互所依赖的软件层。
作为一种实施方式,可以采用如下步骤,对第一类软件层或者第二类软件层进行升级:
获取软件层对应的新类的状态;其中,类为对象的模板,新类为升级后的类;
将软件层中的类状态转换为所述新类的状态;
获取软件层对应的新对象;其中,所述对象为类的实例,新对象为升级后的对象;
将所述新对象替换软件层中的对象。
上述软件层可以为第一类软件层,也可以为第二类软件层。每一类软件层中均可以包括类(class)和对象,类为对象的模板,对象为类的实例;为了区分描述,将升级前的类称为旧类,将升级后的类称为新类,将升级前的对象称为旧对象,将升级后的对象称为新对象。
将新类的状态替换旧类的状态,可以理解为对软件层中数据进行格式转换,以适应新的类。将新对象替换旧对象可以通过节点恢复实现。
一种实施方式中,在s202之前可以先执行如下步骤:对当前升级节点设备中的操作系统进行升级;对当前升级节点设备中安装的、与所述分布式集群的通信无关的软件进行升级。
当前升级节点设备中安装的、与分布式集群的通信无关的软件可以称为机器节点层,比如办公软件等单机运行的软件,等等。举例来说,可以采用软件包管理器(redhatpackagemanager,rpm)的方式,对机器节点层进行升级。
另一些实施方式中,也可以不对操作系统及机器节点层进行升级;或者说,并不是每次升级都需要对操作系统、及机器节点层进行升级。
如图1b所示,可以将节点设备切分为多个软件层:操作系统层、机器节点层、单数据中心集群层、跨数据中心集群层、持久化层、平台服务层、应用层,可以按照由下往上的顺序,依次对节点设备的各个软件层进行升级。
图1a中,由客户端控制节点设备各个软件层进行升级,图1b中的各个软件层相当于被屏蔽,各软件层感知不到升级过程。
如上所述,升级管理设备控制节点设备进行升级,具体的,升级管理设备可以启动升级服务程序,通过该升级服务程序,生成针对当前升级节点设备的升级计划,并将该升级计划下发至当前升级节点设备,使得当前升级节点设备升级计划进行升级。
当前升级节点设备升级完成后,升级管理设备将属于该当前升级节点设备的读写操作切换回该当前升级节点设备。
作为一种实施方式,在对节点设备升级完成后,并不立即将该节点设备中的旧版本删除,而是等待一段时间后,再将旧版本删除。这样,如果新版本运行出现错误,仍可以运行旧版本,节点设备仍可以提供服务。该预设时间段可以根据实际情况进行设定,比如,一天、一周等等,具体不做限定。
在升级完成并且未删除旧版本的期间内,节点设备中可以启动版本调用程序;如果在此期间,节点设备接收到的读写操作指令针对升级前的版本,则通过所述版本调用程序,调用所述升级前的版本对所述读写操作指令进行处理;如果在此期间,节点设备接收到的读写操作指令针对升级后的版本,则通过所述版本调用程序,调用所述升级后的版本对所述读写操作指令进行处理。
在将旧版本删除之后,可以将该版本调用程序删除。
本实施例中对节点设备进行分层升级,每一类软件层可以对应一个版本。比如,图1b中每个软件层可以对应一个版本。而且每个软件层升级完成后,都同时存在旧版本和新版本,则升级过程可以如图1c所示,图1c中版本1为旧版本,版本2为新版本:升级之前,三个软件层都为版本1;对软件层1进行升级后,软件层1中同时存在版本1和版本2;对软件层2进行升级2,软件层2中同时存在版本1和版本2,等等,不再一一列举。
图1a中,节点设备中安装有客户端,版本调用程序可以设置于客户端中,具体的,客户端接收到读写操作指令后,确定该指令对应的版本号,调用该版本号对应的软件层中的对象执行读写操作。
应用本发明图2所示实施例,第一方面,即使节点设备在升级过程中接收到读写操作指令,该读写操作指令也会切换至其他非当前升级节点设备中,由其他非当前升级节点设备继续提供服务,因此,本方案在升级的同时能够继续提供服务;第二方面,本方案对节点设备进行分层升级,提供了一种新的升级方式。
本发明实施例还提供了一种分布式集群,如图3所示,包括升级管理设备和多台节点设备(节点设备1、节点设备2……节点设备n),
所述升级管理设备,用于在所述多台节点设备中确定当前升级节点设备;向所述当前升级节点设备发送第一切换指令、第一软件层升级指令和第二软件层升级指令;
所述节点设备,用于在接收到所述第一切换指令后,将自身的读写操作切换至所述分布式集群中的非当前升级节点设备中;在接收到所述第一软件层升级指令后,对自身的第一类软件层进行升级;其中,所述第一类软件层为:与所述分布式集群的内部通信相关的软件层;在接收到所述第二软件层升级指令后,对自身的第二类软件层进行升级;其中,所述第二类软件层为:与所述分布式集群的内部与外部通信相关的软件层。
作为一种实施方式,所述分布式集群中包括多个数据中心,每个数据中心包括至少一台节点设备;
所述升级管理设备,还用于在所述多个数据中心中确定当前升级数据中心;将所述当前升级数据中心中各台节点设备作为当前升级节点设备;
所述节点设备,还用于在接收到所述第一切换指令后,将自身的读写操作切换至非当前升级数据中心的节点设备中。
作为一种实施方式,所述升级管理设备,还用于向升级完成的节点设备发送第二切换指令;
所述节点设备,还用于在接收到所述第二切换指令后,将属于自身的读写操作切换回自身。
作为一种实施方式,所述节点设备,还用于在将属于自身的读写操作切换回自身之后,启动版本调用程序;若接收到的读写操作指令针对升级前的版本,则通过所述版本调用程序,调用所述升级前的版本对所述读写操作指令进行处理;若接收到的读写操作指令针对升级后的版本,则通过所述版本调用程序,调用所述升级后的版本对所述读写操作指令进行处理。
可以在升级管理设备及节点设备中安装升级客户端,通过该升级客户端实现升级管理设备对节点设备的控制。
图3中的升级管理设备还可以执行图1实施例中的任一种分布式集群升级方法,图3中的节点设备还可以执行图2实施例中的任一种分布式集群升级方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于分布式集群实施例而言,由于其基本相似于分布式集群升级方法实施例,所以描述的比较简单,相关之处参见分布式集群升级方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。