一种双控环境下节点信息处理方法、设备以及介质与流程

文档序号:23468628发布日期:2020-12-29 12:55阅读:73来源:国知局
一种双控环境下节点信息处理方法、设备以及介质与流程

本发明涉及存储设备领域,具体涉及一种双控环境下节点信息处理方法、设备以及存储介质。



背景技术:

当前统一存储设备通常都由多个控制器组成冗余结构,最常用的方式为两个控制器(即两个node)组成一个iogroup,进而再由多个iogroup组成最终的多控集群,基本结构可以如图1所示。

对于具体的业务模块,当前一般都单独设置了独立的节点事件处理的子模块,其中包含了服务端对于集群发送的节点事件的处理逻辑以及相应涉及本模块业务处理的状态机。该子模块的主要作用就是接收来自集群的节点事件,例如本iogroup中有节点加入集群或者退出集群等,并根据本模块业务需求,通过自身状态及的运行,实现业务暂时中断,工作状态切换以及业务恢复等流程。

在事件处理子模块状态机的具体处理过程中,由于业务的状态切换与恢复流程对于整个模块的业务运行至关重要,例如,如何判断一个节点重新加入节点后应该执行恢复数据还是丢弃掉原来的数据(旧数据),如何对一次节点事件做进一步的具体化的分析等等。因此在事件处理子模块状态机的具体处理流程中,应该能够识别到当前在线节点的整体状态、当前/恢复之前包含了最新数据的节点等具体信息,并且这一类信息应该具有实时更新的机制,这样才能够保证对于各类复杂节点事件更及时准确的处理。

在当前的处理机制中,上述流程一般会叠加于事件处理子模块的具体处理流程之中,即在处理事件的状态机内部,同时对节点在线信息与状态进行判断及更新,使得整个处理流程更为复杂且不清晰。



技术实现要素:

有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种双控环境下节点信息处理方法,包括以下步骤:

利用第一状态机和第二状态机接收节点事件;

所述第一状态机根据接收到的所述节点事件进行相应的业务操作并向所述第二状态机更新节点状态数组;

所述第二状态机响应于接收到所述第一状态机获取在线节点信息的请求,根据当前接收到的所述节点事件对应的在线节点信息和当前接收到的所述节点状态数组对应的在线节点信息更新并返回当前的在线节点信息。

在一些实施例中,利用第一状态机和第二状态机接收节点事件,进一步包括:

响应于双控环境下第一节点退出集群,利用所述第一状态机和所述第二状态机接收集群检测到的节点退出事件,以使所述第一状态机进行相应的业务操作和使所述第二状态机更新所述在线节点信息。

在一些实施例中,还包括:

响应于所述双控环境下第二节点也退出集群,使所述第二状态机保存当前接收到的所述节点状态数组对应的在线节点信息。

在一些实施例中,还包括:

响应于所述第二节点重新加入所述集群,利用所述第一状态机和所述第二状态机接收集群检测到的节点加入事件,以使所述第二状态机根据所述第一状态机的请求利用保存的所述节点状态数组对应的在线节点信息和所述节点加入事件对应的在线节点信息更新当前的在线节点信息,以及使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作。

在一些实施例中,使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作,进一步包括:

根据所述第二状态机返回的当前的在线节点信息确定所述第二节点对应的标志位;

响应于所述标志位为第一标志位,利用所述第一状态机将退出所述集群之前的数据恢复到重新加入所述集群的第二节点,并向所述第二状态机更新节点状态数组。

在一些实施例中,还包括:

响应于所述第一节点重新加入所述集群,利用所述第一状态机和所述第二状态机接收集群检测到的节点加入事件,以使所述第二状态机根据所述第一状态机的请求利用更新后的所述节点状态数组对应的在线节点信息和所述节点加入事件对应的在线节点信息更新当前的在线节点信息,以及使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作。

在一些实施例中,使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作,进一步包括:

根据所述第二状态机返回的当前的在线节点信息确定所述第一节点对应的标志位;

响应于所述标志位为第二标志位,利用所述第一状态机将重新加入所述集群的第一节点的数据丢弃以从所述第二节点中同步数据,并向所述第二状态机更新节点状态数组。

在一些实施例中,还包括:

所述第二状态机根据所述当前的在线节点信息返回节点状态信息。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种双控环境下节点信息处理方法的步骤。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种双控环境下节点信息处理方法的步骤。

本发明具有以下有益技术效果之一:本发明提供的方案通过独立的第二状态机处理节点在线信息,并与进行业务处理的第一状态机进行交互,使得第一状态机原有的业务处理的流程更加清晰明了。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为多个iogroup组成最终的多控集群的结构示意图;

图2为本发明的实施例提供的双控环境下节点信息处理方法的流程示意图;

图3为本发明的实施例提供的双控环境下节点信息处理系统的结构示意图;

图4为本发明的实施例提供的计算机设备的结构示意图;

图5为本发明的实施例提供的计算机可读存储介质的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

根据本发明的一个方面,本发明的实施例提出一种双控环境下节点信息处理方法,如图2所示,其可以包括步骤:

s1,利用第一状态机和第二状态机接收节点事件;

s2,所述第一状态机根据接收到的所述节点事件进行相应的业务操作并向所述第二状态机更新节点状态数组;

s3,所述第二状态机响应于接收到所述第一状态机获取在线节点信息的请求,根据当前接收到的所述节点事件对应的在线节点信息和当前接收到的所述节点状态数组对应的在线节点信息更新并返回当前的在线节点信息。

本发明提供的方案通过独立的第二状态机处理节点在线信息,并与进行业务处理的第一状态机进行交互,使得第一状态机原有的业务处理的流程更加清晰明了。

在一些实施例中,如图3所示,虚线以上部分为业务模块,包含了节点事件处理子模块状态机(第一状态机)以及其他业务子模块。虚线以下部分为新增的节点状态处理模块状态机(第二状态机),其中最主要的为其内部的状态机函数,第二状态机与第一状态机之间交互工作。本发明提供的方案通过设置独立的节点信息与状态处理模块(第二状态机),其应用方式是通过与业务模块内的第一状态机交互而实现其功能。

在一些实施例中,步骤s2,所述第一状态机根据接收到的所述节点事件进行相应的业务操作后向所述第二状态机更新节点状态数组中,具体的,第一状态机与第二状态机的交互方式之一为节点状态数组变量node[],第一状态机在收到集群的节点事件及相关在线节点信息后,在完成相关业务操作(例如数据恢复等)或配置更新(例如将控制模式由单控改为双控等)后会更新在线节点数组变量node[],该数组包含2个成员,分别代表一个iogroup中的两个节点,可以使用1或0代表每个节点的在线状态。该数组的值更新后保留,当第二状态机触发更新后,会利用其对当前在线节点信息与状态进行更新。

在一些实施例中,步骤s3中,所述第二状态机响应于接收到所述第一状态机获取在线节点信息的请求,根据当前接收到的所述节点事件对应的在线节点信息和当前接收到的所述节点状态数组对应的在线节点信息更新并返回当前的在线节点信息,具体的,第二状态机的触发条件为其输出被使用时,该状态机的逻辑被触发执行,原因在于该状态机的输出主要用于第一状态机使用,在该触发机制下,当其输出值被第一状态机使用时,自身状态机触发,因此完成了对输出值的更新流程,即做到即用即更新,保证变量为最新值的同时避免无用的工作量。对于该状态机内部逻辑,在被触发后首先会根据当前的node[]的情况,判断业务内部节点的设置情况,同时根据由集群直接提供的在线节点情况,通过位与运算决定状态机输出set的取值。

需要说明的是,在集群层面,只要节点上线,即认为其是处于在线状态,而在第一状态机层面,只有对上线的节点进行相关的业务操作后,该节点才被认为处于在线状态。例如,第一状态机层面认为节点的在线情况是10(即两个节点均在线),而在集群层面认为节点的在线情况是11(即一个在线,一个不在线),这样当第一状态机向第二状态机请求当前节点在线信息时,第二状态机返回的在线信息则为10。另外,第二状态机是根据当前接收到的所述节点事件对应的在线节点信息和当前接收到的所述节点状态数组对应的在线节点信息确定当前的在线节点信息,也即第二状态机是根据接收到最新的节点事件对应的在线节点信息和当前接收到的所述节点状态数组对应的在线节点信息确定当前的在线节点信息。

这样,由于第二状态机输出的在线节点信息变量set主要用于表示业务内部可以进行正常业务的在线节点情况,即应该保证业务中的恢复流程基本完成后才将对应位更新,因此第二状态机逻辑中的位与运算首先要使用由第一状态机更新的node[]值,来表示业务内部已经恢复的节点。同时对于节点退出集群的情况,在集群中首先会将集群的在线节点对应位清为0,此时业务内部的逻辑还未进行,因此逻辑中的位与运算中还要加入集群提供的在线节点。最终实现的效果就是,节点加入集群后,完成整体的加入逻辑流程后才更新set值,而节点退出集群时,需要在第一时间修改set值,以保证业务的正常进行。

在一些实施例中,向所述第二状态机更新节点状态数组,进一步包括:

响应于利用所述第二状态机完成配置更新,向所述第二状态机更新节点状态数组。

具体的,节点状态数组变量state设置为枚举变量,其值可以为onlline或者offline,代表了当前iogroup内节点的状态。对于节点在线状态值state,第二状态机逻辑可以为两个节点都在线时state为online,当至少有一个节点不在线时,将state置为offline。该状态值可使用于第一状态机中,用于对节点事件类型进一步细分等流程中。

在一些实施例中,利用第一状态机和第二状态机接收节点事件,进一步包括:

响应于双控环境下第一节点退出集群,利用所述第一状态机和所述第二状态机接收集群检测到的节点退出事件,以使所述第一状态机进行相应的业务操作和使所述第二状态机更新所述在线节点信息。

在一些实施例中,还包括:

响应于所述双控环境下第二节点也退出集群,使所述第二状态机保存当前接收到的所述节点状态数组对应的在线节点信息。

具体的,当一个节点在退出集群后重新加入时,则会面临两种业务操作,其一是将退出集群之前的数据进行恢复,另一种则是可以直接丢弃所有数据,从对端进行同步最新的数据,对于两种操作如何进行判断与选择,可以利用上述机制中的节点变量set的值进行。

根据上面描述的处理流程,在一个iogroup中,如果一个节点退出集群,则在另一个存活节点中会收到相关集群事件并进行处理,在这个过程中,由于集群提供的在线节点信息更新,而且第一状态机在进行退出节点的相关业务操作时,也会请求获取第二状态机中的节点在线信息,因此第二状态机中处理的在线节点信息变量set的值也被更新,退出集群的bit位被置为0。但是如果第二个节点也退出集群,则该iogroup上没有存活控制器可以处理相关流程,因而第二状态机无法接收到集群发送的第二个节点退出集群的事件,也即此时在第二状态机中的所述节点事件对应的在线节点信息是第一个节点退出集群时所接收到的在线节点信息(即01,而不是00),同理所述节点状态数组对应的在线节点信息也为01(此时第一状态机已经更新node[]值)。

在一些实施例中,还包括:

响应于所述第二节点重新加入所述集群,利用所述第一状态机和所述第二状态机接收集群检测到的节点加入事件,以使所述第二状态机根据所述第一状态机的请求利用保存的所述节点状态数组对应的在线节点信息和所述节点加入事件对应的在线节点信息更新当前的在线节点信息,以及使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作。

在一些实施例中,使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作,进一步包括:

根据所述第二状态机返回的当前的在线节点信息确定所述第二节点对应的标志位;

响应于所述标志位为第一标志位,利用所述第一状态机将退出所述集群之前的数据恢复到重新加入所述集群的第二节点,并向所述第二状态机更新节点状态数组。

具体的,当第二节点再次加入时(集群不允许先退出集群的节点先加入集群),第二状态机即可接收集群检测到的节点加入事件,该节点加入事件对应的在线节点信息为01,而且在第二节点退出集群前第二状态机保存到节点状态数组对应的在线节点信息也为01,因此,在第一状态机对第二节点进行业务操作时,获取到的当前的在线节点信息为01,即第二节点对应的标志位为1。由于后退出节点上的数据为最新的,所以我们可以利用该set值进行判断,让1对应的节点执行恢复数据的流程。也即,节点在线信息变量set值对应值为1的节点就是该iogroup中最后退出集群的节点,因此我们可以利用该set值实现节点恢复时操作的判断。

在一些实施例中,还包括:

响应于所述第一节点重新加入所述集群,利用所述第一状态机和所述第二状态机接收集群检测到的节点加入事件,以使所述第二状态机根据所述第一状态机的请求利用更新后的所述节点状态数组对应的在线节点信息和所述节点加入事件对应的在线节点信息更新当前的在线节点信息,以及使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作。

在一些实施例中,使所述第一状态机根据所述第二状态机返回的当前的在线节点信息进行相应的业务操作,进一步包括:

根据所述第二状态机返回的当前的在线节点信息确定所述第一节点对应的标志位;

响应于所述标志位为第二标志位,利用所述第一状态机将重新加入所述集群的第一节点的数据丢弃以从所述第二节点中同步数据,并向所述第二状态机更新节点状态数组。

具体的,当检测到第一节点再次加入时,第二状态机即可接收集群检测到的第一节点加入集群时的节点加入事件,该节点加入事件对应的在线节点信息即为11,而且由于此时第二节点已经加入集群,第二状态机更新的node[]值对应的在线节点信息为01(即第二节点在线,第一节点不在线),因此,在第一状态机对第一节点进行业务操作时,获取到的当前的在线节点信息为01,即第一节点对应的标志位为0。由于第一节点对应的标志位为0,则执行丢弃数据的操作,并从对端(第二节点)同步到最新的信息及数据。

本发明提出的方案,新增了用于节点在线信息以及状态信息处理的第二状态机,包含了set及state等主要的变量参数以及第二状态机的触发方式与内部逻辑,同时设定了第一状态机与第二状态机的交互方式,并利用该处理方式实现节点恢复时流程的选择与处理,以更清晰的方式实现了业务模块对于各种节点事件的处理。

基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机设备501,包括:

至少一个处理器520;以及

存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种双控环境下节点信息处理方法的步骤。

基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种双控环境下节点信息处理方法的步骤。

最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。

此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。

上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1