CN107360208A - 推进任务状态的方法、系统、存储介质及服务集群 - Google Patents

推进任务状态的方法、系统、存储介质及服务集群 Download PDF

Info

Publication number
CN107360208A
CN107360208A CN201710392640.5A CN201710392640A CN107360208A CN 107360208 A CN107360208 A CN 107360208A CN 201710392640 A CN201710392640 A CN 201710392640A CN 107360208 A CN107360208 A CN 107360208A
Authority
CN
China
Prior art keywords
process instance
device process
task
state device
zookeeper
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.)
Granted
Application number
CN201710392640.5A
Other languages
English (en)
Other versions
CN107360208B (zh
Inventor
朱旋
陈少杰
张文明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Avic Dingcheng Technology Co ltd
Guangdong Gaohang Intellectual Property Operation Co ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710392640.5A priority Critical patent/CN107360208B/zh
Publication of CN107360208A publication Critical patent/CN107360208A/zh
Application granted granted Critical
Publication of CN107360208B publication Critical patent/CN107360208B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer

Abstract

本发明公开了一种基于zookeeper推进任务状态的方法、系统、存储介质及服务集群,该方法应用于包括M台物理机的系统中,在M台物理机上各自启动有针对同一目标任务的状态器进程实例,将M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,主状态器进程实例不可用时,从主状态器进程实例之外的M‑1个状态器进程实例中确定出新的主状态器进程实例;通过新的主状态器进程实例,从公共zookeeper目录中读取目标任务当前所处的任务状态,其中,公共zookeeper目录设置在不同于M台物理机的另一设备上;通过新的主状态器进程实例,将目标任务从当前所处的任务状态推进至下一任务状态。本发明解决了现有技术对任务状态推进不稳定的技术问题。

Description

推进任务状态的方法、系统、存储介质及服务集群
技术领域
本发明涉及互联网技术领域,尤其涉及一种推进任务状态的方法、系统、存储介质及服务集群。
背景技术
一般情况下,我们的一个业务逻辑可以抽象成一个任务(job),例如统计房间数据、一些报表等,他们在执行过程中会经历一些状态,且在每一个状态下都会执行该状态下的子逻辑、然后设置job状态到下一个状态,直到job执行完毕,用来促进这个状态变化的程序就称为状态机。现存的一些任务状态机的都是单进程的,每当该状态机需要重启、物理机需要重启或者机器出现故障的时候,状态机就不能够继续支撑job的状态推进,也就会造成job停止执行,导致对job的状态推进不稳定。
发明内容
本发明实施例通过提供一种推进任务状态的方法、系统、存储介质及服务集群,解决了现有技术对任务状态推进不稳定的技术问题。
第一方面,本发明实施例提供了一种基于zookeeper推进任务状态的方法,其特征在于,应用于包括M台物理机的系统中,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,所述方法包括:
将所述M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例;
在所述主状态器进程实例不可用时,从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;
通过所述新的主状态器进程实例,从公共zookeeper目录中读取所述目标任务当前所处的任务状态,其中,所述公共zookeeper目录设置在不同于所述M台物理机的另一设备上;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
可选的,在所述将所述目标任务从当前所处的任务状态推进至下一任务状态之后,所述方法还包括:
通过所述新的主状态器进程实例,将所述目标任务的推进之后的任务状态,同步给所述新的主状态器进程实例之外的各个可用的状态器进程实例。
可选的,所述从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例,包括:
在所述主状态器进程实例不可用时,通过所述主状态器进程实例之外的M-1个状态器进程实例,删除所述主状态器进程实例在所述公共zookeeper目录下已经创建的原加锁子目录;
通过所述主状态器进程实例之外的M-1个状态器进程实例,在所述公共zookeeper目录下创建新的加锁子目录;
将重新创建所述加锁子目录成功的一个状态器进程实例作为新的主状态器进程实例;
所述新的主状态器进程实例之外的M-1个状态器进程实例,各自在所述公共zookeeper目录下注册针对新的加锁子目录的目录删除事件。
可选的,如果在所述公共zookeeper目录下存在与N个任务状态对应的N个状态目录,在所述M个状态器进程实例启动时,通过所述M个状态器进程实例各自在所述N个状态目录下注册与N个任务状态对应的监听器。
可选的,所述通过所述主状态器进程实例之外的M-1个状态器进程实例,在所述公共zookeeper目录下创建新的加锁子目录,包括:
激活所述主状态器进程实例之外的M-1个状态器进程实例在所述目标任务当前所在的状态目录下的监听器;
所述主状态器进程实例之外的M-1个状态器进程实例的激活后的监听器,在所述公共zookeeper目录下创建所述新的加锁子目录。
可选的,所述通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态,包括:
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态对应的状态目录中删除;
通过所述新的主状态器进程实例,将所述目标任务添加到下一任务状态对应的状态目录中,以推进所述目标任务至下一任务状态。
第二方面,本发明实施例提供了一种基于zookeeper推进任务状态的方法,应用于第一备用物理机中,所述第一备用物理机与另外K台物理机交互,K为正整数,所述第一备用物理机和所述K台物理机上各自启动有针对同一目标任务的状态器进程实例,将所述K台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,所述方法包括:
在所述主状态器进程实例不可用时,在公共zookeeper目录下重新创建所述加锁子目录,其中,所述公共zookeeper目录设置在不同于所述第一备用物理机与所述K台物理机的另一设备上,所述目标任务的状态存储在所述公共zookeeper目录下;
如果所述加锁子目录创建成功,将所述第一备用物理机上的状态器进程实例确定为新的主状态器进程实例;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
第三方面,本发明实施例提供了一种基于zookeeper推进任务状态的系统,该系统包括M台物理机,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,所述系统包括:
设置单元,用于将所述M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例;
选取单元,用于在所述主状态器进程实例不可用时,从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;
读取单元,用于通过所述新的主状态器进程实例,从公共zookeeper目录中读取所述目标任务当前所处的任务状态,其中,所述公共zookeeper目录设置在不同于所述M台物理机的另一设备上;
推进单元,用于通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
第四方面,本发明实施例提供了一种计算机服务集群,该集群包括M台物理机,M台物理机上均设置有控制器,各个控制器均包括存储器和处理器,其中,所述存储器存储有计算机程序,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,将所述M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,M为大于2的整数,所述程序被处理器执行时能够实现以下步骤:
在所述主状态器进程实例不可用时,从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;
通过所述新的主状态器进程实例,从公共zookeeper目录中读取所述目标任务当前所处的任务状态,其中,所述公共zookeeper目录设置在不同于所述M台物理机的另一设备上;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
第五方面,本发明实施例提供了一种计算机可读存储介质,应用于第一备用物理机中,所述第一备用物理机与另外K台物理机交互,K为正整数,所述第一备用物理机和所述K台物理机上各自启动有针对同一目标任务的状态器进程实例,将所述K台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,其介质上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
在所述主状态器进程实例不可用时,在公共zookeeper目录下重新创建所述加锁子目录,其中,所述公共zookeeper目录设置在不同于所述第一备用物理机与所述K台物理机的另一设备上,所述目标任务的状态存储在所述公共zookeeper目录下;
如果所述加锁子目录创建成功,将所述第一备用物理机上的状态器进程实例确定为新的主状态器进程实例;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
本发明实施例提供的一种或多种技术方案,至少实现了如下技术效果或优点:
由于公共zookeeper目录设置在不同于M台物理机的另一设备上,因此,在主状态器进程实例不可用仍然能够得到目标任务当前所处的任务状态,保证了任务的信息可靠性、持久化,再由新的主状态器进程实例对目标任务从当前所处的任务状态进行继续推进,因此不会因为单个状态器进程实例不可用而不能够继续支撑目标任务的状态推进,从而保证了任务状态变迁的稳定性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于zookeeper推进任务状态的方法的流程图;
图2为本发明实施例提供的基于zookeeper推进任务状态的方法在备用物理机侧的流程图;
图3为本发明实施例提供的基于zookeeper推进任务状态的装置的结构示意图;
图4为本发明实施例提供的基于zookeeper推进任务状态的系统的结构示意图。
具体实施方式
本发明实施例通过提供一种推进任务状态的方法、系统、存储介质及服务集群,解决了现有技术对任务状态推进不稳定的技术问题,本发明的总体思路如下:
在主状态器进程实例不可用时,从主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;通过新的主状态器进程实例,从公共zookeeper目录中读取目标任务当前所处的任务状态,其中,公共zookeeper目录设置在不同于M台物理机的另一设备上;通过新的主状态器进程实例,将目标任务从当前所处的任务状态推进至下一任务状态。
通过上述技术方案,由于公共zookeeper目录设置在不同于M台物理机的另一设备上,因此,在主状态器进程实例不可用仍然能够得到目标任务当前所处的状态,保证了任务的信息可靠性、持久化,再由新的主状态器进程实例对目标任务从所处的状态进行继续推进,因此不会因为单个状态器进程实例不可用而不能够继续支撑目标任务的状态推进,从而保证了任务状态变迁的稳定性。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
本发明实施例提供的一种基于zookeeper推进任务状态的方法,应用于设置有M台物理机的系统中,在M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,在M台物理机中的其中一台物理机上的状态器进程实例当前为主状态器进程实例。在不同于M台物理机的另一设备上为存储目标任务对应的数据的位置:公共zookeeper目录。
需要说明的是,ZooKeeper是一个分布式服务软件,具体为分布式的、开放源码的分布式应用程序协调服务,为分布式应用提供一致性服务的软件。
在本发明实施例中,物理机可以设置有3台,或者4台,或者5台,在每台物理机上启动有针对同一目标任务的状态器进程实例。
参考图1所示,本发明实施例提供的基于zookeeper推进任务状态的方法包括如下步骤:
首先执行S101、将M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例
在S101之后,接着执行S102、在主状态器进程实例不可用时,从主状态器进程之外的M-1个状态器进程实例中确定出新的主状态器进程实例。
相对于确定出来的新的主状态器进程实例,不可用的主状态器进程实例为原主状态器进程实例,原主状态器进程实例为从M个状态器进程实例中确定出,在公共zookeeper目录下创建有一个master目录节点,M个状态器进程实例在启动时均在同一master目录下创建加锁子目录(比如,加锁子目录可以命名为/master/lock)。如果一个状态器进程实例创建加锁子目录成功,则该状态器进程实例被确定为主状态器进程实例,主状态器进程实例之外的M-1个状态器进程实例注册针对主状态器进程实例已经创建的原加锁子目录的目录删除事件。
主状态器进程实例不可用的情况包括:主状态器进程实例需要重启,或者主状态器进程实例所在的物理机需要重启或者出现故障时。
在本发明实施例中从主状态器进程之外的M-1个状态器进程实例中确定出新的主状态器进程实例,通过如下步骤S1021~S1024实现:
步骤S1021、在主状态器进程实例不可用时,通过主状态器进程实例之外的M-1个状态器进程实例,删除主状态器进程实例在公共zookeeper目录下已经创建的原加锁子目录。
具体的,通过主状态器进程之外的M-1个状态器进程实例的目录删除事件,删除主状态器进程实例在公共zookeeper目录下已经创建的原加锁子目录。
步骤S1022:通过所述主状态器进程实例之外的M-1个状态器进程实例,在公共zookeeper目录下创建新的加锁子目录。
步骤S1023:将重新创建加锁子目录成功的一个状态器进程实例作为新的主状态器进程实例。
步骤S1024:新的主状态器进程实例之外的M-1个状态器进程实例,各自在公共zookeeper目录下注册针对新的加锁子目录的目录删除事件。
进一步的,在公共zookeeper目录下存在与N个任务状态对应的N个状态目录。为了确定出新的主状态器进程实例。在执行S101之前,还包括:在M个状态器进程实例启动时,M个状态器进程实例各自在N个状态目录下注册与任务状态对应的监听器。则每个状态器进程实例都在N个状态目录下注册与任务状态对应的监听器,则一个状态器进程实例会注册N个监听器,每个状态目录下注册的监听器不同。
以目标任务的任务状态包括触发状态、准备中状态、执行中状态、成功状态、失败状态、取消状态为例,对注册的与任务状态对应的监听器进行举例说明:在触发状态对应的目录下注册监听器TriggedMonitor,在准备中状态对应的目录下注册监听器PreparingMonitor,在执行中状态对应的目录下注册监听器RunningMonitor,在成功状态对应的目录下注册监听器SucceedMonitor;在失败状态对应的目录下注册监听器FailedMonitor;在取消状态对应的目录下注册监听器CancelledMonitor。
对应的,基于注册的与任务状态对应的各个监听器,实现通过主状态器进程实例之外的M-1个状态器进程实例,在公共zookeeper目录下创建新的加锁子目录的过程如下:
首先,激活主状态器进程实例之外的M-1个状态器进程实例在目标任务当前所在的状态目录下的监听器;
接着,主状态器进程实例之外的M-1个状态器进程实例的激活后的监听器,在公共zookeeper目录下创建新的加锁子目录。
在执行S102之后,接着执行S103:通过新的主状态器进程实例,从公共zookeeper目录中读取目标任务当前所处的任务状态,其中,公共zookeeper目录设置在不同于M台物理机的另一设备上。
需要说明的是,公共zookeeper目录为zookeeper软件在不同于M台物理机的另一设备上创建的公共位置,目标任务在不同的时间段,处于公共zookeeper目录下的N个状态目录中的其中一个状态目录中。
在具体实施过程中,N个任务状态包括如下:1、触发状态:表征目标任务在当前时间被触发,在触发状态进行检查目标任务是否满足执行条件;2、准备中状态:用于目标任务执行前的准备工作动作,在准备中状态解析目标任务执行所需要的参数,确定目标任务的执行节点;3、执行中状态:表征目标任务正在执行中;4、成功状态:表征目标任务正常执行完毕;5、失败状态:表征目标任务执行出错,采取重试机制。6、取消状态:表征目标任务被取消。
由于可以在zookeeper软件中,以目录的形式存储任务。具体的,设置N个任务状态与N个状态目录一一对应,各个任务存储在与当前所处的任务状态对应的状态目录中。
则,具体的,如果目标任务处于触发状态,则存储在触发状态对应的目录下;如果目标任务处于准备中状态,则将目标任务存储在准备中状态对应的目录下;如果目标任务处于执行中状态,则存储在执行中状态对应的目录下;如果目标任务处于成功状态,则存储在成功对应的目录下;如果目标任务处于失败状态,则存储在失败状态对应的目录下;如果目标任务处于取消状态,则存储在取消状态对应的目录下。
参考下表1,对N个状态目录形成的目录结构进行举例来讲:
表1.状态目录表
任务状态 状态目录
触发状态 /job/trigged
准备中状态 /job/preparing
执行中状态 /job/running
成功状态 /job/succeed
失败状态 /job/failed
取消状态 /job/cancelled
参考表1所示,所有处于触发状态的任务存放在/job/trigged目录下,所有处于准备中状态的任务存放在/job/preparing目录下,所有处于执行中状态的任务存放在/job/running目录中,所有处于成功状态的任务存放在/job/succeed目录下,所有处于失败状态的任务存放在/job/failed目录下,所有处于取消状态的任务存放在/job/cancelled目录下。
基于本实施例提供的表1所示的目录结构,则目标任务被触发处于触发状态时,首先将目标任务存放在/job/trigged目录下。
接着,如果目标任务的任务状态从触发状态推进至准备中状态,则从/job/trigged目录下删除目标任务,并存储目标任务至/job/preparing目录;否则,目标任务的任务状态从触发状态推进至失败状态,则从/job/trigged目录下删除目标任务,并存储目标任务至/job/cancelled目录。
再接着,如果目标任务的任务状态从准备中状态推进至执行中状态,则从/job/preparing目录下删除目标任务,并存储目标任务至/job/running目录;否则,目标任务的任务状态从准备中状态推进至失败状态,则从/job/preparing目录下删除目标任务,并存储目标任务至/job/failed目录。
最后,如果目标任务的任务状态从执行中状态推进至成功状态,则从/job/running目录删除目标任务,并存储目标任务至/job/succeed目录;否则,则将目标任务的任务状态从执行中状态推进至取消状态,需要则从/job/running目录删除目标任务,并存储目标任务至/job/cancelled目录。还有可能将目标任务的任务状态从执行中状态推进至失败状态,需要则从/job/running目录删除目标任务,并存储目标任务至/job/failed目录。
基于本实施例,由于目标任务的信息存储到了一个公共位置,则各个状态器进程实例不需要各自维护同一目标任务的信息,从而各个状态器进程实例的维护之间达到能够任务状态的同步,即使主状态器进程实例不可用,也能够从公共的位置(公共zookeeper目录)得到目标任务的任务状态,由于在zookeeper软件中以目录的形式来持久化的存储数据,故可保证了存储任务状态的一致性,持久性,因此,得到任务状态更可靠。
在S103之后,接着执行S104:通过新的主状态器进程实例,将目标任务从当前所处的任务状态推进至下一任务状态。
在具体实施过程中,目标任务当前所处的任务状态为触发状态、准备中状态、执行中状态、成功状态、失败状态、取消状态中的一种。
具体的,将目标任务从当前所处的任务状态推进至下一任务状态,通过如下步骤S1041~S1042实现:
步骤S1041:通过新的主状态器进程实例,将目标任务从当前所处的任务状态对应的状态目录中删除;
步骤S1042:通过新的主状态器进程实例,将目标任务添加到下一任务状态对应的状态目录中,以推进目标任务至下一任务状态。
更具体来讲,注册的与N任务状态对应的N个监听器,还用于实现将目标任务从当前所处的任务状态推进至下一任务状态,实现过程如下。
N个监听器都是父类NodeMonitor的子类,N个监听器各自实现了父类的nodeAddEvent方法,N个监听器对应监听N个状态目录中各自的添加事件。当目标任务被触发,添加目标任务到触发状态对应的目录中,此时触发状态对应的目录下的添加事件被触发,触发状态对应的监听器被激活,调用触发状态对应的监听器内的nodeAddAction函数,其中,nodeAddEvent作为参数传递给nodeAddAction函数,getEventSource方法获取到目标任务,从而将目标任务的任务状态推进至触发状态。
在具体实施过程中,推进任务状态至其他任务状态的过程与推进至触发状态的方式相似,为了说明书的简洁,本文不再赘述。
在执行S104之后,本发明实施例提供的技术方案还包括:基于新的主状态器进程实例将推进之后的任务状态同步给新的主状态器进程实例之外的各个可用的状态器进程实例。
下面,从当目标任务被触发开始,对本发明实施例提供的基于zookeeper推进任务状态的方法实现推进任务状态的过程进行更详细的描述:
步骤1:执行添加事件,以添加目标任务到触发状态对应的目录中。
步骤2:通过M个状态器进程实例各自在触发状态对应的监听器,各自判断M个状态器进程实例是否为主状态器进程实例,不是主状态器进程实例的状态器进程实例忽略该添加目标任务到触发状态对应的目录的事件,主状态器进程实例通过nodeAddEvent的getEventSource方法获取到目标任务的信息。
步骤3:主状态器进程实例将目标任务的状态设置为触发状态;
步骤4:主状态器进程实例检查目标任务是否满足执行条件,如果满足,将目标任务从触发状态对应的目录中删除,再将目标任务添加到与准备状态对应的状态目录中,此时,目标任务从触发状态到准备状态的变迁就完成了。
步骤5:准备状态对应的状态目录中新增了一个节点,故M个状态器进程实例在准备状态对应的状态目录下各自注册的监听器均被激活,以再次进行各自判断M个状态器进程实例是否为主状态器进程实例,由再次判断出的主状态器进程实例(实际中,可能为上一次完成推进至准备中状态的主状态器进程实例,也可能为重新确定出的新的主状态器进程实例)将目标任务从准备中状态推进至执行中状态,且进行执行中状态对应的逻辑。最后,将目标任务从准备状态对应的状态目录中删除,再将目标任务添加到执行中状态对应的状态目录中,至此完成了目标任务从准备状态到执行中状态的变迁。目标任务的任务状态变迁继续推进,直到目标任务终止(成功或取消)。这样就通过zookeeper软件的事件特性来完成任务状态推进的驱动。
基于同一发明构思,本发明实施例提供了一种基于zookeeper推进任务状态的方法,应用于第一备用物理机中,所述第一备用物理机与另外K台物理机交互,所述第一备用物理机和所述K台物理机上各自启动有针对同一目标任务的状态器进程实例,将所述K台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,参考图2所示,所述方法包括:
S201:在所述主状态器进程实例不可用时,在公共zookeeper目录下重新创建所述加锁子目录,其中,所述公共zookeeper目录设置在不同于所述第一备用物理机与所述K台物理机的另一设备上,所述目标任务的状态存储在所述公共zookeeper目录下;
S202:如果所述加锁子目录创建成功,将所述第一备用物理机上的状态器进程实例确定为新的主状态器进程实例;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
进一步的,在本发明实施例提供的技术方案中,在之后S202之后还包括:
通过所述新的主状态器进程实例,将所述目标任务的推进之后的任务状态,同步给所述新的主状态器进程实例之外的各个可用的状态器进程实例。
在本发明实施例提供的具体技术方案中:在所述主状态器进程实例不可用时,删除所述主状态器进程实例在所述公共zookeeper目录下已经创建的原加锁子目录;在所述公共zookeeper目录下创建新的加锁子目录;如果创建所述加锁子目录成功,确定为新的主状态器进程实例,否则在所述公共zookeeper目录下注册针对新的加锁子目录的目录删除事件。
在本发明实施例提供的具体技术方案中:如果在所述公共zookeeper目录下存在与N个任务状态对应的N个状态目录,在所述新的状态器进程实例启动时,通过所述新的状态器进程实例在所述N个状态目录下注册与N个任务状态对应的监听器。
在本发明实施例提供的具体技术方案中,在所述公共zookeeper目录下创建新的加锁子目录,包括:激活在所述第一备用物理机上启动的状态器进程实例在目标任务当前所在的状态目录下的监听器;激活后的监听器,在所述公共zookeeper目录下创建所述新的加锁子目录。
在本发明实施例提供的具体技术方案中,步骤S203包括:通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态对应的状态目录中删除;通过所述新的主状态器进程实例,将所述目标任务添加到下一任务状态对应的状态目录中,以推进目标任务至下一任务状态。
本发明实施例中执行的方法步骤为前述应用于系统的基于zookeeper推进任务状态的方法中以一个备用的物理机侧的执行过程,本领域技术人员基于前述应用于系统的基于zookeeper推进任务状态的方法,可以知晓本实施例的实施细节,为了说明书的简洁,本文不在赘述。
基于同一发明构思,本发明实施例提供了一种基于zookeeper推进任务状态的系统,该系统包括M台物理机,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,参考图3所示,所述系统包括:
设置单元301,用于将M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例;
选取单元302,用于在所述主状态器进程实例不可用时,从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;
读取单元303,用于通过所述新的主状态器进程实例,从公共zookeeper目录中读取所述目标任务当前所处的任务状态,其中,所述公共zookeeper目录设置在不同于所述M台物理机的另一设备上;
推进单元304,用于通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
在本发明实施例的进一步技术方案,所述系统还包括:
同步单元,用于通过所述新的主状态器进程实例,将所述目标任务的推进之后的任务状态,同步给所述新的主状态器进程实例之外的各个可用的状态器进程实例。
在本发明实施例的进一步技术方案,所述选取单元302具体用于:
在所述主状态器进程实例不可用时,通过所述主状态器进程实例之外的M-1个状态器进程实例,删除所述主状态器进程实例在所述公共zookeeper目录下已经创建的原加锁子目录;
通过所述主状态器进程实例之外的M-1个状态器进程实例,在所述公共zookeeper目录下创建新的加锁子目录;
将重新创建所述加锁子目录成功的一个状态器进程实例作为新的主状态器进程实例;
所述新的主状态器进程实例之外的M-1个状态器进程实例,各自在所述公共zookeeper目录下注册针对新的加锁子目录的目录删除事件。
在本发明实施例的进一步技术方案,如果在所述公共zookeeper目录下存在与N个任务状态对应的N个状态目录,N为正整数,在所述M个状态器进程实例启动时,通过所述M个状态器进程实例各自在所述N个状态目录下注册与N个任务状态对应的监听器。
在本发明实施例一具体技术方案,所述选取单元302具体用于:
激活所述主状态器进程实例之外的M-1个状态器进程实例在所述目标任务当前所在的状态目录下的监听器;
所述主状态器进程实例之外的M-1个状态器进程实例的激活后的监听器,在所述公共zookeeper目录下创建所述新的加锁子目录。
在本发明实施例的进一步技术方案,所述推进单元304具体用于:
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态对应的状态目录中删除;
通过所述新的主状态器进程实例,将所述目标任务添加到下一任务状态对应的状态目录中,以推进所述目标任务至下一任务状态。
本发明实施例提供的系统为实施前述应用于系统中的基于zookeeper推进任务状态的方法,基于前述应用于系统的基于zookeeper推进任务状态的方法实施例,本领域技术人员可以知晓本实施例的实施细节,为了说明书的简洁,本文不在赘述。
基于同一发明构思,本发明实施例提供一种计算机服务集群,参考图4所示,该集群包括M台物理机,M台物理机上均设置有控制器,各个控制器均包括存储器和处理器,其中,所述存储器存储有计算机程序,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,所述程序被处理器执行时能够实现前述的应用于系统的基于zookeeper推进任务状态的方法实施例中的各个步骤。
本发明实施例提供的计算机服务集群用于实施前述应用于系统的基于zookeeper推进任务状态的方法,基于前述应用于系统的基于zookeeper推进任务状态的方法实施例,本领域技术人员可以知晓本实施例的实施细节,为了说明书的简洁,本文不在赘述。
基于同一发明构思,本发明实施例提供一种计算机可读存储介质,应用于第一备用物理机中,所述第一备用物理机与另外K台物理机交互,所述第一备用物理机和所述K台物理机上各自启动有针对同一目标任务的状态器进程实例,将所述K台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,其介质上存储有计算机程序,该程序被处理器执行时实现前述应用于第一备用物理机中的基于zookeeper推进任务状态的方法实施例的各个步骤。
本发明实施例中的存储介质用于存储实施前述应用于第一备用物理机中的基于zookeeper推进任务状态的方法,基于前述应用于第一备用物理机中的基于zookeeper推进任务状态的方法实施例,本领域技术人员可以知晓本实施例的实施细节,为了说明书的简洁,本文不在赘述。
本发明实施例提供的上述技术方案,由于公共zookeeper目录设置在不同于M台物理机的另一设备上,因此,在主状态器进程实例不可用仍然能够得到目标任务当前所处的任务状态,保证了任务的信息可靠性、持久化,再由新的主状态器进程实例对目标任务从当前所处的任务状态进行继续推进,因此不会因为单个状态器进程实例不可用而不能够继续支撑目标任务的状态推进,从而保证了任务状态变迁的稳定性,
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种基于分布式服务软件zookeeper推进任务状态的方法,应用于包括M台物理机的系统中,其特征在于,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,所述方法包括:
将所述M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例;
在所述主状态器进程实例不可用时,从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;
通过所述新的主状态器进程实例,从公共zookeeper目录中读取所述目标任务当前所处的任务状态,其中,所述公共zookeeper目录设置在不同于所述M台物理机的另一设备上;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
2.如权利要求1所述的基于zookeeper推进任务状态的方法,其特征在于,在所述将所述目标任务从当前所处的任务状态推进至下一任务状态之后,所述方法还包括:
通过所述新的主状态器进程实例,将所述目标任务的推进之后的任务状态,同步给所述新的主状态器进程实例之外的各个可用的状态器进程实例。
3.如权利要求1所述的基于zookeeper推进任务状态的方法,其特征在于,所述从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例,包括:
在所述主状态器进程实例不可用时,通过所述主状态器进程实例之外的M-1个状态器进程实例,删除所述主状态器进程实例在所述公共zookeeper目录下已经创建的原加锁子目录;
通过所述主状态器进程实例之外的M-1个状态器进程实例,在所述公共zookeeper目录下创建新的加锁子目录;
将重新创建所述加锁子目录成功的一个状态器进程实例作为新的主状态器进程实例;
所述新的主状态器进程实例之外的M-1个状态器进程实例,各自在所述公共zookeeper目录下注册针对新的加锁子目录的目录删除事件。
4.如权利要求3所述的基于zookeeper推进任务状态的方法,其特征在于,如果在所述公共zookeeper目录下存在与N个任务状态对应的N个状态目录,N为正整数,在所述M个状态器进程实例启动时,通过所述M个状态器进程实例各自在所述N个状态目录下注册与N个任务状态对应的监听器。
5.如权利要求4所述的基于zookeeper推进任务状态的方法,其特征在于,所述通过所述主状态器进程实例之外的M-1个状态器进程实例,在所述公共zookeeper目录下创建新的加锁子目录,包括:
激活所述主状态器进程实例之外的M-1个状态器进程实例在所述目标任务当前所在的状态目录下的监听器;
所述主状态器进程实例之外的M-1个状态器进程实例的激活后的监听器,在所述公共zookeeper目录下创建所述新的加锁子目录。
6.如权利要求4所述的基于zookeeper推进任务状态的方法,其特征在于,所述通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态,包括:
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态对应的状态目录中删除;
通过所述新的主状态器进程实例,将所述目标任务添加到下一任务状态对应的状态目录中,以推进所述目标任务至下一任务状态。
7.一种基于zookeeper推进任务状态的方法,应用于第一备用物理机中,其特征在于,所述第一备用物理机与另外K台物理机交互,K为正整数,所述第一备用物理机和所述K台物理机上各自启动有针对同一目标任务的状态器进程实例,将所述K台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,所述方法包括:
在所述主状态器进程实例不可用时,在公共zookeeper目录下重新创建所述加锁子目录,其中,所述公共zookeeper目录设置在不同于所述第一备用物理机与所述K台物理机的另一设备上,所述目标任务的状态存储在所述公共zookeeper目录下;
如果所述加锁子目录创建成功,将所述第一备用物理机上的状态器进程实例确定为新的主状态器进程实例;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
8.一种基于zookeeper推进任务状态的系统,其特征在于,该系统包括M台物理机,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,所述系统包括:
设置单元,用于将所述M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例;
选取单元,用于在所述主状态器进程实例不可用时,从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;
读取单元,用于通过所述新的主状态器进程实例,从公共zookeeper目录中读取所述目标任务当前所处的任务状态,其中,所述公共zookeeper目录设置在不同于所述M台物理机的另一设备上;
推进单元,用于通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
9.一种计算机服务集群,该集群包括M台物理机,M台物理机上均设置有控制器,各个控制器均包括存储器和处理器,其中,所述存储器存储有计算机程序,在所述M台物理机上各自启动有针对同一目标任务的状态器进程实例,M为大于2的整数,所述程序被处理器执行时能够实现以下步骤:
将所述M台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例;
在所述主状态器进程实例不可用时,从所述主状态器进程实例之外的M-1个状态器进程实例中确定出新的主状态器进程实例;
通过所述新的主状态器进程实例,从公共zookeeper目录中读取所述目标任务当前所处的任务状态,其中,所述公共zookeeper目录设置在不同于所述M台物理机的另一设备上;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
10.一种计算机可读存储介质,应用于第一备用物理机中,其特征在于,所述第一备用物理机与另外K台物理机交互,K为正整数,所述第一备用物理机和所述K台物理机上各自启动有针对同一目标任务的状态器进程实例,将所述K台物理机中的其中一台物理机上的状态器进程实例设置为主状态器进程实例,其介质上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
在所述主状态器进程实例不可用时,在公共zookeeper目录下重新创建所述加锁子目录,其中,所述公共zookeeper目录设置在不同于所述第一备用物理机与所述K台物理机的另一设备上,所述目标任务的状态存储在所述公共zookeeper目录下;
如果所述加锁子目录创建成功,将所述第一备用物理机上的状态器进程实例确定为新的主状态器进程实例;
通过所述新的主状态器进程实例,将所述目标任务从当前所处的任务状态推进至下一任务状态。
CN201710392640.5A 2017-05-27 2017-05-27 推进任务状态的方法、系统、存储介质及服务集群 Active CN107360208B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710392640.5A CN107360208B (zh) 2017-05-27 2017-05-27 推进任务状态的方法、系统、存储介质及服务集群

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710392640.5A CN107360208B (zh) 2017-05-27 2017-05-27 推进任务状态的方法、系统、存储介质及服务集群

Publications (2)

Publication Number Publication Date
CN107360208A true CN107360208A (zh) 2017-11-17
CN107360208B CN107360208B (zh) 2019-11-01

Family

ID=60271611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710392640.5A Active CN107360208B (zh) 2017-05-27 2017-05-27 推进任务状态的方法、系统、存储介质及服务集群

Country Status (1)

Country Link
CN (1) CN107360208B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110290180A (zh) * 2019-05-31 2019-09-27 北京大米科技有限公司 分布式任务调度方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104486108A (zh) * 2014-12-08 2015-04-01 畅捷通信息技术股份有限公司 基于Zookeeper的节点配置方法和基于Zookeeper的节点配置系统
CN105100259A (zh) * 2015-08-18 2015-11-25 北京京东尚科信息技术有限公司 一种分布式定时任务执行方法和系统
CN105939389A (zh) * 2016-06-29 2016-09-14 乐视控股(北京)有限公司 负载均衡方法及装置
CN106375342A (zh) * 2016-10-21 2017-02-01 用友网络科技股份有限公司 一种基于zookeeper技术的系统集群方法及系统
CN106533738A (zh) * 2016-10-20 2017-03-22 中国民生银行股份有限公司 分布式批处理的方法、装置和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104486108A (zh) * 2014-12-08 2015-04-01 畅捷通信息技术股份有限公司 基于Zookeeper的节点配置方法和基于Zookeeper的节点配置系统
CN105100259A (zh) * 2015-08-18 2015-11-25 北京京东尚科信息技术有限公司 一种分布式定时任务执行方法和系统
CN105939389A (zh) * 2016-06-29 2016-09-14 乐视控股(北京)有限公司 负载均衡方法及装置
CN106533738A (zh) * 2016-10-20 2017-03-22 中国民生银行股份有限公司 分布式批处理的方法、装置和系统
CN106375342A (zh) * 2016-10-21 2017-02-01 用友网络科技股份有限公司 一种基于zookeeper技术的系统集群方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110290180A (zh) * 2019-05-31 2019-09-27 北京大米科技有限公司 分布式任务调度方法、装置、计算机设备和存储介质
CN110290180B (zh) * 2019-05-31 2022-03-29 北京大米科技有限公司 分布式任务调度方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN107360208B (zh) 2019-11-01

Similar Documents

Publication Publication Date Title
CN105335251B (zh) 一种故障恢复方法及系统
CN111290834B (zh) 一种基于云管理平台实现业务高可用的方法、装置及设备
CN103414712B (zh) 一种分布式虚拟桌面管理系统和方法
US7698391B2 (en) Performing a provisioning operation associated with a software application on a subset of the nodes on which the software application is to operate
CN109753511B (zh) 一种大数据平台的跨地域实时同步方法及系统
CN104461747A (zh) 一种分布式任务调度系统
CN103460203A (zh) 群集唯一标识符
CN104767794B (zh) 一种分布式系统中的节点选举方法及节点
CN108038005A (zh) 基于zookeeper的共享资源访问方法、客户端、服务端、系统
CN105553682B (zh) 事件通知方法及用于事件通知的系统
CN103488526A (zh) 在分布式系统中锁定业务资源的系统和方法
CN108255994A (zh) 一种基于数据库快照的数据库版本管理方法
CN104793981B (zh) 一种虚拟机集群的在线快照管理方法及装置
EP3514693A1 (en) Transaction processing method and apparatus
CN109062681A (zh) 一种周期性循环任务的执行方法、系统、装置及存储介质
CN111984274A (zh) 一种一键自动化部署etcd集群的方法及装置
US8468386B2 (en) Detecting and recovering from process failures
CN104461705B (zh) 一种业务访问的方法及存储控制器、集群存储系统
CN107360208A (zh) 推进任务状态的方法、系统、存储介质及服务集群
CN102301368B (zh) 用于保持数据完整性的设备
CN111338858A (zh) 一种双机房的容灾方法及装置
CN107656847A (zh) 基于分布式集群的节点管理方法、系统、装置及存储介质
CN109408477A (zh) 一种设置集群文件锁的方法、系统及相关组件
CN108733477B (zh) 数据集群化处理的方法、装置及设备
CN114816440A (zh) 构建分布式微服务网络控制器架构的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230608

Address after: 510000 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Effective date of registration: 20230608

Address after: 100000 No. 1511, 1512, 1513, 1514, 1515, Floor 15, Wanshang Building, No. 22, Shijingshan Road, Shijingshan District, Beijing

Patentee after: Beijing AVIC Dingcheng Technology Co.,Ltd.

Address before: 510000 2414-2416 of the main building 371, five mountain road, Tianhe District, Guangzhou, Guangdong.

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

TR01 Transfer of patent right