一种服务控制方法及装置与流程

文档序号:12463903阅读:182来源:国知局
一种服务控制方法及装置与流程

本公开涉及集群技术领域,具体地,涉及一种服务控制方法及装置。



背景技术:

在计算机领域,可以通过集群技术,部署多个实现相同功能的服务,为用户提供不间断的稳定服务。具体地,多个实现相同功能的服务在执行任务时,需要满足以下两方面要求,才可保证所提供服务的稳定性:

1.同一时间内,集群中只有一个服务在执行任务;

2.执行任务的服务宕机时,及时由实现相同功能的其他服务继续运行,完成任务。

如何在实际使用过程中,确保上述两方面要求得以实现,是目前亟待解决的问题。



技术实现要素:

本公开的目的是提供一种服务控制方法及装置,有助于提高集群技术中提供服务的稳定性。

为了实现上述目的,第一方面,本公开提供一种服务控制方法,通过所述方法对实现相同功能的多个服务进行控制,所述方法包括:

所述多个服务与zookeeper连接,在所述zookeeper上创建持久节点,所述持久节点保存有执行任务的服务的身份标识;

所述多个服务与所述持久节点保存的身份标识相比对,将具有所述身份标识的服务,确定为所述执行任务的服务;

当所述持久节点失效之后,所述多个服务重新与所述zookeeper连接,创建新的持久节点。

可选地,所述持久节点失效的方式为:

在任务执行完毕后,所述执行任务的服务删除所述持久节点。

第二方面,本公开提供一种服务控制方法,所述方法包括:

当实现相同功能的多个服务与zookeeper连接时,所述zookeeper根据所述多个服务的请求创建持久节点,所述持久节点保存有执行任务的服务的身份标识。

可选地,创建所述持久节点之后,所述方法还包括:

所述zookeeper启动守护进程,所述守护进程用于在所述持久节点失效时,删除所述持久节点。

可选地,判断所述持久节点失效的方式为:

判断当前时间与所述持久节点的创建时间之间的差值,是否大于预设时长;

如果所述差值大于所述预设时长,则判定所述持久节点失效。

可选地,所述持久节点被删除之前,所述方法还包括:

所述zookeeper启动监听进程,所述监听进程用于在所述持久节点被删除后通知所述多个服务,以使所述多个服务重新与所述zookeeper连接,创建新的持久节点。

第三方面,本公开提供一种服务控制装置,所述装置用于对实现相同功能的多个服务进行控制,所述装置包括:

节点创建模块,用于控制所述多个服务与zookeeper连接,在所述zookeeper上创建持久节点,所述持久节点保存有执行任务的服务的身份标识;

标识比对模块,用于控制所述多个服务与所述持久节点保存的身份标识相比对,将具有所述身份标识的服务,确定为所述执行任务的服务;

节点重建模块,用于在所述持久节点失效之后,控制所述多个服务重新与所述zookeeper连接,创建新的持久节点。

可选地,所述装置还包括:

节点删除模块,用于在任务执行完毕后,控制所述执行任务的服务删除所述持久节点。

第四方面,本公开提供一种服务控制装置,所述装置包括:

节点创建模块,用于在实现相同功能的多个服务与zookeeper连接时,根据所述多个服务的请求创建持久节点,所述持久节点保存有执行任务的服务的身份标识。

可选地,所述装置还包括:

守护模块,用于在创建所述持久节点之后,启动守护进程,所述守护进程用于在所述持久节点失效时,删除所述持久节点。

可选地,所述守护模块,用于判断当前时间与所述持久节点的创建时间之间的差值,是否大于预设时长;如果所述差值大于所述预设时长,则判定所述持久节点失效。

可选地,所述装置还包括:

监听模块,用于在所述持久节点被删除之前,启动监听进程,所述监听进程用于在所述持久节点被删除后通知所述多个服务,以使所述多个服务重新与所述zookeeper连接,创建新的持久节点。

第五方面,本公开提供一种服务控制装置,所述装置用于对实现相同功能的多个服务进行控制,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

控制所述多个服务与zookeeper连接,在所述zookeeper上创建持久节点,所述持久节点保存有执行任务的服务的身份标识;

控制所述多个服务与所述持久节点保存的身份标识相比对,将具有所述身份标识的服务,确定为所述执行任务的服务;

当所述持久节点失效之后,控制所述多个服务重新与所述zookeeper连接,创建新的持久节点。

第六方面,本公开提供一种服务控制装置,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

当实现相同功能的多个服务与zookeeper连接时,根据所述多个服务的请求创建持久节点,所述持久节点保存有执行任务的服务的身份标识。

本公开服务控制方案,在需要执行任务时,实现相同功能的多个服务可以分别与zookeeper连接,尝试在zookeeper上创建持久节点。一方面,在持久节点中保存执行任务的服务的身份标识,便可确保同一时间内,集群中只有一个服务在执行任务;另一方面,在zookeeper上创建持久节点,则服务与zookeeper之间的连接断开后,持久节点亦不会消失,即持久节点内保存的身份标识不会发生变化,如此亦可确保同一时间内,集群中只有一个服务在执行任务。此外,本公开方案在持久节点失效之后,多个服务还可以重新与zookeeper连接,创建新的持久节点。如此,在执行任务的服务宕机,导致持久节点失效时,通过创建新的持久节点,还可以及时由实现相同功能的其他服务继续运行,完成任务。综上,利用本公开方案,可以有效保证所提供服务的稳定性。

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

附图说明

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

图1是本公开服务侧的服务控制方法的流程示意图;

图2是本公开zookeeper侧的服务控制方法的流程示意图;

图3是本公开服务控制装置的一种结构示意图;

图4是本公开服务控制装置的再一种结构示意图;

图5是本公开服务控制装置的另一种结构示意图。

具体实施方式

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

参见图1为本公开方案中服务侧的服务控制方法的流程示意图,可以通过该方法对实现相同功能的多个服务进行控制。该方法可以包括以下步骤:

步骤101,所述多个服务与zookeeper连接,在所述zookeeper上创建持久节点,所述持久节点保存有执行任务的服务的身份标识。

在进行集群部署时,可以部署多个实现相同功能的服务service,并为每个service设置唯一的身份标识。作为一种示例,多个服务可以部署在一台服务器上;或者,多个服务也可以部署在不同服务器上,本公开方案对此可不做具体限定。

需要执行任务时,多个服务可以与zookeeper连接,尝试在zookeeper上创建持久节点znode。作为一种示例,可以通过加锁机制,由多个服务抢占创建节点的权限,完成节点创建。需要说明的是,创建节点的服务会将本服务的身份标识写入节点中保存,以此确保同一时间,集群中只有一个服务在执行任务。

本公开方案中,持久节点指的是在节点创建后,该节点会一直存在,直到有删除操作来主动清除这个节点。也即,服务与zookeeper之间的连接断开并不会导致节点消失,节点不消失就意味着节点内保存的身份标识不会变,亦可确保同一时间,集群中只有一个服务在执行任务。

步骤102,所述多个服务与所述持久节点保存的身份标识相比对,将具有所述身份标识的服务,确定为所述执行任务的服务。

本公开方案中,多个服务可以通过比对身份标识的方式,确定本服务是否被选中执行任务。也就是说,每个与zookeeper连接的服务,均可判断本服务的身份标识是否与znode保存的身份标识相一致,如果一致,则可启动服务执行任务,即,多个服务中只有一个被选中去执行任务。

本公开方案中,通过比对服务的身份标识,确定执行任务的服务,还有助于提高服务器的资源利用率。也就是说,本公开方案以服务为最小粒度,则一台服务器上可以部署多个服务;若以服务器为最小粒度,则一台服务器上仅能部署一个服务,如此相较,本公开方案更有助于提高服务器的资源利用率。

需要说明的是,若任务执行完毕,且持久节点未消失(可以是未对持久节点执行删除操作;或者,可以是执行了删除操作,但删除失败),则在下次执行任务时,多个服务还可以通过比对身份标识,将上次选中的服务确定为本次执行任务的服务。

步骤103,当所述持久节点失效之后,所述多个服务重新与zookeeper连接,创建新的持久节点。

在实际应用过程中,可能存在持久节点失效的情况。作为一种示例,本公开方案的持久节点失效,至少可体现为以下两种情况:

情况一,在任务执行完毕后,所述执行任务的服务删除所述持久节点。也就是说,节点消失即代表着节点失效。对应于此,在下次执行任务时,多个服务可以重新连接zookeeper,抢占创建节点的权限,进而利用上述方法确定出本次执行任务的服务。

情况二,持久节点的存活时长超过了预设时长。对应于此,可参见下文图2处所做介绍,此处暂不详述。

作为一种示例,多个服务可以通过轮询方式,获知持久节点失效;或者,也可以按照图2所示方案,获知持久节点失效,本公开方案对此可不做具体限定。

参见图2为本公开方案中zookeeper侧的服务控制方法的流程示意图。

在本公开方案的实施例1中,步骤201,当实现相同功能的多个服务与zookeeper连接时,所述zookeeper根据所述多个服务的请求创建持久节点,所述持久节点保存有执行任务的服务的身份标识。

zookeeper可以与实现相同功能的多个服务连接,还可以根据抢占到节点创建权限的服务的请求,在zookeeper上创建一个持久节点znode,具体实现过程,可参照上文所做介绍,此处不再赘述。

在本公开方案的实施例2中,所述方法还包括:

步骤202,创建所述持久节点之后,所述zookeeper启动守护进程,所述守护进程用于在所述持久节点失效时,删除所述持久节点。

对应于上文所述节点失效的情况二,可以由守护进程判断znode的有效性,进而在节点失效时进行删除操作。

作为一种示例,持久节点的存活时长为当前时间T当前与持久节点的创建时间T创建之间的差值,T=T当前-T创建,对应于此,判断持久节点有效性的方式为:判断T是否大于预设时长;如果T大于预设时长,则可判定持久节点失效。

本公开方案中,持久节点的存活时长超过预设时长,可以是任务执行完毕,执行任务的服务未对节点执行删除操作;或者,任务执行完毕,执行任务的服务对节点执行了删除操作,但删除失败;或者,任务未执行完毕,执行任务的服务宕机。

可以理解地,如果因为执行任务的服务宕机,导致持久节点存活时长超过预设时长,通过守护进程删除持久节点后,可实现相同功能且未宕机的其他服务,便可通过创建新的持久节点的方式,继续执行任务,有助于提高任务执行的及时性。

在本公开方案的实施例3中,所述方法还包括:

步骤203,所述持久节点被删除之前,所述zookeeper启动监听进程,所述监听进程用于在所述持久节点被删除后通知所述多个服务,以使所述多个服务重新与所述zookeeper连接,创建新的持久节点。

如上文所做介绍,多个服务可以通过轮询方式,实时的或周期性的与zookeeper交互,获知持久节点的有效性。或者,也可以由监听进程在判定持久节点失效时,通知给多个服务,如此,不仅可以降低部署多个服务的服务器的CPU损耗,还可以节省服务与zookeeper之间的传输资源。作为一种示例,监听进程可以在监测到持久节点被删除时,判定持久节点失效。

作为一种示例,在持久节点被删除之前,启动监听检测,可以体现为:创建持久节点之后,即启动监听进程;或者,多个服务与持久节点保存的身份标识相比对之后,启动监听进程;或者,任务执行到指定进度时,启动监听进程。具体可根据实际应用需求而定,本公开方案对此可不做限定。

作为一种示例,监听进程判定持久节点失效后,可以通知给每个服务,即,不对服务进行区别处理,如此便可简化监听进程的编程逻辑;或者,监听进程判定持久节点失效后,可以仅通知给未执行任务的服务,本公开方案对此可不做具体限定。

参见图3为本公开服务控制装置的结构示意图。所述装置用于对实现相同功能的多个服务进行控制,该装置可以包括:

节点创建模块301,用于控制所述多个服务与zookeeper连接,在所述zookeeper上创建持久节点,所述持久节点保存有执行任务的服务的身份标识;

标识比对模块302,用于控制所述多个服务与所述持久节点保存的身份标识相比对,将具有所述身份标识的服务,确定为所述执行任务的服务;

节点重建模块303,用于在所述持久节点失效之后,控制所述多个服务重新与所述zookeeper连接,创建新的持久节点。

可选地,所述装置还包括:

节点删除模块,用于在任务执行完毕后,控制所述执行任务的服务删除所述持久节点。

参见图4为本公开服务控制装置的结构示意图。该装置可以包括:

节点创建模块401,用于在实现相同功能的多个服务与zookeeper连接时,根据所述多个服务的请求创建持久节点,所述持久节点保存有执行任务的服务的身份标识。

可选地,所述装置还包括:

守护模块402,用于在创建所述持久节点之后,启动守护进程,所述守护进程用于在所述持久节点失效时,删除所述持久节点。

可选地,所述守护模块,用于判断当前时间与所述持久节点的创建时间之间的差值,是否大于预设时长;如果所述差值大于所述预设时长,则判定所述持久节点失效。

可选地,所述装置还包括:

监听模块403,用于在所述持久节点被删除之前,启动监听进程,所述监听进程用于在所述持久节点被删除后通知所述多个服务,以使所述多个服务重新与所述zookeeper连接,创建新的持久节点。

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

参见图5为本公开服务控制装置500的结构示意图。例如,装置500可以被提供为一服务器,用于执行图1所示方法。或者,装置500可以被提供为zookeeper,用于执行图2所示方法。参照图5,装置500包括处理组件501,其进一步包括一个或多个处理器,以及由存储器502所代表的存储器资源,用于存储可由处理组件501的执行的指令,例如应用程序。存储器502中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件501被配置为执行指令。

装置500还可以包括一个电源组件503被配置为执行装置500的电源管理,一个有线或无线网络接口504被配置为将装置500连接到网络,和一个输入输出(I/O)接口505。装置500可以操作基于存储在存储器502的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。

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

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

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

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