CN104866380B - 一种集群管理***的状态转换的处理方法和装置 - Google Patents
一种集群管理***的状态转换的处理方法和装置 Download PDFInfo
- Publication number
- CN104866380B CN104866380B CN201510342306.XA CN201510342306A CN104866380B CN 104866380 B CN104866380 B CN 104866380B CN 201510342306 A CN201510342306 A CN 201510342306A CN 104866380 B CN104866380 B CN 104866380B
- Authority
- CN
- China
- Prior art keywords
- node
- component
- unit
- status data
- state
- 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.)
- Active
Links
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明提供了一种集群管理***状态转换的处理方法和装置,所述方法包括:当***控制单元接收到用户发送的状态转换命令后,向节点代理单元发送反馈节点及组件的状态数据的请求;待节点代理单元返回节点及组件的状态数据后,***控制单元判断返回的节点及组件的状态数据是否符合执行该状态转换命令的条件;如果是,***控制单元将该状态转换命令发送至状态机单元进行状态转换的处理,并将存储单元中对应的状态数据更新为处理后的状态数据。通过本发明提供的状态转换的处理方法,能够保证集群管理***中的节点及组件状态与节点的实际状态的一致性,进而提高了集群管理***中的节点及组件状态的正确性。
Description
技术领域
本发明涉及计算机集群技术领域,尤其涉及一种集群管理***的状态转换的处理方法和装置。
背景技术
计算机集群技术的优势在于能够集中管理集群中节点的配置信息、状态信息和资源信息等等。
在现有的集群管理***中,在接收到状态转换命令后,通常会直接执行状态转换命令,并在集群管理***中将状态直接更新为命令执行后的状态。然而,当网络通讯出现故障后,节点不能顺利地执行状态转换对应的操作命令,导致节点的实际状态仍然保持原有的状态。然而,此时集群管理***认为节点已完成状态转换,并将转换后的状态显示给用户。此时,当用户根据***显示的状态发出操作命令时,由于此时显示状态与实际状态不符,导致用户发出的操作命令为错误命令,从而出现***无法正常地执行用户发出的操作命令的现象。
发明内容
有鉴于此,本发明提供了一种集群管理***的状态转换的处理方法和装置,以提高集群管理***显示的节点状态及节点组件状态的正确性,进而提高其可用性。
为了达到上述发明目的,本发明采用了如下技术方案:
一种集群管理***状态转换的处理方法,所述方法包括:
当***控制单元接收到用户发送的状态转换命令后,向节点代理单元发送反馈节点及组件的状态数据的请求;
待节点代理单元返回节点及组件的状态数据后,***控制单元判断返回的节点及组件的状态数据是否符合执行该状态转换命令的条件;如果是,***控制单元将该状态转换命令发送至状态机单元进行状态转换的处理,并将存储单元中对应的状态数据更新为处理后的状态数据。
本发明实施例还提供了另外一种集群管理***的节点及组件状态的处理方法,所述方法包括:
当在集群管理***中新增加节点时,安装在新增加节点上的节点代理单元将该节点的注册数据推送至节点注册单元进行代理注册,待代理注册成功后,节点注册单元向节点代理单元返回注册成功信息;
节点代理单元每隔第三时长向***控制单元发送注册成功的节点上的节点及组件状态数据;
***控制单元将接收到的节点及组件状态数据发送至状态机单元;
状态机单元进行状态转换处理得到处理后的状态数据,并将处理后的状态数据反馈给***控制单元;
***控制单元比较由状态机单元反馈回的处理后的状态数据与从存储单元中读取到的状态数据是否一致,如果否,***控制单元将存储单元中的状态数据更新为状态机单元处理后的状态数据;
***控制单元每隔第四时长扫描一次存储单元,以获取存储单元内的所有节点上的最新的节点及组件状态信息以及节点的最近一次的心跳时间;
***控制单元判断节点的最近一次的心跳时间距离当前时刻是否大于第一时长,如果是,确定该节点已经掉线;
***控制单元从任务命令队列中清除已经掉线的节点和处于无法执行的命令组件的任务命令。
基于本发明提供的第一种集群管理***状态转换的处理方法,本发明还提供了一种集群管理***状态转换的处理装置,包括:
节点代理单元、状态机单元、***控制单元和存储单元,其中,集群中的每一节点上均安装有节点代理单元;
所述***控制单元用于当接收到用户发送的状态转换命令后,向节点代理单元发送反馈节点及组件的状态数据的请求;用于判断节点代理单元返回的节点及组件的状态数据是否符合执行该状态转换命令的条件;如果是,将该状态转换命令发送至状态机单元进行状态转换的处理,并将存储单元中对应的状态数据更新为处理后的状态数据;
所述节点代理单元用于获取所在节点的节点及组件的状态数据;根据***控制单元发送的反馈节点及组件的状态数据的请求向***控制单元返回节点及组件的状态数据;
所述状态机单元用于执行***控制单元发送的状态转换命令,以得到节点及组件的当前状态的下一状态;
所述存储单元用于存储节点及组件的状态数据。
基于本发明实施例提供的第二种集群管理***的状态转换的处理方法,本发明实施例还提供了集群管理***的状态转换的另外一种处理装置,包括:节点代理单元、节点注册单元、状态机单元、***控制单元和存储单元,其中,集群中的每一节点上安装有节点代理单元;
所述节点代理单元用于获取其所在节点的节点及组件的状态数据和节点的注册数据,当节点新增加在集群管理***中时,节点代理单元将该节点的注册数据推送至节点注册单元进行代理注册;还用于每隔第三时长向***控制单元发送注册成功的节点上的节点及组件状态数据;用于将其所在节点的节点及组件的状态数据发送至***控制单元;
节点注册单元用于根据节点代理单元推送来的注册数据进行注册处理,待代理注册成功后,向节点代理单元返回注册成功信息;
***控制单元用于将接收到的节点及组件状态数据发送至状态机单元;比较由状态机单元反馈回的处理后的状态数据与从存储单元中读取到的状态数据是否一致,如果否,将存储单元中的状态数据更新为状态机单元处理后的状态数据;每隔第四时长扫描一次存储单元,以获取存储单元内的所有节点上的最新的节点及组件状态信息以及节点的最近一次的心跳时间;判断节点的最近一次的心跳时间距离当前时刻是否大于第一时长,如果是,确定该节点已经掉线;从任务命令队列中清除已经掉线的节点和处于无法执行的命令组件的任务命令;
状态机单元用于根据节点及组件的状态数据进行状态转换处理,并将处理后的状态数据反馈给***控制单元;
所述存储单元用于存储节点及组件的状态数据。
相较于现有技术,本发明具有以下有益效果:
本发明提供的集群管理***状态转换的处理方法中,在***控制单元接收到用户发送的状态转换命令后,不会直接执行该状态转换命令,而是会先向节点代理单元发送反馈节点的节点及组件的状态数据的请求,待节点代理单元返回节点及组件的状态数据后,再判断返回的节点及组件的状态数据是否符合执行该状态转换命令的条件,只有当判断结果为“是”时,才会将该状态转换命令发送至状态机单元执行该状态转换命令进行状态转换的处理,并将存储单元中对应的状态数据更新为处理后的状态数据。因此,通过本发明提供的状态转换的处理方法,能够保证集群管理***中的节点及组件状态与节点的实际状态的一致性,进而提高了集群管理***中的节点及组件状态的正确性,由于集群管理***中的节点及组件的状态数据会显示给用户,所以,用户根据本发明提供的状态转换的处理方法得到的状态数据下达的操作命令的准确性较高,因而本发明提供的方法提高了集群管理***中的节点及组件的状态数据的可用性。
附图说明
为了清楚地理解本发明的技术方案,下面对描述本发明具体实施方式时用到的附图做一简要说明。显而易见地,这些附图仅是本发明的部分实施例,本领域技术人员在不付出创造性劳动的前提下,还可以获得其它的附图。
图1是本发明实施例提供的集群管理***的状态转换的处理装置的结构示意图;
图2是本发明实施例提供的集群管理***中的状态转换流程示意图;
图3是本发明实施例一提供的集群管理***的状态转换的处理方法流程示意图;
图4是本发明实施例二提供的新加入集群中的节点申请注册加入被监控队列的方法流程示意图;
图5是本发明实施例二提供的集群管理***的状态转换的处理方法流程示意图。
具体实施方式
为使本发明的发明目的、技术手段和达到的技术效果更加清楚、完整,下面结合附图对本发明的具体实施方式进行描述。
为了清楚地理解本发明提供的集群管理***状态转换的处理方法的具体实施方式,首先介绍本发明实施例提供的集群管理***的状态转换的处理装置。
图1是本发明实施例提供的集群管理***的状态转换的处理装置的结构示意图。如图1所示,该集群管理***的状态转换的处理装置包括:节点代理单元01、节点注册单元02、状态机单元03、***控制单元04和存储单元05。
由于节点及组件的状态数据包括更新频繁的实时状态数据和持久化的健康状态数据。实时状态数据可以包括节点的内存剩余容量、CPU资源的使用情况以及硬盘容量的使用情况等数据。
节点的健康状态是根据节点最后注册时间或者CPU资源、硬件资源的使用情况,节点程序损坏、或者节点掉线等信息所产生的结果。
为了提高状态数据的更新速率以及持久化数据的稳定性,本发明提供的集群管理***中的存储单元05包括缓存单元51和数据库52,并且在缓存单元51内存储有更新频繁的实时状态数据,在数据库52内存储有状态较持久化的健康状态数据。需要说明的是,存储在缓存单元中的状态数据可以实时显示在Web界面上,因此,存储在缓存单元中的状态数据能够实时被用户获知。
一般情况下,在一个集群中通常包括多个节点,每个节点上均安装后节点代理单元01。
节点代理单元01用于获取其所在节点的节点及组件的状态数据;根据***控制单元03发送的反馈节点及组件的状态数据的请求向***控制单元03返回节点及组件的状态数据;
此外,节点代理单元01还用于获取其所在节点的注册数据,当节点新增加在集群管理***中时,节点代理单元01将该节点的注册数据推送至节点注册单元02进行代理注册;另外,节点代理单元01还用于每隔第三时长向***控制单元03发送注册成功的节点上的节点及组件状态数据;用于将其所在节点的节点及组件的状态数据发送至***控制单元03。
节点注册单元02用于根据节点代理单元01推送来的注册数据进行注册处理,待代理注册成功后,向节点代理单元01返回注册成功信息。
状态机单元03用于根据节点及组件的状态数据进行状态转换处理,并将处理后的状态数据反馈给***控制单元04,和/或,所述状态机单元03用于执行***控制单元04发送的状态转换命令,以得到节点及组件的当前状态的下一状态。
作为本发明的进一步改进,所述状态机单元03还包括执行与该节点及组件的当前健康状况相适应的操作的子单元。
***控制单元04用于当接收到用户发送的状态转换命令后,向节点代理单元01发送反馈节点及组件的状态数据的请求;用于判断节点代理单元01返回的节点及组件的状态数据是否符合执行该状态转换命令的条件;如果是,将该状态转换命令发送至状态机单元03进行状态转换的处理,并将存储单元05中对应的状态数据更新为处理后的状态数据;和/或,所述***控制单元04用于将接收到的节点及组件状态数据发送至状态机单元04;比较由状态机单元04反馈回的处理后的状态数据与从存储单元05中读取到的状态数据是否一致,如果否,将存储单元05中的状态数据更新为状态机单元03处理后的状态数据;每隔第四时长扫描一次存储单元05,以获取存储单元05内的所有节点上的最新的节点及组件状态信息以及节点的最近一次的心跳时间;判断节点的最近一次的心跳时间距离当前时刻是否大于第一时长,如果是,确定该节点已经掉线;从任务命令队列中清除已经掉线的节点和处于无法执行的命令组件的任务命令。
作为本发明的进一步改进,所述***控制单元03还包括:确定节点及组件的当前健康状况的子单元,用于当返回的节点及组件的状态数据不符合该状态转换命令的条件时,根据返回的节点及组件的状态数据确定节点及组件的当前健康状况。
基于图1所示的集群管理***的状态转换的处理装置,本发明实施例提供了集群管理***状态转换的处理方法。
为了清楚地理解本发明实施例提供的集群管理***状态装换的处理方法。下面先介绍一下本发明实施例提供的状态转换图。该状态转换图如图2所示。需要说明的是,集群管理***中的状态转换流程均按照图2所示的流程进行,各个状态转换关系之间还需要进行纠错和容错处理,具体为,根据节点及组件的状态数据判断是否能够进入到下一状态,如果不能则给出反馈信息,并进行状态的容错处理。图2中实线部分为用户转换,即由用户下达转换命令,集群管理***执行后状态进行转换的过程,长虚线为集群管理***自动进行的状态转换,即从上一状态转换到下一状态是由集群管理***自行判断和转换的,无需用户下达的命令事件驱使。短虚线代表用户转换或集群管理***转换,即该转换动作可能是由用户下达的命令驱使,或集群管理***自行判断所进行的转换。
下面逐一介绍图2所示的各种状态以及介绍各个状态转换的流程。
◆初始化状态,即INITIAL状态,节点新安装后处于此状态,或者节点的状态信息被清除后将回到此初始化状态。
◆正在安装状态,即INSTALLING状态,S1过程即为安装组件的任务队列下达后,***控制单元将更改组件状态为正在安装状态,此步骤是由任务命令事件驱动的。
◆组件安装失败的状态,即INSTALL_FAILED状态,S3过程即为集群管理***根据节点代理单元推送回来的节点组件安装失败信息,通过纠错和容错机制所显示的安装失败状态。
◆组件已经安装成功状态,即INSTALLED,S2过程是***自动检测后从正在安装状态转换为安装成功状态;S17即当用户下达安装命令时也可重新覆盖安装;S5即安装后用户下达开启命令的执行过程。
◆正在清除组件的安装状态,即WIPING_OUT状态,S4过程即清除了组件的安装状态重新回到初始化状态。
◆正在开启组件中,即STARTING,S8过程即根据状态机单元或***控制单元的判断结果,由***自动到达已开启状态,或由于错误而到达“不知道当前状态”状态,再由下次的状态数据来判断状态的转换方向。
◆组件已经启动成功,即STARTED,S9过程即开启或由用户下达停止命令,或者S11用户下达更新命令。
◆正在停止组件,即STOPPING,S10过程停止后到达的“组件已经安装成功”状态而不是已停止状态,这是状态机设计的独特之处。***会根据状态机判断来反馈给用户是停止、还是已安装或者以卸载状态。
◆正在卸载中,即UNINSTALLING,S7过程由用户下达卸载组件命令所到达的状态。根据状态机单元返回的结果来判断是卸载成功或者或S13过程到达“不知道当前状态”的状态再根据下次的状态数据来判断转换方向。
◆卸载完成,即UNINSTALLED,S14过程即***自动***自动到达“组件已经安装成功”状态。***会根据状态机单元判断来反馈给用户是停止、还是已安装或者已卸载状态。
◆正在更新中,即UPGRADING,更新完成后会回到“正在更新中”的前一状态。
◆不知道当前状态,即UNKNOWN,***状态转换错误时均会到达该状态。再根据下一次的状态数据来重新判断状态的转换方向。S15过程及关闭状态的备份功能,即取消“不知道当前状态”的状态的备份功能。当有有效数据接受时再开启备份功能。
◆关闭节点的状态备份功能,即DISABLED状态。
需要说明的是,本发明实施例提供的集群管理***状态转换的处理方法分为以下两种情形,第一种情形为由用户下达的命令驱使的状态转换的处理,第二种情形为集群管理***自动进行的状态转换的处理。
下面首先介绍由用户下达的命令驱使的状态转换的处理方法的具体实施方式。具体参见实施例一。
实施例一
图3是本发明实施例一提供的集群管理***状态转换的处理方法流程示意图。如图3所示,本发明实施例提供的集群管理***状态转换的处理方法包括以下步骤:
S301、当***控制单元04接收到用户发送的状态转换命令后,向节点代理单元01发送反馈状态数据的请求:
用户根据显示的状态数据下达状态转换命令,当***控制单元04接收到用户下达的状态转换命令后,向节点代理单元01发送反馈状态数据的请求。其中,状态数据包括节点及节点组件的状态数据。
S302、节点代理单元01获取其所在节点的状态数据,并将该状态数据返回给***控制单元04:
需要说明的是,节点代理单元01获取的其所在节点的状态数据为该节点的实际状态数据。而存储在集群管理***的存储单元的数据不一定是节点的实际状态数据。并且存储在集群管理***的存储单元的状态数据会实时显示给用户。
S303、***控制单元03根据返回的状态数据判断节点及组件是否符合执行该状态转换命令的条件,如果是,执行步骤S304至步骤S306,如果否,执行步骤S307。
需要说明的是,执行状态转换命令的条件包括节点执行状态转换命令的条件和组件执行状态转换命令的条件。其中,节点执行状态转换命令的条件例如可以为节点是否开机、节点的CPU、硬盘、内存等使用率是否达到设定的上限。组件执行状态转换命令的条件例如可以为组件是否已经安装、是否已经开启。
另外,通过判断返回的状态数据是否符合执行该状态转换命令的条件,也就是判断节点及组件状态的健康状况。当返回的状态数据符合执行该状态转换命令的条件时,说明集群管理***中的该节点及组件状态处于健康状态,当返回的状态数据不符合执行该状态转换命令的条件时,说明集群管理***中的该节点及组件状态处于不健康状态。
当返回的状态数据符合执行该状态转换命令的条件时,可以进行状态转换,即将当前状态数据转换为该当前状态的下一成功状态,即执行步骤S304至步骤S306。当返回的状态数据不符合执行该状态转换命令的条件时,状态机单元或***控制单元会进行容错纠错处理,执行步骤S307。
S304、将该状态转换命令发送至状态机单元03,以使状态机单元03进行状态转换的处理。
S305、状态机单元03执行状态转换命令,得到处理后的状态数据,并将处理后的状态数据发送至***控制单元04;
状态机单元03接收到该状态转换命令后,根据状态转换机制,换算出当前节点及组件状态的下一状态,该换算出的节点及组件状态的下一状态即为状态机单元03处理后的状态数据。在得到处理后的状态数据后,状态机单元03将该处理后的状态数据发送至***控制单元04。
S306、***控制单元04根据状态机单元03返回的处理后的状态数据更新存储单元中的状态数据:
由于缓存单元中的实时状态数据会被频繁地更新和读取。如当读线程访问缓存单元时,写线程的访问可能会进入阻塞或轮询状态,如此导致状态转换的处理时间较长,降低了处理效率。
为了提高本发明的状态转换的处理效率,优选采用多线程分块锁的方式读取或更新缓存单元中的状态数据。
其中,多线程分块锁的机制如下:
首先,将缓存单元分为多个存储区:
划分的缓存区的长度大小由集群管理***中的节点注册单元中注册的节点的个数以及组件个数决定。需要说明的是,在本发明实施例中,设定每个节点及组件的信息长度是固定的。
然后,根据划分的缓存区的个数,确定读写线程的个数:
为防止某个线程等待资源过久,本发明实施例优选将状态数据分成多个数据段,并且给每个数据段配一把锁。一个线程可以对一个数据段进行读操作或写操作。当一个线程占用状态数据中的其中一个数据段的状态信息的时候,其它数据段的状态信息也能被其他线程操作。从而达到快速准确的更新及读取,节点及节点组件的状态信息。需要说明的是,为了能够尽可能多地实现多个线程并行对缓存单元内的状态数据进行读写操作,上述划分的数据段的长度要尽可能地细化。
因此,为了实现多线程分块锁的机制,本发明实施例提供的缓存单元包括多个缓存区,其中,每个缓存区的长度由集群管理***中注册的节点及组件的个数确定。另外,本发明实施例提供的状态数据包括多个数据段,并且为每个数据段配一把锁。给数据段配锁的目的是为了使得数据段在同一时刻只能进行读操作或写操作,而不能同时进行读操作或写操作。
另外,为了进一步提高更新效率,也可以采用上述所述的多线程分块锁的方式更新数据库内的状态数据。此时,数据库分成若干个存储区,并且数据库内的状态数据分成多个数据段,每个数据段配一把锁。
需要说明的是,在本发明实施例提供的集群管理***的状态转换的处理方法中,虽然状态机单元和***控制单元在进行纠错和容错处理的过程中会消耗一定时间,降低处理效率,但是,当采用多线程分块锁的机制更新存储单元的状态数据时,就可以弥补由于纠错容错处理导致的处理时间长的缺陷。因此,通过本发明提供的处理方法,能够实现在不降低处理效率的前提下,提高***的纠错和容错能力。
另外,由于影响处理速度的瓶颈不是网络速度,而是***处理堆栈数据的速度,当采用多线程分块锁的机制更新和读取存储单元内的状态数据时,可以从数量级上减少处理时间,并从根本上提高***的高可用性。
在本发明实施例中,***控制单元04优选采用多线程分块锁的方式将存储单元中旧的状态数据更新为处理后的状态数据。由于存储单元中的状态数据会显示给用户,因此,通过以上步骤即完成了集群管理***中的状态转换。并且,由于是在确定了符合状态转换的条件后才进行状态转换,所以,在更新后的存储单元中的状态数据即集群管理***中的状态数据为节点及组件的真实状态数据。所以,通过以上步骤S301至步骤S306能够保证集群管理***中的节点及组件状态与真实的节点及组件状态相一致,进而相较于现有技术,提高了集群管理***中的节点及组件状态的正确性。
由于用户根据集群管理***中的状态数据下达操作命令,由集群管理***中的状态数据与节点及组件的真实状态一致,所以,减少了用户下达错误操作命令的几率。
S307、根据返回的状态数据确定节点及组件的当前健康状况,根据该节点的当前健康状况,执行与该节点及组件的当前健康状况相适应的操作:
需要说明的是,在本发明实施例中,预先根据节点及组件可能出现的状态设置有不同的健康状况。为了能够提高集群管理***的纠错容错处理,针对不同的健康状况,集群管理***执行不同的操作,从而避免出现集群管理***执行命令时出错的现象。
作为本发明实施例的第一种情况,步骤S307具体包括:
A1、根据返回的节点及组件的状态数据确定节点最近一次心跳的时间:
需要说明的是,返回的节点及组件的状态数据中还可以携带有产生该状态数据的心跳时间。因此,根据该返回的节点及组件的状态数据可以确定该节点最近一次心跳的时间。
A2、判断节点最近一次心跳的时间距离当前时刻是否大于第一时长,如果是,执行步骤A3:
需要说明的是,第一时长可以为2倍的线程睡眠时间(threadWakeupInterval)。线程睡眠时间即为***控制单元相邻两次扫描存储单元的时间间隔。
A3、确定节点当前处于已经掉线的状态,***控制单元清除该状态转换命令:
该步骤具体为:当节点及组件的最近一次更新状态数据的时间距离当前时刻大于第一时长后,则确定该节点已经掉线,为了避免在执行该状态转换命令时出现错误,作为本发明的一个具体实施例,此时***控制单元04可以从任务命令队列中清除该状态转换命令。
需要说明的是,若没有及时将错误命令从任务命令队列中清除,将该错误的状态转换命令发送至状态机单元03后,***控制单元04或状态机单元03会开启其设置的容错纠错机制对该错误的状态转换命令进行容错纠错处理,即执行步骤B1至步骤B4。
B1、将该状态转换命令发送至状态机单元03,***控制单元04或状态机单元03向节点代理单元01发送反馈节点及组件状态数据的请求。
B2、节点代理单元01获取其所在节点的状态数据,并将该状态数据返回给***控制单元04或状态机单元03。
B3、***控制单元04或状态机单元03判断返回的状态数据是否符合执行该状态转换命令的条件,如果否,执行步骤B4。
B4、状态机单元03不执行该状态转换命令,并将该节点的节点及组件状态退回至状态转换前的上一状态,***控制单元04更新存储单元中的状态数据。
通过步骤A1至步骤A3以及步骤B1至步骤B4可以提供集群管理***的容错纠错能力。即使有错误命令下达到集群管理***的状态机单元后,由于状态机单元不会直接执行该状态命令,而是先判断节点及组件的实际状态数据是否符合执行该命令的条件,只有在符合该执行条件后才会执行该命令,换句话说,当不满足该执行条件时,就不会执行该命令,也就不会进行状态转换。所以,通过步骤A1至步骤A3以及步骤B1至步骤B4可以提高集群管理***的容错纠错能力,有利于维持***的稳定。
作为本发明的第二种情况,步骤S307可以具体为:
当节点及组件的健康状况为不健康时,状态机单元不执行该状态转换命令,并将该节点的组件状态更新为当前状态的下一失败状态。
当存在以下至少一种情况时,即认为节点即组件的健康状况为不健康。节点的内存、cpu资源、硬盘资源已经被占用超过限额、节点或组件未启动、该节点或组件掉线、节点程序被损坏、节点或组件的版本号与master主程序所注册的版本不一致。
作为本发明的第三种情况,步骤S307可以具体为:
当所述节点处于“节点正在执行更新命令”状态时,延时第二时长,当在所述第二时长内接收到该节点的节点状态更新结果时,返回执行步骤S303;当在所述第二时长内未接收到该节点的节点状态更新结果时,确定该节点已经掉线,***控制单元04可以从任务命令队列中清除该状态转换命令。并可以将该节点的组件状态更新为“不知道当前状态”的状态。
通过步骤S307可以实现集群管理***的纠错容错能力,能够保证集群管理***中的状态数据与节点及组件的实际状态一致,从而保证集群管理***中的状态数据的一致性。
以上为本发明实施例提供的响应于用户下达的状态转换命令进行的状态转换的处理方法的具体实施方式。除了由用户下达状态转换命令驱使的状态转换外,***自身也可以自动对状态转换进行处理。具体参见以下实施例二。
实施例二
在实施例二中首先介绍新加入集群中的节点申请注册加入被监控队列的方法。图4是新加入集群中的节点申请注册加入被监控队列的方法流程示意图。如图4所示,该方法包括以下步骤:
S401、当节点的节点代理单元启动后,节点代理单元获取该节点的注册数据,并将其推送至节点注册单元进行代理注册:
需要说明的是,节点的注册数据包括申请地址、节点***版本、所安装组件的进程内容等。
另外,如果节点代理单元没有接收到重新启动的命令,该注册动作只进行一次。
S402、节点注册单元从存储单元中读取该节点的节点及组件的状态数据,并将该节点及组件的状态数据推送至状态机单元进行处理。
S403、状态机单元按照状态转换机制,换算出节点注册成功后的状态,并将注册成功后的状态返回给节点注册单元:
通常情况下,节点组件注册之前的状态为“初始化”状态,注册成功后的状态为“已安装”状态。
S404、节点注册单元将注册成功后的状态数据返回给节点代理单元。
通过以上步骤S401至步骤S404即完成了新增加节点的注册,注册成功后,该节点的节点及组件状态就能够被***控制单元所监控。
本发明实施例二提供的集群管理***自动进行状态转换的处理方法的流程如图5所示,其包括以下步骤:
S501、节点代理单元每隔第三时长向***控制单元发送注册成功的节点上的状态数据:
其中,节点上的状态数据包括节点状态数据和该节点上的组件状态数据。作为本发明的一个具体实施例,所述第三时长可以为10秒钟。
S502、***控制单元将接收到的状态数据发送至状态机单元进行状态转换处理。
S503、状态机单元按照状态转换机制,换算出节点下一步的状态,该节点下一步的状态即为状态机单元处理后的状态数据;状态机单元将该处理后的状态数据反馈给***控制单元。
S504、***控制单元比较由状态机单元反馈回的处理后的状态数据与从存储单元中读取到的状态数据是否一致,如果否,执行步骤S505。
S505、***控制单元将存储单元中的状态数据更新为状态机处理后的状态数据:
需要说明的是,在本发明实施例中,为了提高更新效率,***控制单元采用上述所述的多线程分块锁的方式将存储单元中的状态数据更新为状态机处理后的状态数据。
S506、***控制单元每隔第四时长扫描一次存储单元,以获取存储单元内的所有节点上的最近状态数据以及节点的最近一次的心跳时间:
其中,第四时长大于第三时长,作为本发明的一个具体实施例,第四时长可以为1分钟。
S507、判断节点的最近一次的心跳时间距离当前时刻是否大于第一时长,如果是,确定该节点已经掉线。如果否,执行步骤S508至步骤S509。
S508、从任务命令队列中清除已经掉线的节点和处于无法执行命令的组件的任务命令。
S509、***控制单元将已经掉线的节点的状态更新为“不知道当前状态”的状态。
以上为本发明实施例二提供的集群管理***自动处理状态转换的流程。通过以上方法,能够保证集群管理***中存储的节点及组件的状态数据与节点及组件的实际状态数据一致,提高了集群管理***中存储的节点及组件的状态数据的正确性,由于集群管理***中存储的节点及组件的状态数据会实时显示给用户,所以,通过以上方法,减少了用户下达错误操作命令的几率,进而提高了集群管理***中的节点及组件的状态数据的可用性。
以上所述仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (9)
1.一种集群管理***状态转换的处理方法,其特征在于,所述方法包括:
当***控制单元接收到用户发送的状态转换命令后,向节点代理单元发送反馈节点及组件的状态数据的请求;
待节点代理单元返回节点及组件的状态数据后,***控制单元判断返回的节点及组件的状态数据是否符合执行该状态转换命令的条件;如果是,***控制单元将该状态转换命令发送至状态机单元进行状态转换的处理,并将存储单元中对应的状态数据更新为处理后的状态数据;
当***控制单元判断返回的节点及组件的状态数据不符合执行该状态转换命令的条件时,所述方法还包括:
***控制单元根据返回的节点及组件的状态数据确定节点及组件的当前健康状况,根据该节点的当前健康状况,状态机单元执行与该节点及组件的当前健康状况相适应的操作;
将该状态转换命令发送至状态机单元,状态机单元或***控制单元向节点代理单元发送反馈节点及组件状态的请求;待节点代理单元返回节点及组件状态的信息后,判断返回的节点及组件状态是否符合执行该状态转换命令的条件,如果否,状态机单元不执行该状态转换命令,并将该节点的节点及组件状态退回至原始状态,并更新存储单元中的该节点的节点及组件状态。
2.根据权利要求1所述的方法,其特征在于,所述根据返回的节点及组件的状态数据确定节点及组件的当前健康状况,根据该节点的当前健康状况,状态机单元执行与该节点及组件的当前健康状况相适应的操作,具体包括:
根据返回的节点及组件的状态数据确定节点最近一次心跳的时间;
判断节点最近一次心跳的时间距离当前时刻是否大于第一时长,如果是,确定节点当前处于已经掉线的状态,***控制单元清除该状态转换命令。
3.根据权利要求1所述的方法,其特征在于,所述根据返回的节点及组件的状态数据确定节点及组件的当前健康状况,根据该节点的当前健康状况,状态机单元执行与该节点及组件的当前健康状况相适应的操作,具体包括:
根据返回的节点及组件的状态数据确定节点及组件当前处于正在执行更新命令的状态时,延时第二时长;
当在所述第二时长内接收到该节点的节点及组件状态更新结果时,返回执行所述待节点代理单元返回节点及组件的状态数据后,***控制单元判断返回的节点及组件的状态数据是否符合执行该状态转换命令的条件的步骤,当在所述第二时长内未接收到节点的节点及组件状态更新结果时,确定该节点当前处于已经掉线的状态,***控制单元清除该状态转换命令。
4.根据权利要求1所述的方法,其特征在于,所述节点及组件状态包括节点及组件的实时状态和持久化健康状态,所述存储单元包括缓存单元和数据库,所述实时状态存储在所述缓存单元内,所述持久化健康状态存储在数据库中。
5.根据权利要求1所述的方法,其特征在于,所述存储单元包括若干个存储分区,所述节点及组件的状态数据包括若干个数据段,每个数据段配一把锁;所述更新存储单元中的该节点的节点及组件状态,包括:
采用多线程并行将节点及组件状态的多个数据段存储在存储单元不同的存储分区内。
6.一种集群管理***的节点及组件状态的处理方法,其特征在于,所述方法包括:
当在集群管理***中新增加节点时,安装在新增加节点上的节点代理单元将该节点的注册数据推送至节点注册单元进行代理注册,待代理注册成功后,节点注册单元向节点代理单元返回注册成功信息;
节点代理单元每隔第三时长向***控制单元发送注册成功的节点上的节点及组件状态数据;
***控制单元将接收到的节点及组件状态数据发送至状态机单元;
状态机单元进行状态转换处理得到处理后的状态数据,并将处理后的状态数据反馈给***控制单元;
***控制单元比较由状态机单元反馈回的处理后的状态数据与从存储单元中读取到的状态数据是否一致,如果否,***控制单元将存储单元中的状态数据更新为状态机单元处理后的状态数据;
***控制单元每隔第四时长扫描一次存储单元,以获取存储单元内的所有节点上的最新的节点及组件状态信息以及节点的最近一次的心跳时间;
***控制单元判断节点的最近一次的心跳时间距离当前时刻是否大于第一时长,如果是,确定该节点已经掉线;
***控制单元从任务命令队列中清除已经掉线的节点和处于无法执行的命令组件的任务命令。
7.根据权利要求6所述的方法,其特征在于,所述存储单元包括若干个存储分区,所述节点及组件的状态数据包括若干个数据段;每个数据段配一把锁;所述将存储单元中的状态数据更新为状态机单元处理后的状态数据,具体包括:
采用多线程并行将节点及组件状态的多个数据段存储在存储单元不同的存储分区内。
8.一种集群管理***状态转换的处理装置,其特征在于,包括:
节点代理单元、状态机单元、***控制单元和存储单元,其中,集群中的每一节点上均安装有节点代理单元;
所述***控制单元用于当接收到用户发送的状态转换命令后,向节点代理单元发送反馈节点及组件的状态数据的请求;用于判断节点代理单元返回的节点及组件的状态数据是否符合执行该状态转换命令的条件;如果是,将该状态转换命令发送至状态机单元进行状态转换的处理,并将存储单元中对应的状态数据更新为处理后的状态数据;
所述***控制单元还包括:确定节点及组件的当前健康状况的子单元,用于当返回的节点及组件的状态数据不符合该状态转换命令的条件时,根据返回的节点及组件的状态数据确定节点及组件的当前健康状况;
所述***控制单元,还用于当返回的节点及组件的状态数据不符合该状态转换命令的条件时,将该状态转换命令发送至状态机单元,状态机单元或***控制单元向节点代理单元发送反馈节点及组件状态的请求;待节点代理单元返回节点及组件状态的信息后,判断返回的节点及组件状态是否符合执行该状态转换命令的条件,如果否,状态机单元不执行该状态转换命令,并将该节点的节点及组件状态退回至原始状态,并更新存储单元中的该节点的节点及组件状态;
所述节点代理单元用于获取所在节点的节点及组件的状态数据;根据***控制单元发送的反馈节点及组件的状态数据的请求向***控制单元返回节点及组件的状态数据;
所述状态机单元用于执行***控制单元发送的状态转换命令,以得到节点及组件的当前状态的下一状态;所述状态机单元还包括执行与该节点及组件的当前健康状况相适应的操作的子单元;
所述存储单元用于存储节点及组件的状态数据。
9.一种集群管理***的状态转换的处理装置,其特征在于,包括:节点代理单元、节点注册单元、状态机单元、***控制单元和存储单元,其中,集群中的每一节点上安装有节点代理单元;
所述节点代理单元用于获取其所在节点的节点及组件的状态数据和节点的注册数据,当节点新增加在集群管理***中时,节点代理单元将该节点的注册数据推送至节点注册单元进行代理注册;还用于每隔第三时长向***控制单元发送注册成功的节点上的节点及组件状态数据;用于将其所在节点的节点及组件的状态数据发送至***控制单元;
节点注册单元用于根据节点代理单元推送来的注册数据进行注册处理,待代理注册成功后,向节点代理单元返回注册成功信息;
***控制单元用于将接收到的节点及组件状态数据发送至状态机单元;比较由状态机单元反馈回的处理后的状态数据与从存储单元中读取到的状态数据是否一致,如果否,将存储单元中的状态数据更新为状态机单元处理后的状态数据;每隔第四时长扫描一次存储单元,以获取存储单元内的所有节点上的最新的节点及组件状态信息以及节点的最近一次的心跳时间;判断节点的最近一次的心跳时间距离当前时刻是否大于第一时长,如果是,确定该节点已经掉线;从任务命令队列中清除已经掉线的节点和处于无法执行的命令组件的任务命令;
状态机单元用于根据节点及组件的状态数据进行状态转换处理,并将处理后的状态数据反馈给***控制单元;
所述存储单元用于存储节点及组件的状态数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510342306.XA CN104866380B (zh) | 2015-06-18 | 2015-06-18 | 一种集群管理***的状态转换的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510342306.XA CN104866380B (zh) | 2015-06-18 | 2015-06-18 | 一种集群管理***的状态转换的处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866380A CN104866380A (zh) | 2015-08-26 |
CN104866380B true CN104866380B (zh) | 2018-07-06 |
Family
ID=53912228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510342306.XA Active CN104866380B (zh) | 2015-06-18 | 2015-06-18 | 一种集群管理***的状态转换的处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866380B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105549909B (zh) * | 2015-12-12 | 2019-03-12 | 天津南大通用数据技术股份有限公司 | 一种集群序列类一致性信息持久化的优化方法 |
CN106940671B (zh) * | 2016-01-05 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种集群中任务线程运行的监控方法、装置及*** |
CN115225633B (zh) * | 2022-06-24 | 2024-04-12 | 浪潮软件集团有限公司 | 基于对端网络信号的状态机状态转换方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984267A (zh) * | 2012-12-07 | 2013-03-20 | 北京搜狐新媒体信息技术有限公司 | 一种实现分布式缓存节点动态更新到客户端的方法及*** |
CN103095533A (zh) * | 2013-02-22 | 2013-05-08 | 浪潮电子信息产业股份有限公司 | 一种云计算***平台中的定时监控方法 |
CN103701661A (zh) * | 2013-12-23 | 2014-04-02 | 浪潮(北京)电子信息产业有限公司 | 一种实现节点监控的方法及*** |
CN103747034A (zh) * | 2013-12-20 | 2014-04-23 | 华为技术有限公司 | 一种终端的状态机状态转换的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8858324B2 (en) * | 2011-11-10 | 2014-10-14 | Empire Technology Development Llc | Speculative rendering using historical player data |
-
2015
- 2015-06-18 CN CN201510342306.XA patent/CN104866380B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984267A (zh) * | 2012-12-07 | 2013-03-20 | 北京搜狐新媒体信息技术有限公司 | 一种实现分布式缓存节点动态更新到客户端的方法及*** |
CN103095533A (zh) * | 2013-02-22 | 2013-05-08 | 浪潮电子信息产业股份有限公司 | 一种云计算***平台中的定时监控方法 |
CN103747034A (zh) * | 2013-12-20 | 2014-04-23 | 华为技术有限公司 | 一种终端的状态机状态转换的方法及装置 |
CN103701661A (zh) * | 2013-12-23 | 2014-04-02 | 浪潮(北京)电子信息产业有限公司 | 一种实现节点监控的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN104866380A (zh) | 2015-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103201724B (zh) | 在高可用性虚拟机环境中提供高可用性应用程序 | |
CN102346460B (zh) | 一种基于事务的服务控制***及其控制方法 | |
US10715643B2 (en) | Systems and/or methods for intelligent and resilient failover for cloud computing environments | |
JP3737695B2 (ja) | 透過的時間ベースの選択的ソフトウェア若返りのためのシステム及び方法 | |
US8738968B2 (en) | Configuration based service availability analysis of AMF managed systems | |
CN110807064B (zh) | Rac分布式数据库集群***中的数据恢复装置 | |
US8713352B2 (en) | Method, system and program for securing redundancy in parallel computing system | |
US9940598B2 (en) | Apparatus and method for controlling execution workflows | |
US20080281959A1 (en) | Managing addition and removal of nodes in a network | |
EP3400528B1 (en) | Deferred server recovery in computing systems | |
US7624309B2 (en) | Automated client recovery and service ticketing | |
US8612973B2 (en) | Method and system for handling interrupts within computer system during hardware resource migration | |
CN109446169B (zh) | 一种双控磁盘阵列共享文件*** | |
US20070283314A1 (en) | A Method and System for Performing a Change-Over to a Component of a Computing System | |
CN109558260B (zh) | Kubernetes故障排除***、方法、设备及介质 | |
CN107480014A (zh) | 一种高可用设备切换方法及装置 | |
CN104866380B (zh) | 一种集群管理***的状态转换的处理方法和装置 | |
US20080016394A1 (en) | Two Node Virtual Shared Disk Cluster Recovery | |
JP2010176303A (ja) | バッチ処理システムおよびこれに用いる情報端末装置、バッチ処理のリカバリ方法 | |
US8065569B2 (en) | Information processing apparatus, information processing apparatus control method and control program | |
CN112596371A (zh) | 控制卡切换方法、装置、电子设备及存储介质 | |
CN108984602B (zh) | 一种数据库控制方法和数据库*** | |
CN112000451A (zh) | 批量作业调度***、方法、设备及存储介质 | |
JP2008152552A (ja) | 計算機システム及び障害情報管理方法 | |
CN115964142A (zh) | 应用服务的管理方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |