节点标记方法及装置、节点启动方法及装置与流程

文档序号:12375762阅读:497来源:国知局
节点标记方法及装置、节点启动方法及装置与流程

本发明涉及分布式集群系统领域,具体地,涉及一种用于分布式集群系统的节点标记方法及装置,以及节点启动方法及装置。



背景技术:

分布式集群系统包括多个节点。在利用分布式集群系统处理任务时,需要对每个节点使用唯一标识(ID)进行标记,用于区分各个节点。在进行标记时,传统的标记方法是使用具有典型排他特征的信息来生成节点唯一ID,例如,ID为节点的IP地址、MAC地址等等。之后,利用该ID对各节点进行标记。由于在分布式环境中,各节点生存状态是无法预知的,任何一个节点都有可能出现离线情况。在节点离线时,系统需要对节点进行故障恢复操作。然而,使用传统的节点标记方法,有时会出现一些问题。

假设针对节点1,该节点1的ID为该节点1的IP地址,例如,10.4.44.2。该节点1正在执行任务1,则存在如下对应信息:任务1——节点1:10.4.44.2。当由于网络故障或者断电等原因造成节点1离线时,此时,系统会对节点1进行故障恢复操作。如图1所示,从发现节点1离线,到执行节点1的故障恢复操作,再到操作执行完成,通常会消耗一定的时间,例如,从时间T1到时间T2,再到时间T3。假设在从发现节点1离线到启动节点1的故障恢复这段期间,节点1又再次启动上线,并且在节点1的故障恢复操作完成之前(即,图1中时间T3之前),该节点1又被分配新任务,如任务2,则还存在如下对应信息:任务2——节点1:10.4.44.2。而此时,节点1的故障恢复操作仍在进行。由于任务1和任务2都对应于10.4.44.2这一节点ID,因此,当完成节点1的故障恢复操作时,任务1和任务2都被进行了故障恢复。这样,就会导致数据运行出错,原本能够顺利执行的任务未被正常执行。

为了解决这一问题,相关技术中采用如下技术方案:将节点的启动过程分为两个阶段,一个是预启动过程,一个是正式启动过程。当节点被预启动时,集群会首先查询该节点的状态,以判断该节点是否当前正处于故障恢复状态。如果不是,则该节点被正式启动。如果是,则延时等待,直到该节点的故障恢复状态结束为止,再正式启动该节点。

上述解决方案中,离线节点必须等候故障恢复结束后才能被启动。如果离线节点的故障恢复时间比较长,则该节点的等候时间也随之增长,导致该节点迟迟无法被启动。甚至,如果对离线节点执行故障恢复的节点也出现连续离线的情况,则会导致最初的离线节点的等候时间加倍增长,从而大大影响系统的处理效率。



技术实现要素:

本公开的目的是提供一种用于分布式集群系统的节点标记方法及装置,以及节点启动方法及装置,以解决现有技术的不足。

为了实现上述目的,本发明提供一种用于分布式集群系统的节点标记方法,包括:在接收到节点的启动请求时,生成第一启动标识,其中,所述第一启动标识用于表示所述节点的本次启动请求对应的启动信息;根据所述第一启动标识和所述节点的固有标识,生成标记信息,其中,所述标记信息包括所述第一启动标识和所述固有标识;以及,利用所述标记信息对所述节点进行标记。

可选地,所述标记信息还包括分隔符,所述分隔符用于将所述第一启动标识与所述固有标识隔开。

可选地,所述固有标识包括以下中的至少一者:所述节点的IP地址、所述节点的MAC地址、所述节点的主机名称。

可选地,所述方法还包括:检测所述节点是否离线;当检测到所述节点离线时,检测是否接收到所述节点的再次启动请求;当接收到所述节点的再次启动请求时,生成第二启动标识,其中,所述第二启动标识用于表示所述节点的再次启动请求对应的启动信息;利用所述第二启动标识替换所述节点的所述标记信息中的所述第一启动标识,得到更新后的标记信息;利用所述更新后的标记信息重新对所述节点进行标记。

本发明还提供一种用于分布式集群系统的节点启动方法,包括:检测是否接收到离线节点的启动请求,其中,所述离线节点标记有标记信息,所述标记信息包括所述离线节点的固有标识和第一启动标识,所述第一启动标识用于表示所述离线节点在离线前的最后一次启动请求对应的启动信息;在接收到所述离线节点的启动请求的情况下,根据所述离线节点的本次启动请求对应的启动信息,生成第二启动标识;利用所述第二启动标识替换所述标记信息中的所述第一启动标识,得到更新后的标记信息;利用所述更新后的标记信息对所述离线节点重新进行标记;响应于所述启动请求,启动所述离线节点。

可选地,所述标记信息还包括分隔符,所述分隔符用于将所述第一启动标识与所述固有标识隔开。

可选地,所述固有标识包括以下中的至少一者:所述离线节点的IP地址、所述离线节点的MAC地址、所述离线节点的主机名称。

本发明还提供一种用于分布式集群系统的节点标记装置,包括:第一启动标识生成模块,用于在节点启动时,生成第一启动标识,其中,所述第一启动标识用于表示所述节点本次启动时的启动信息;标记信息生成模块,用于根据所述第一启动标识和所述节点的固有标识,生成标记信息,其中,所述标记信息包括所述第一启动标识和所述固有标识;以及,第一标记模块,用于利用所述标记信息对所述节点进行标记。

可选地,所述装置还包括:离线检测模块,用于检测所述节点是否离线;第一启动检测模块,用于当检测到所述节点离线时,检测所述节点是否被重新启动;第二启动标识生成模块,用于当检测到所述节点被重新启动时,生成第二启动标识,其中,所述第二启动标识用于表示所述节点被重新启动时的启动信息;第一标记信息更新模块,用于利用所述第二启动标识替换所述节点的所述标记信息中的所述第一启动标识,得到更新后的标记信息;所述第一标记模块还用于利用所述更新后的标记信息重新对所述节点进行标记。

本发明还提供一种用于分布式集群系统的节点启动装置,包括:第二启动检测模块,用于检测是否接收到离线节点的启动请求,其中,所述离线节点标记有标记信息,所述标记信息包括所述离线节点的固有标识和第一启动标识,所述第一启动标识用于表示所述离线节点在离线前的最后一次启动请求对应的启动信息;第三启动标识生成模块,用于在接收到所述离线节点的启动请求的情况下,根据所述离线节点的本次启动请求对应的启动信息,生成第二启动标识;第二标记信息更新模块,用于利用所述第二启动标识替换所述标记信息中的所述第一启动标识,得到更新后的标记信息;第二标记模块,用于利用所述更新后的标记信息对所述离线节点重新进行标记;以及,启动模块,用于响应于所述启动请求,启动所述离线节点。

利用上述技术方案,在节点每次启动时,系统都会为该节点生成一与本次启动相对应的启动标识,并基于该启动标识和该节点的固有标识来生成标记信息,最后利用该标记信息对该节点进行标记。由于同一节点在每次启动时生成的启动标识不一样,因此,该节点的标记信息的生命周期与该节点一次启动到停止的时长相同,并且仅在本次生命周期内有效。这样,当节点离线,系统对该节点执行故障恢复时,由于节点每次启动时标记信息都不同,因此,故障恢复只会对上一次的现场进行清理,不会影响本次节点的启动及该节点执行新任务。换言之,节点启动时无需考虑集群是否正在对自己之前现场进行处理,也无需等待故障恢复结束,节点可以正常启动,并在启动后可立即接受任务。这样,不仅可以提高节点的恢复速度,并且还可以提升系统的处理效率。另外,通过为节点在不同生命周期动态配置不同的标记信息,不仅能够解决现有技术方案中的问题,并且相比于现有技术方案中要设置判断逻辑的做法,本公开提供的上述方案使得系统总体的设计难度大大降低,操作简单且设计巧妙,具有广泛的适用性。

本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:

图1是根据一示例性实施例提供的一种节点故障恢复过程随时间的状态变化图。

图2是根据一示例性实施例提供的一种用于分布式集群系统的节点标记方法的流程图。

图3是根据一示例性实施例提供的另一种用于分布式集群系统的节点标记方法的流程图。

图4是根据一示例性实施例提供的一种用于分布式集群系统的节点启动方法的流程图。

图5是根据一示例性实施例提供的一种用于分布式集群系统的节点标记装置的框图。

图6是根据一示例性实施例提供的一种用于分布式集群系统的节点启动装置的框图。

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

图2是根据一示例性实施例提供的一种用于分布式集群系统的节点标记方法的流程图。如图2所示,该方法可以包括以下步骤。

在步骤201中,在接收到节点的启动请求时,生成第一启动标识,其中,该第一启动标识用于表示该节点的本次启动请求对应的启动信息。

示例地,在分布式集群系统中可以包括多个节点。针对每个节点,系统都可以在接收到该节点的启动请求时,为该节点生成相对应的第一启动标识。第一启动标识用于表示该节点的本次启动请求对应的启动信息。

在本公开中,启动信息可以例如包括但不限于以下中的至少一者:启动时间、节点进程号、通用唯一标识符(Universally Unique Identifier,UUID)、随机值等等。以启动信息为启动时间为例,假设系统接收到节点1的启动请求的时间为2016年7月1日10点整,则系统可以将该时间作为上述启动时间,并基于该启动时间为该节点1生成第一启动标识,例如,节点1的第一启动标识为:2016/07/01/10:00:00。

在步骤202中,根据所述第一启动标识和所述节点的固有标识,生成标记信息,其中,该标记信息可以包括所述第一启动标识和所述固有标识。

在分布式集群系统中,每个节点具有相对应的固有标识,该固有标识可以为节点的具有典型排他特征的信息。示例地,固有标识可以包括但不限于以下中的至少一者:节点的IP地址,节点的MAC地址、节点的主机名称。针对不同的节点,其所对应的固有标识是唯一的。

系统可以根据在步骤201中为节点生成的第一启动标识,以及该节点的固有标识,来生成针对该节点的标记信息。示例地,该标记信息为这二者的组合,例如,固有标识+第一启动标识。

针对不同的节点,其固有标识不同,因此,各个标记信息也是唯一的。此外,由于标记信息中保留有节点的固有标识,因此,当系统执行与节点生命周期无关的操作,例如,获取节点的日志等操作时,系统仍可以通过标记信息中的固有标识部分来识别出节点,因此,不会对这些操作的执行造成影响。

为了便于系统更加方便快捷地获知节点的固有标识,以快速识别节点身份,可选地,标记信息中还可以包括分隔符,该分隔符可以用于将第一启动标识与固有标识隔开。示例地,标记信息为:固有标识+分隔符+第一启动标识。例如,假设固有标识为节点的IP地址,分隔符为“_”,第一启动标识为启动时间,则相应的标记信息为:IP地址_启动时间。

这样,系统在识别节点身份时,首先定位标记信息中的分隔符。当找到该分隔符后,便可以根据预先已知的固有标识与该分隔符之间的位置关系(例如,位于该分隔符之前,还是之后),快速地获取到节点的固有标识,以便快速识别该节点的身份。

针对同一节点,由于其每次的启动请求所对应的启动信息不同,因此,该节点在不同生命周期(节点的一次启动到停止)期间的第一启动标识不同。由此,在本公开中,节点的标记信息仅在该节点的本次生命周期期间有效,其会随着生命周期的不同而动态变化,并且每个标记信息也是唯一的。

在步骤203中,利用标记信息对该节点进行标记。此时,为该节点所标记的标记信息就作为该节点的ID。

图3是根据一示例性实施例提供的另一种用于分布式集群系统的节点标记方法的流程图。如图3所示,在图2所示的方法的基础上,该方法还可以包括以下步骤。

在步骤204中,检测该节点是否离线。

在步骤205中,当检测到该节点离线时,检测是否接收到该节点的再次启动请求。

示例地,在节点因网络故障或者断电等原因离线后又重新加入系统中时,节点会重新发送启动请求。这里,将重新发送的启动请求称为再次启动请求。这样,集群会接收到该节点的再次启动请求。

在步骤206中,当接收到该节点的再次启动请求时,生成第二启动标识,其中,该第二启动标识用于表示该节点的再次启动请求对应的启动信息。如何生成第二启动标识的方法同前面描述的如何生成第一启动标识的方法相类似,此处不再赘述。

在步骤207中,利用该第二启动标识替换该节点的标记信息中的第一启动标识,得到更新后的标记信息。

示例地,假设节点离线之前的标记信息为:固有标识+第一启动标识,则在步骤207后,更新后的标记信息为:固有标识+第二启动标识。再例如,假设节点离线之前的标记信息为:固有标识+分隔符+第一启动标识,则在步骤207后,更新后的标记信息为:固有标识+分隔符+第二启动标识。

在步骤208中,利用更新后的标记信息重新对节点进行标记。此时,为该节点所重新标记的标记信息就作为该节点的新的ID。

图4是根据一示例性实施例提供的一种用于分布式集群系统的节点启动方法的流程图。如图4所示,该方法可以包括以下步骤。

在步骤401中,检测是否接收到离线节点的启动请求,其中,该离线节点标记有标记信息,该标记信息可以包括该离线节点的固有标识和第一启动标识,该第一启动标识用于表示该离线节点在离线前的最后一次启动请求对应的启动信息。

为了便于系统更方便、快速地识别出节点身份,可选地,标记信息还包括分隔符,该分隔符用于将第一启动标识与固有标识隔开。

示例地,固有标识可以例如包括但不限于以下中的至少一者:所述离线节点的IP地址、所述离线节点的MAC地址、所述离线节点的主机名称。另外,启动信息可以例如包括但不限于以下中的至少一者:启动时间、节点进程号、UUID、随机值等等。

假设针对节点1,其在一启动期间标记有一标记信息,该标记信息中包括该节点1的固有标识和第一启动标识,该第一启动标识表示该节点1在本次启动时对应的启动信息。一段时间后,节点1因故障而离线,此时,节点1变为离线节点。系统可以实时检测是否接收到该离线节点的启动请求,也就是,系统可以实时检测该离线节点是否意图再次启动。

在步骤402中,在接收到该离线节点的启动请求的情况下,根据该离线节点的本次启动请求对应的启动信息,生成第二启动标识。

仍以上述示例为例,假设节点1在离线后又重新发出启动请求,系统在接收到这一启动请求后,可以根据该启动请求对应的启动信息,生成第二启动标识。

在步骤403中,利用该第二启动标识替换该标记信息中的第一启动标识,得到更新后的标记信息。

在步骤404中,利用更新后的标记信息对该离线节点重新进行标记。

在步骤405中,响应于启动请求,启动所述离线节点。

综上所述,利用上述技术方案,在节点每次启动时,系统都会为该节点生成一与本次启动相对应的启动标识,并基于该启动标识和该节点的固有标识来生成标记信息,并利用该标记信息对该节点进行标记。由于同一节点在每次启动时生成的启动标识不一样,因此,该节点的标记信息的生命周期与该节点一次启动到停止的时长相同,并且仅在本次生命周期内有效。这样,当节点离线,系统对该节点执行故障恢复时,由于节点每次启动时标记信息都不同,因此,故障恢复只会对上一次的现场进行清理,不会影响本次节点的启动及该节点执行新任务。换言之,节点启动时无需考虑集群是否正在对自己之前现场进行处理,也无需等待故障恢复结束,节点可以正常启动,并在启动后可立即接受任务。这样,不仅可以提高节点的恢复速度,并且还可以提升系统的处理效率。另外,通过为节点在不同生命周期动态配置不同的标记信息,不仅能够解决现有技术方案中的问题,并且相比于现有技术方案中要设置判断逻辑的做法,本公开提供的上述方案使得系统总体的设计难度大大降低,操作简单且设计巧妙,具有广泛的适用性。

图5是根据一示例性实施例提供的一种用于分布式集群系统的节点标记装置500的框图。如图5所示,该装置500可以包括:第一启动标识生成模块501,用于在节点启动时,生成第一启动标识,其中,所述第一启动标识用于表示所述节点本次启动时的启动信息;标记信息生成模块502,用于根据所述第一启动标识和所述节点的固有标识,生成标记信息,其中,所述标记信息包括所述第一启动标识和所述固有标识;以及第一标记模块503,用于利用所述标记信息对所述节点进行标记。

可选地,所述装置500还可以包括:离线检测模块,用于检测所述节点是否离线;第一启动检测模块,用于当检测到所述节点离线时,检测所述节点是否被重新启动;第二启动标识生成模块,用于当检测到所述节点被重新启动时,生成第二启动标识,其中,所述第二启动标识用于表示所述节点被重新启动时的启动信息;第一标记信息更新模块,用于利用所述第二启动标识替换所述节点的所述标记信息中的所述第一启动标识,得到更新后的标记信息;所述第一标记模块还用于利用所述更新后的标记信息重新对所述节点进行标记。

图6是根据一示例性实施例提供的一种用于分布式集群系统的节点启动装置600的框图。如图6所示,该装置600可以包括:第二启动检测模块601,用于检测是否接收到离线节点的启动请求,其中,所述离线节点标记有标记信息,所述标记信息包括所述离线节点的固有标识和第一启动标识,所述第一启动标识用于表示所述离线节点在离线前的最后一次启动请求对应的启动信息;第三启动标识生成模块602,用于在接收到所述离线节点的启动请求的情况下,根据所述离线节点的本次启动请求对应的启动信息,生成第二启动标识;第二标记信息更新模块603,用于利用所述第二启动标识替换所述标记信息中的所述第一启动标识,得到更新后的标记信息;第二标记模块604,用于利用所述更新后的标记信息对所述离线节点重新进行标记;以及,启动模块605,用于响应于所述启动请求,启动所述离线节点。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。

此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

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