CN113342499B - 分布式任务调用方法、装置、设备、存储介质、程序产品 - Google Patents

分布式任务调用方法、装置、设备、存储介质、程序产品 Download PDF

Info

Publication number
CN113342499B
CN113342499B CN202110726594.4A CN202110726594A CN113342499B CN 113342499 B CN113342499 B CN 113342499B CN 202110726594 A CN202110726594 A CN 202110726594A CN 113342499 B CN113342499 B CN 113342499B
Authority
CN
China
Prior art keywords
task
state
executed
checking
calling
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
Application number
CN202110726594.4A
Other languages
English (en)
Other versions
CN113342499A (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.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
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 Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN202110726594.4A priority Critical patent/CN113342499B/zh
Publication of CN113342499A publication Critical patent/CN113342499A/zh
Application granted granted Critical
Publication of CN113342499B publication Critical patent/CN113342499B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Abstract

本申请提供的一种分布式任务调用方法、装置、设备、存储介质、程序产品,涉及计算机技术,包括:利用任务管理进程对本地正在执行的任务、集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;通过任务调用进程获取任务数据库中各任务的任务状态,并根据任务状态抢占待执行任务,并更改抢占的任务的任务状态。本申请提供的方案,使用同一个任务数据库存储任务,任务调用进程并发读取数据库中的待执行任务,并抢占、执行;任务管理进程,负责任务状态管理。无需设置任务管理服务器,不存在一旦任务管理服务器出现异常存在任务分配管理失效的风险。各服务器之间不存在主从关系,无需注册就能工作。

Description

分布式任务调用方法、装置、设备、存储介质、程序产品
技术领域
本公开涉及计算机技术,尤其涉及一种分布式任务调用方法、装置、设备、存储介质、程序产品。
背景技术
目前,随着网络应用的日益广泛,服务器系统的数据流量成倍增加,利用两台以上的服务器进行协同工作的服务器集群技术成为一种趋势。然而,当两台以上的服务器进行协同工作时必然涉及负载均衡问题,即多服务器间的任务调用。
现有技术中,目前常用的多服务器任务调用方式有分布式任务调用方法,许多开源软件已实现分布式任务调用框架功能,例如软件Gearma,它提供了一种通用的程序框架来将任务分发到不同的机器或者不同的进程当中。它提供了并行工作、负载均衡处理的能力,以及在不同程序语言之间沟通的能力。使用Gearman的应用通常有三部分组成:任务生成服务器、任务执行服务器、任务管理服务器。任务生成服务器的作用是提出任务交给任务管理服务器,任务管理服务器会去寻找一个合适的任务执行服务器来完成这项任务。任务执行服务器执行由任务生成服务器发送过来的任务,并且将结果通过任务管理服务器返回给任务生成服务器。
但是,开源软件Gearman结构复杂,需要一个独立的任务管理服务器来分配任务给任务执行服务器,任务执行服务器与任务管理服务器存在复杂的通讯协议;一旦任务管理服务器出现异常存在任务分配管理失效的风险;且任务执行服务器需要注册才能工作。
发明内容
本公开提供了一种分布式任务调用方法、装置、设备、存储介质、程序产品,以解决现有技术中的分布式任务调用方法需要一个独立的任务管理服务器来分配任务给任务执行服务器,任务执行服务器与任务管理服务器存在复杂的通讯协议,一旦任务管理服务器出现异常存在任务分配管理失效的风险;且任务管理服务器和任务执行服务器之间存在主从关系,任务管理服务器为主服务器,任务执行服务器为从服务器,任务执行服务器需要在任务管理服务器中注册才能工作的问题。
根据本申请第一方面,提供了一种分布式任务调用方法,该方法应用于电子设备,所述电子设备为集群服务器中的任一台设备,该方法包括:利用任务管理进程对本地正在执行的任务、所述集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;通过任务调用进程获取所述任务数据库中各任务的任务状态,并根据所述任务状态抢占待执行任务,并更改抢占的任务的任务状态。
根据本申请第二方面,提供了一种分布式任务调用装置,该装置应用于电子设备,所述电子设备为集群服务器中的任一台设备,该装置包括:任务状态管理单元,用于利用任务管理进程对本地正在执行的任务、所述集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;任务调用单元,用于通过任务调用进程获取所述任务数据库中各任务的任务状态,并根据所述任务状态抢占待执行任务,并更改抢占的任务的任务状态。
根据本申请第三方面,提供了一种电子设备,包括存储器和处理器;其中,
所述存储器,用于存储计算机程序;
所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行如第一方面所述的分布式任务调用方法。
根据本申请第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面所述的分布式任务调用方法。
根据本申请第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现如第一方面所述的分布式任务调用方法。
本公开提供的一种分布式任务调用方法、装置、设备、存储介质、程序产品,包括:利用任务管理进程对本地正在执行的任务、集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;通过任务调用进程获取任务数据库中各任务的任务状态,并根据任务状态抢占待执行任务,并更改抢占的任务的任务状态。本公开提供的一种分布式任务调用方法、装置、设备、存储介质、程序产品中,集群服务器的每台服务器都部署相同的任务调用程序,且各节点之间不存在主从关系,节点服务器无需注册就能工作。使用同一个任务数据库存储任务,各节点上进程中的任务调用进程并发读取数据库中的待执行任务,并抢占、执行;各节点上进程中的任务管理进程,负责任务状态管理。一旦集群服务器中有服务器出现异常,能够自动识别异常服务器中的任务,并将识别到的任务自动分配到集群服务器中其它的无异常的服务器上运行。这种方案中无需设置任务管理服务器,各后台服务器可以直接对待处理的任务进行处理,而无需管理服务器分配各待处理的任务,不存在一旦任务管理服务器出现异常存在任务分配管理失效的风险。
附图说明
图1为本申请一示例性实施例示出的任务调用系统示意图;
图2为本申请一示例性实施例示出的分布式任务调用方法的流程示意图;
图3为本申请一示例性实施例示出的分布式任务调用系统示意图;
图4为本申请另一示例性实施例示出的分布式任务调用方法的流程示意图;
图5为本申请一示例性实施例示出的分布式任务调用方法中的任务调用异常检查过程示意图;
图6为本申请一示例性实施例示出的分布式任务调用方法中的任务超时检查过程示意图;
图7为本申请一示例性实施例示出的分布式任务调用方法中的任务抢占过程示意图;
图8为本申请一示例性实施例示出的分布式任务调用装置的结构图;
图9为本申请另一示例性实施例示出的分布式任务调用装置的结构图;
图10为本申请一示例性实施例示出的电子设备的结构图。
具体实施方式
目前,随着网络应用的日益广泛,服务器系统的数据流量成倍增加,利用两台以上的服务器进行协同工作的服务器集群技术成为一种趋势。然而,当两台以上的服务器进行协同工作时必然涉及负载均衡问题,即多服务器间的任务调用。现有技术中,目前常用的多服务器任务调用方式有分布式任务调用方法,许多开源软件已实现分布式任务调用框架功能,例如软件Gearma,它提供了一种通用的程序框架来将任务分发到不同的机器或者不同的进程当中。它提供了并行工作、负载均衡处理的能力,以及在不同程序语言之间沟通的能力。使用Gearman的应用通常有三部分组成:任务生成服务器、任务执行服务器、任务管理服务器。任务生成服务器的作用是提出任务交给任务管理服务器,任务管理服务器会去寻找一个合适的任务执行服务器来完成这项任务。任务执行服务器执行由任务生成服务器发送过来的任务,并且将结果通过任务管理服务器返回给任务生成服务器。
但是,开源软件Gearman结构复杂,需要一个独立的任务管理服务器来分配任务给任务执行服务器,任务执行服务器与任务管理服务器存在复杂的通讯协议;一旦任务管理服务器出现异常存在任务分配管理失效的风险;且任务执行服务器需要注册才能工作。
为了解决上述技术问题,本申请提供的方案中包括一种分布式任务调用方法,把进程池分两组进行管理,包括任务管理进程池和任务调用进程池。集群服务器使用同一个任务数据库存储任务,各节点上进程中的任务调用进程并发读取数据库中的待执行任务,并抢占、执行;各节点上进程中的任务管理进程,负责任务状态管理。一旦集群服务器中有服务器出现异常,能够自动识别异常服务器中的任务,并将识别到的任务自动分配到集群服务器中其它的无异常的服务器上运行。这种方案中无需设置任务管理服务器,各后台服务器可以直接对待处理的任务进行处理,而无需管理服务器分配各待处理的任务,不存在一旦任务管理服务器出现异常存在任务分配管理失效的风险。集群服务器的每台服务器都部署相同的任务调用程序,且各节点之间不存在主从关系,节点服务器无需注册就能工作。
图1为本申请一示例性实施例示出的任务调用系统示意图。
如图1所示,以开源软件Gearman的任务调用系统来说明目前常用的多服务器的分布式任务调用系统。
现有技术中,许多开源软件,比如软件Gearma已实现分布式任务调用框架功能。如图1所示,使用Gearman的应用通常由三部分组成:任务生成服务器、任务执行服务器、任务管理服务器。任务生成服务器提出任务并交给任务管理服务器,任务管理服务器会去寻找一个合适的任务执行服务器来完成这项任务。任务执行服务器执行由任务生成服务器发送过来的任务,并且将结果通过任务管理服务器返回给任务生成服务器。
任务管理服务器和任务执行服务器之间存在主从关系,任务管理服务器为主服务器11,任务执行服务器为从服务器12,且任务执行服务器需要在任务管理服务器中注册才能工作。
开源软件Gearman结构复杂,需要一个独立的任务管理服务器来分配任务给任务执行服务器,任务执行服务器与任务管理服务器存在复杂的通讯协议;一旦任务管理服务器出现异常存在任务分配管理失效的风险。
图2为本申请一示例性实施例示出的分布式任务调用方法的流程示意图。
本实施例提供的分布式任务调用方法可以应用于电子设备,其中电子设备为集群服务器中的任一台设备。
其中,电子设备可以作为后台服务器,该电子设备可以用于执行任务,任务是指具有相对独立性的操作。
具体的,可以由电子设备的进程池中的进程来处理任务。
进一步的,该电子设备可以是集群服务器中的任一台设备,集群服务器是指由多台计算机服务器来共同支持系统运行的集合。分布式任务调用方法指任务可以在集权服务器中任意一台计算机服务器上运行的方法。具体的,本方案提供的分布式任务调用方法可以由集群服务器中的任一台设备执行,单台电子设备运行异常时,能够自动识别异常设备中的任务,并将识别到的任务自动分配到集群服务器中其它的电子设备上运行。这种方案中无需设置管理服务器,各后台服务器可以直接对待处理的任务进行处理,而无需管理服务器分配各待处理的任务。
具体的,本方案提供的分布式任务调用方法中,可以预先对进程池中进程进行分组,具体可以分为两组。
进一步的,可以将进程池分别划分为任务管理进程池和任务调用进程池,从而通过这两个进程池分别存储不同组别的任务。其中任务管理进程池中的任务管理进程负责任务状态管理,任务调用进程池中的任务调用进程等待总控分配具体任务,并进行任务抢占和任务执行。任务管理进程池中的每个进程各有不同的功能,任务调用进程池中的各进程处理逻辑相同。集群服务器中任一台计算机服务器都使用相同的分布式任务调用方法。
如图2所示,本实施例提供的分布式任务调用方法包括:
步骤201,利用任务管理进程对本地正在执行的任务、集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态。
其中,任务管理进程的作用是对任务进行状态管理,具体的可以包括对本地正在执行的任务、集群服务器正在处理的全局任务进行检查。具体的任务管理进程可以根据需要提前设定多个不同功能的进程,设定完成后,任务管理进程的数量和功能除非重新设定否则不会改变。
其中,任务数据库用来存储任务,进程池中的进程可以访问任务数据库中的任务。任务数据库中每个任务有状态位,状态位用于表征任务当前的状态,比如有待执行、正在执行、任务结束、任务调用异常状态位。
进一步的,除了状态位,任务还可以具有设备号、任务标识ID、任务开始执行时间、本地检查时间、进程号以及任务队列顺序号、超时时间等。
具体的,可以根据任务管理进程对任务的检查结果更改任务数据库中记录的任务状态。比如,如果检查结果显示任务执行异常,则把任务数据库中记录的任务状态从正在执行更改为待执行。
步骤202,通过任务调用进程获取任务数据库中各任务的任务状态,并根据任务状态抢占待执行任务,并更改抢占的任务的任务状态。
其中,任务调用进程负责执行调用任务,任务调用进程可以根据需要提前设定一定数量的进程数,比如可以提前设定二十个任务调用进程。这二十个任务调用进程最多可以同时处理二十个不同的任务。具体的进程池中任务调用进程的数量可以根据实际使用情况由任务管理进程中具有相应功能的进程进行动态扩展或收缩。
具体的,每台计算机服务器中,同一时间只会给每个空闲的任务调用进程分配一个状态为待执行的任务,且进程池中不同的任务调用进程不会被分配同一个任务。这样可能会产生集群服务器中不同计算机服务器中的任务调用进程同时抢占同一个状态为待执行的任务,但是不会产生同一台计算机服务器中的任务调用进程同时抢占同一个待执行的任务的情况,这种任务分配策略有效减轻了任务调用进程组因抢占同一任务而频繁失败,提高了任务调用效率。
进一步的,通过任务调用进程可以获取任务数据库中各任务的任务状态。各任务调用进程可以从任务数据库中获取主控分配给它的那个任务的任务状态。
实际应用时,任务调用进程可以根据任务状态抢占待执行任务。若此任务的任务状态为待执行,且此任务没有被锁定,则此任务调用进程抢占此任务,并执行抢占的任务。另一方面,若此任务的任务状态为待执行,但此任务已经被锁定,则说明此任务已经被集群服务器中别的计算机服务器中的任务调用进程抢占了,此任务调用进程抢占失败,结束抢占。基于任务数据库的特点,竞争同一个任务的任务调用进程,有且仅有一个任务调用进程能为此任务上锁,并修改此任务状态为正在执行。也即说明此任务已被抢占,别的任务调用进程就无法再抢占此任务。
其中,任务调用进程抢占任务成功后,还可以更改抢占的任务的任务状态。若任务调用进程抢占任务成功,则更改此任务的任务状态为正在执行。进一步的,更改此任务调用进程状态为忙碌。任务调用进程执行完任务之后,更改此任务调用进程的状态为空闲。
图3为本申请一示例性实施例示出的分布式任务调用系统示意图。
如图3所示,集群服务器31的每台服务器都部署相同的任务调用程序,并使用同一个任务数据库。任务调用器启动,并按配置生成进度池。各服务器中进程中的任务调用进程并发读取数据库中的待执行任务,并抢占执行。任务调用进程的作用是确保任务准确调用。
其中,图3中的进程还包括任务管理进程,负责任务调用异常检查和任务调用超时检查。
本申请提供的分布式任务调用方法,应用于电子设备,电子设备为集群服务器31中的任一台设备。该方法包括:利用任务管理进程对本地正在执行的任务、集群服务器31正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;通过任务调用进程获取任务数据库中各任务的任务状态,并根据任务状态抢占待执行任务,并更改抢占的任务的任务状态。本申请中采用的方法中,集群服务器31的每台服务器都部署相同的任务调用程序,且各节点之间不存在主从关系,节点服务器无需注册就能工作。使用同一个任务数据库存储任务,各节点上进程中的任务调用进程并发读取数据库中的待执行任务,并抢占、执行;各节点上进程中的任务管理进程,负责任务状态管理。一旦集群服务器31中有服务器出现异常,能够自动识别异常服务器中的任务,并将识别到的任务自动分配到集群服务器31中其它的无异常的服务器上运行。这种方案中无需设置任务管理服务器,各后台服务器可以直接对待处理的任务进行处理,而无需管理服务器分配各待处理的任务,不存在一旦任务管理服务器出现异常存在任务分配管理失效的风险。
图4为本申请另一示例性实施例示出的分布式任务调用方法的流程示意图。
本实施例提供的分布式任务调用方法可以应用于电子设备,其中电子设备为集群服务器中的任一台设备。
如图4所示,本实施例提供的分布式任务调用方法包括:
步骤401,利用任务管理进程中的第一进程进行对本地正在执行的任务进行进程检查,并根据进程检查结果更新本地正在执行的任务的任务状态。
其中,电子设备可以利用其任务管理进程,对该电子设备正在执行的本地任务进行检查。比如,电子设备1可以检查电子设备1中正在执行的任务。
进一步的,电子设备还可以根据进程检查结果更新本地正在执行的任务的任务状态。例如若检查到任务调用进程的状态为不正常退出,则把任务调用进程所执行的任务的任务状态更改为待执行。
一种可实现方式中可以利用任务管理进程中的第一进程,检查本地正在执行任务的任务调用进程的状态;若任务调用进程的状态为不正常退出,则把任务调用进程所执行的任务的任务状态更改为待执行。
其中,任务管理进程池中的第一进程专门负责检查本地正在执行任务的任务调用进程的状态。若检查到任务调用进程的状态为不正常退出,则把任务调用进程所执行的任务的任务状态更改为待执行,并把此任务重新放入任务数据库中的任务队列中,以便此任务被集群服务器中的任务调用进程重新抢占、执行,并且根据配置参数重新把此任务调用进程的参数初始化,把此任务调用进程补充到任务调用进程池中。另一方面,若检查到任务调用进程的状态为正常,即正在执行任务的任务调用进程真实存在,则此任务管理进程更新数据库中此正在被执行的任务的任务记录中的本地检查时间。
步骤402,利用任务管理进程中的第二进程对集群服务器正在处理的全局任务进行检查,并根据检查结果更新全局任务的任务状态。
具体的,电子设备还可以利用任务管理进程对集群服务器正在处理的全局任务进行检查。该全局任务是指整个集群服务器正在处理的任务。
进一步的,电子设备还可以根据检查结果更新全局任务的任务状态。比如若检查结果有异常,可以把此任务的任务状态从正在执行更改为待执行。
在一种可实现方式中,可以利用任务管理进程中的第二进程,从任务数据库获取集群服务器正在处理的各全局任务的本地检查时间;若当前时间与全局任务本地检查时间之间的时间差大于第一预设值,则把全局任务的任务状态更改为待执行。
其中,第一预设值可以是根据经验提前设置的时间数值,第一预设值可以根据需要进行修改。比如,第一预设值可以设置为300s。
其中,本地检查时间是指集群服务器中所有正在被执行的任务,被本地服务器检查时更新的本地检查时间。
具体的,任务管理进程池中的第二进程专门负责从任务数据库获取集群服务器正在处理的各全局任务的本地检查时间,并把当前时间与本地检查时间做差,得到一个时间差,若此时间差超过第一预设值,则把此被检查的任务的任务状态从正在执行更改为待执行,并把此任务重新放入任务数据库中的任务队列中,以便此任务被集群服务器中的任务调用进程重新抢占、执行;若此时间差没有超过第一预设值则不做操作,继续检查其他任务。
进一步的,第二进程是对集群服务器中所有正在被执行的任务进行检查。若得到的时间差大于第一预设值,则可以认为该任务记录的计算机服务器上的任务调用进程已经异常退出,其中可以从任务记录中的设备号获取该任务所属的计算机服务器,从任务记录中的进程号获取该任务所属的任务调用进程。
比如,集群服务器中某台计算机服务器在当前时刻死机,此台计算机服务器停止工作,从当前时刻开始此台计算机服务器中正在被执行的任务的本地检查时间不会被更改,通过集群服务器中其他的计算机服务器中的任务管理进程中的第二进程可以检查出此异常任务,并修改任务状态为待执行,把该任务重新放入任务数据库中的任务队列中,以便此任务被集群服务器中的任务调用进程重新抢占、执行。
图5为本申请一示例性实施例示出的分布式任务调用方法中的任务调用异常检查过程示意图。
如图5所示,其中任务数据库中各任务的任务状态用任务记录表来记录。任务记录表中包括设备号、任务标识ID、任务开始执行时间、本地检查时间、进程号以及任务队列顺序号、超时时间等。
其中,阈值指第一预设值,是根据经验提前设置的时间值。
其中,任务调用异常检查包括本地任务检查51和全局任务检查52。本地任务检查51指利用任务管理进程中的第一进程进行对本地正在执行的任务进行进程检查,并根据进程检查结果更新本地正在执行的任务的任务状态。
具体的,利用任务管理进程中的第一进程从任务记录表中读取和第一进程所在服务器设备号相同的执行任务,其中执行任务指状态为正在执行的任务。检测正在执行此任务的任务调用进程是否真实存在。如果真实存在,第一进程则更新任务数据库中任务记录表中的本地检查时间。
其中,全局任务检查52指利用任务管理进程中的第二进程对集群服务器正在处理的全局任务进行检查,并根据检查结果更新全局任务的任务状态。
具体的,利用任务管理进程中的第二进程从任务记录表中读取执行任务的最新本地检查时间,检查数据库中所有正在执行的任务,计算其最后一次本地检查时间值与系统当前时间值的差。如果差值过大,已经超过设定的阀值,比如300s,则可以认为该任务记录的服务器上的任务调用进程已经异常退出。此时,第二进程将更新任务执行状态为待执行,待下次任务触发调起。
步骤403,利用任务管理进程中的第三进程对本地正在执行的任务进行超时检查,并根据超时检查结果更新本地正在执行的任务的任务状态。
具体的,电子设备还可以利用任务管理进程对本地正在执行的任务进行超时检查。超时检查指检查任务的执行时间是否超过预设时间。
进一步的,电子设备还可以根据检查结果更新本地正在执行的任务的任务状态。比如若检查结果显示任务的执行时间超过预设时间,可以把此任务的任务状态从正在执行更改为待执行。
在一种可实现方式中,可以利用任务管理进程中的第三进程,获取本地正在执行的任务的开始执行时间;若当前时间与正在执行的任务的开始执行时间之间的时间差大于第二预设值,则把正在执行的任务的任务状态更改为待执行。
其中,第二预设值可以是根据经验提前设置的时间数值,第二预设值可以根据需要进行修改。比如,第二预设值可以设置为1s。
其中,任务管理进程中的第三进程可以在任务数据库中此任务的任务记录中获取任务的开始执行时间。
具体的,当前时间与任务的开始执行时间的差值表示的是任务的执行时间,当任务的执行时间时长超过预先设定的运行时间后,该任务将会被认为任务作业因为某些原因出现了异常,比如socket通信超时。此时,任务管理进程中的第三进程会把此任务的任务状态更改为待执行,并重新放入任务数据库中的任务队列中,以便此任务被集群服务器中的任务调用进程重新抢占、执行,并且根据配置参数重新把执行此任务的任务调用进程的参数初始化,把此任务调用进程补充到任务调用进程池中,比如可以利用系统信号中断机制,保障此任务调用进程安全的退出。
图6为本申请一示例性实施例示出的分布式任务调用方法中的任务超时检查过程示意图。
如图6所示,超时时间即第二预设值,是根据经验提前设置的时间值。比如,第二预设值可以设置为1s。
具体的,利用任务管理进程中的第三进程对本地正在执行的任务进行超时检查,并根据超时检查结果更新本地正在执行的任务的任务状态。
具体的,利用任务管理进程中的第三进程读取任务记录表中记录的本地正在执行的任务的开始执行时间和超时时间,并与当前时间进行对比,如果差值超过超时时间则第三进程发出系统预留的用户信号。并通过第三进程把此任务的任务状态更改为待执行,并重新放入任务数据库中的任务队列中,以便此任务被集群服务器中的任务调用进程重新抢占、执行,并且根据配置参数重新把执行此任务的任务调用进程的参数初始化,把此任务调用进程补充到任务调用进程池中,比如可以利用系统信号中断机制,保障此任务调用进程安全的退出。
一般我们常用闹钟(alarm)函数来完成超时信号处里,但是在设计任务调用时却不能简单地直接使用。这是因为业务系统底层代码实现时也常常使用alarm函数,例如套接字(socket)通讯超时,从而造成系统信号处理冲突。本实施例中,任务调用器可以使用SIGUSR2用户信号来实现超时处理。同时,为了保障超时任务调用进程安全退出,在信号处理函数中,代码再次判断了任务执行是否超时以避免极端情况下的状态误判。
步骤404,总控读取任务数据库中的全局任务。
其中,总控为执行本公开提供的方法的电子设备中的任务调用器的主进程。
具体的,总控不负责具体的任务执行,它只是监控进程池中各进程状态以及读取任务数据库中记录的全局任务状态,并把状态为待执行的任务分发给空闲任务调用进程。任务调用进程池中各进程处理逻辑相同。任务调用进程等待总控分配具体任务,并进行任务抢占和执行。
进一步的,比如总控启动时,可以首先完成配置参数读取和校验,然后依次完成系统日志、联机通信等基础类初始化操作,最后依据获得的提前设置好的配置参数建立任务管理进程池、任务调用进程池。
步骤405,总控给每个空闲任务调用进程分配一个状态为待执行的任务。
具体的,总控不负责具体的任务执行,它可以监控进程池中各进程状态以及读取任务数据库中记录的任务状态,并把状态为待执行的任务分发给空闲任务调用进程。
具体的,总控同一时间只给每个空闲任务调用进程分配一个状态为待执行的任务,且在同一台服务器中的不同空闲任务调用进程不会被分配相同的任务。主控采用的这种任务预分配策略有效减轻了任务调用进程池中多个任务调用进程因抢占同一任务而频繁失败的情况,提高了任务调用效率。
步骤406,空闲任务调用进程对所分配的状态为待执行的任务进行抢占。
具体的,电子设备可以利用空闲任务调用进程对所分配的状态为待执行的任务进行抢占。空闲的任务调用进程从任务数据库中获取所分配的任务的任务状态,若任务状态显示待执行,且没有被锁定,则更改任务状态为正在执行,这样就说明抢占成功。
具体的,若任务的状态为待执行,且没有被锁定,则空闲任务调用进程更改任务的状态为正在执行,并更改任务调用进程的状态为忙碌。
进一步的,空闲任务调用进程抢占总控分配的状态为待执行的任务。比如一台计算机服务器中的一个空闲的任务调用进程获取任务数据库中当前时刻分配的任务的任务状态,若此任务的任务状态为待执行,且此任务没有被其他任务调用进程上锁,则更改任务状态为正在执行,并更改此任务调用进程状态为忙碌,则此任务调用进程抢占任务成功,此任务调用进程执行抢占的任务,执行完成后更改此任务调用进程状态为空闲。
另一方面,若任务已经被上锁,则结束抢占。
进一步的,若此任务调用进程获取任务数据库中当前时刻分配的任务的任务状态为待执行,但此任务已经被别的任务调用进程上锁,则说明此任务已经被集群服务器中别的计算机服务器中的任务调用进程抢占了,此任务调用进程抢占失败,结束抢占。基于任务数据库的特点,竞争同一个任务的任务调用进程,有且仅有一个任务调用进程能为此任务上锁,并修改此任务状态为正在执行。也即说明此任务已被抢占,别的任务调用进程就无法再抢占此任务。
图7为本申请一示例性实施例示出的分布式任务调用方法中的任务抢占过程示意图。
如图7所示,其中,进程池70中包括任务管理进程池71中的第一进程、第二进程、第三进程以及任务调用进程池72中的任务调用进程1~n。
其中,总控为主进程。
具体的,总控和任务调用进程池72相互协作实现了调用器分布式任务处理。总控不负责具体的任务执行,它可以监控进程池中各进程状态以及读取任务数据库中记录的任务状态,并把状态为待执行的任务分发给空闲任务调用进程。总控同一时间只给每个空闲任务调用进程分配一个状态为待执行的任务,且在同一台服务器中的不同空闲任务调用进程不会被分配相同的任务。
比如,任务调用进程可以利用数据库update锁抢占待执行任务,多个服务器上任务调用进程都使用update语句试图更新该任务记录中的状态、服务器设备号和执行进程号。多个任务调用进程竞争,最终只会有一个任务调用进程的update语句执行成功。一旦成功,任务数据库中任务状态便更新为执行状态,同时将任务记录中的设备号、进程号字段值修改成该任务调用进程所在服务器设备号以及任务调用进程的进程标识符(PID)值。
另外,除了保证任务准确调用以外,还必须考虑任务调用异常情况以及任务调用超时处理。任务管理进程池71完成了上述功能。
步骤407,获取任务调用进程的任务执行信息;利用任务管理进程,根据任务执行信息调整任务调用进程中包括的进程数量。
其中,任务执行信息可以指一定时间内任务调用进程池中任务调用进程的空闲率。
具体的,比如任务管理进程池中包括一个第四进程,第四进程专门用于根据获取的任务调用进程池中任务调用进程的任务执行信息对任务调用进程池中的进程数量进行自动动态扩展或收缩。
进一步的,比如一个小时内任务调用进程池中任务调用进程的空闲率为百分之九十,则第四进程可对任务调用进程池中任务调用进程数量进行自动动态收缩为原进程数量的一半。再比如,如果一个小时内任务调用进程池中任务调用进程的空闲率为百分之十,则第四进程可对任务调用进程池中任务调用进程数量进行自动动态扩展为原进程数量的一点五倍。
具体的,对任务调用进程池中任务调用进程数量的动态扩展或收缩的条件,可根据实际情况提前设定。
图8为本申请一示例性实施例示出的分布式任务调用装置的结构图。
如图8所示,本申请提供的分布式任务调用装置应用于电子设备,电子设备为集群服务器中的任一台设备,装置800,包括:
任务状态管理单元810,用于利用任务管理进程对本地正在执行的任务、集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;
任务调用单元820,用于通过任务调用进程获取任务数据库中各任务的任务状态,并根据任务状态抢占待执行任务,并更改抢占的任务的任务状态。
图9为本申请另一示例性实施例示出的分布式任务调用装置的结构图。
如图9所示,本申请提供的分布式任务调用装置应用于电子设备,电子设备为集群服务器中的任一台设备,装置900,包括:
任务状态管理单元810包括本地任务检查模块811,用于:利用任务管理进程中的第一进程进行对本地正在执行的任务进行进程检查,并根据进程检查结果更新本地正在执行的任务的任务状态;
任务状态管理单元810包括全局任务检查模块812,用于:利用任务管理进程中的第二进程对集群服务器正在处理的全局任务进行检查,并根据检查结果更新全局任务的任务状态;
任务状态管理单元810包括任务超时检查模块813,用于:利用任务管理进程中的第三进程对本地正在执行的任务进行超时检查,并根据超时检查结果更新本地正在执行的任务的任务状态。
可选的,本地任务检查模块811具体用于:
利用任务管理进程中的第一进程,检查本地正在执行任务的任务调用进程的状态;
若任务调用进程的状态为不正常退出,则把任务调用进程所执行的任务的任务状态更改为待执行。
可选的,全局任务检查模块812具体用于:
利用任务管理进程中的第二进程,从任务数据库获取集群服务器正在处理的各全局任务的本地检查时间;
若当前时间与全局任务本地检查时间之间的时间差大于第一预设值,则把全局任务的任务状态更改为待执行。
可选的,任务超时检查模块813具体用于:
利用任务管理进程中的第三进程,获取本地正在执行的任务的开始执行时间;
若当前时间与正在执行的任务的开始执行时间之间的时间差大于第二预设值,则把正在执行的任务的任务状态更改为待执行。
本申请提供的分布式任务调用装置900,还包括:
总控单元830,用于总控读取任务数据库中的全局任务;总控给每个空闲任务调用进程分配一个状态为待执行的任务;空闲任务调用进程对所分配的状态为待执行的任务进行抢占。
可选的,总控单元830具体用于:
若任务没有被锁定,则更改任务的状态为正在执行,并更改任务调用进程的状态为忙碌;
若任务已经被锁定,则结束抢占。
本申请提供的分布式任务调用装置900,还包括:
进程数调整单元840,用于获取任务调用进程的任务执行信息;利用任务管理进程,根据任务执行信息调整任务调用进程中包括的进程数量。
图10为本申请一示例性实施例示出的电子设备的结构图。
如图10所示,本实施例提供的电子设备包括:
存储器1001;
处理器1002;以及
计算机程序;
其中,计算机程序存储在存储器1001中,并配置为由处理器1002执行以实现如上的任一种分布式任务调用方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,
计算机程序被处理器执行以实现如上的任一种分布式任务调用方法。
本实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现上述任一种分布式任务调用方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种分布式任务调用方法,其特征在于,应用于电子设备,所述电子设备为集群服务器中的任一台设备;
所述方法包括:
利用任务管理进程对本地正在执行的任务、所述集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;
通过任务调用进程获取所述任务数据库中各任务的任务状态,并根据所述任务状态抢占待执行任务,并更改抢占的任务的任务状态;
所述利用任务管理进程对本地正在执行的任务、所述集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态,包括:
利用任务管理进程中的第一进程进行对本地正在执行的任务进行进程检查,并根据进程检查结果更新本地正在执行的任务的任务状态;
利用任务管理进程中的第二进程对所述集群服务器正在处理的全局任务进行检查,并根据检查结果更新全局任务的任务状态;
利用任务管理进程中的第三进程对本地正在执行的任务进行超时检查,并根据超时检查结果更新本地正在执行的任务的任务状态;
所述利用任务管理进程中的第一进程进行对本地正在执行的任务进行进程检查,并根据进程检查结果更新本地正在执行的任务的任务状态,包括:
利用所述任务管理进程中的第一进程,检查本地正在执行任务的任务调用进程的状态;
若所述任务调用进程的状态为不正常退出,则把所述任务调用进程所执行的任务的任务状态更改为待执行;
所述利用任务管理进程中的第二进程对所述集群服务器正在处理的全局任务进行检查,并根据检查结果更新全局任务的任务状态,包括:
利用所述任务管理进程中的第二进程,从所述任务数据库获取所述集群服务器正在处理的各全局任务的本地检查时间;
若当前时间与全局任务本地检查时间之间的时间差大于第一预设值,则把所述全局任务的任务状态更改为待执行;
所述利用任务管理进程中的第三进程对本地正在执行的任务进行超时检查,并根据超时检查结果更新本地正在执行的任务的任务状态,包括:
利用所述任务管理进程中的第三进程,获取本地正在执行的任务的开始执行时间;
若当前时间与正在执行的任务的开始执行时间之间的时间差大于第二预设值,则把所述正在执行的任务的任务状态更改为待执行。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
总控读取任务数据库中的全局任务;
所述总控给每个空闲任务调用进程分配一个状态为待执行的任务;
所述空闲任务调用进程对所分配的所述状态为待执行的任务进行抢占。
3.根据权利要求2所述的方法,其特征在于,所述空闲任务调用进程对所分配的所述状态为待执行的任务进行抢占,包括:
若所述任务没有被锁定,则更改所述任务的状态为正在执行,并更改所述任务调用进程的状态为忙碌;
若所述任务已经被锁定,则结束抢占。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
获取所述任务调用进程的任务执行信息;
利用所述任务管理进程,根据所述任务执行信息调整所述任务调用进程中包括的进程数量。
5.一种分布式任务调用装置,其特征在于,应用于电子设备,所述电子设备为集群服务器中的任一台设备;
所述装置包括:
任务状态管理单元,用于利用任务管理进程对本地正在执行的任务、所述集群服务器正在处理的全局任务进行检查,并根据检查结果更改任务数据库中记录的任务状态;
任务调用单元,用于通过任务调用进程获取所述任务数据库中各任务的任务状态,并根据所述任务状态抢占待执行任务,并更改抢占的任务的任务状态;
任务状态管理单元包括本地任务检查模块、全局任务检查模块,以及,任务超时检查模块;
本地任务检查模块用于:利用任务管理进程中的第一进程进行对本地正在执行的任务进行进程检查,并根据进程检查结果更新本地正在执行的任务的任务状态;
全局任务检查模块用于:利用任务管理进程中的第二进程对集群服务器正在处理的全局任务进行检查,并根据检查结果更新全局任务的任务状态;
任务超时检查模块用于:利用任务管理进程中的第三进程对本地正在执行的任务进行超时检查,并根据超时检查结果更新本地正在执行的任务的任务状态;
本地任务检查模块具体用于:
利用任务管理进程中的第一进程,检查本地正在执行任务的任务调用进程的状态;
若任务调用进程的状态为不正常退出,则把任务调用进程所执行的任务的任务状态更改为待执行;
全局任务检查模块具体用于:
利用任务管理进程中的第二进程,从任务数据库获取集群服务器正在处理的各全局任务的本地检查时间;
若当前时间与全局任务本地检查时间之间的时间差大于第一预设值,则把全局任务的任务状态更改为待执行;
任务超时检查模块具体用于:
利用任务管理进程中的第三进程,获取本地正在执行的任务的开始执行时间;
若当前时间与正在执行的任务的开始执行时间之间的时间差大于第二预设值,则把正在执行的任务的任务状态更改为待执行。
6.一种电子设备,所述电子设备为集群服务器中的任一台设备,其特征在于,包括存储器和处理器;其中,
所述存储器,用于存储计算机程序;
所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行上述权利要求1-4任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述权利要求1-4任一项所述的方法。
8.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述权利要求1-4任一项所述的方法。
CN202110726594.4A 2021-06-29 2021-06-29 分布式任务调用方法、装置、设备、存储介质、程序产品 Active CN113342499B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110726594.4A CN113342499B (zh) 2021-06-29 2021-06-29 分布式任务调用方法、装置、设备、存储介质、程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110726594.4A CN113342499B (zh) 2021-06-29 2021-06-29 分布式任务调用方法、装置、设备、存储介质、程序产品

Publications (2)

Publication Number Publication Date
CN113342499A CN113342499A (zh) 2021-09-03
CN113342499B true CN113342499B (zh) 2024-04-30

Family

ID=77481419

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110726594.4A Active CN113342499B (zh) 2021-06-29 2021-06-29 分布式任务调用方法、装置、设备、存储介质、程序产品

Country Status (1)

Country Link
CN (1) CN113342499B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114579401A (zh) * 2022-02-28 2022-06-03 北京字节跳动网络技术有限公司 一种任务检测方法、装置、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718305A (zh) * 2016-03-15 2016-06-29 南京南瑞继保电气有限公司 一种基于进程的仿真任务并行调度方法
CN106096422A (zh) * 2016-06-27 2016-11-09 上海柯力士信息安全技术有限公司 一种针对网络脆弱性的安犬扫描器集成方法
CN107025205A (zh) * 2016-01-30 2017-08-08 华为技术有限公司 一种分布式系统中的训练模型的方法及设备
US9886532B1 (en) * 2004-10-07 2018-02-06 Gregory M. Scallon Data integrity protection mechanism
CN110262882A (zh) * 2019-06-17 2019-09-20 北京思特奇信息技术股份有限公司 一种分布式的通讯命令调度系统及方法
CN110515709A (zh) * 2019-07-25 2019-11-29 北京达佳互联信息技术有限公司 任务调度系统、方法、装置、电子设备及存储介质
CN110908776A (zh) * 2018-09-17 2020-03-24 网宿科技股份有限公司 定时任务的执行方法及相关装置、计算机可读存储介质
CN111338773A (zh) * 2020-02-21 2020-06-26 华云数据有限公司 一种分布式定时任务调度方法、调度系统及服务器集群
CN111522650A (zh) * 2019-02-02 2020-08-11 阿里巴巴集团控股有限公司 分布式系统的业务请求处理方法、装置及电子设备
CN111641678A (zh) * 2020-04-29 2020-09-08 深圳壹账通智能科技有限公司 任务调度方法、装置、电子设备及介质
CN112148546A (zh) * 2019-06-26 2020-12-29 南京南瑞继保工程技术有限公司 电力系统静态安全分析并行计算系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248406B2 (en) * 2016-11-17 2019-04-02 International Business Machines Corporation Locale object management

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9886532B1 (en) * 2004-10-07 2018-02-06 Gregory M. Scallon Data integrity protection mechanism
CN107025205A (zh) * 2016-01-30 2017-08-08 华为技术有限公司 一种分布式系统中的训练模型的方法及设备
CN105718305A (zh) * 2016-03-15 2016-06-29 南京南瑞继保电气有限公司 一种基于进程的仿真任务并行调度方法
CN106096422A (zh) * 2016-06-27 2016-11-09 上海柯力士信息安全技术有限公司 一种针对网络脆弱性的安犬扫描器集成方法
CN110908776A (zh) * 2018-09-17 2020-03-24 网宿科技股份有限公司 定时任务的执行方法及相关装置、计算机可读存储介质
CN111522650A (zh) * 2019-02-02 2020-08-11 阿里巴巴集团控股有限公司 分布式系统的业务请求处理方法、装置及电子设备
CN110262882A (zh) * 2019-06-17 2019-09-20 北京思特奇信息技术股份有限公司 一种分布式的通讯命令调度系统及方法
CN112148546A (zh) * 2019-06-26 2020-12-29 南京南瑞继保工程技术有限公司 电力系统静态安全分析并行计算系统及方法
CN110515709A (zh) * 2019-07-25 2019-11-29 北京达佳互联信息技术有限公司 任务调度系统、方法、装置、电子设备及存储介质
CN111338773A (zh) * 2020-02-21 2020-06-26 华云数据有限公司 一种分布式定时任务调度方法、调度系统及服务器集群
CN111641678A (zh) * 2020-04-29 2020-09-08 深圳壹账通智能科技有限公司 任务调度方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN113342499A (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
US10509680B2 (en) Methods, systems and apparatus to perform a workflow in a software defined data center
US9319281B2 (en) Resource management method, resource management device, and program product
EP3567829B1 (en) Resource management method and apparatus
CN107168777B (zh) 分布式系统中资源的调度方法以及装置
CN108616424B (zh) 一种资源调度方法、计算机设备和系统
US20210406035A1 (en) Systems and methods for automatically updating compute resources
CN112162852A (zh) 一种多架构cpu节点的管理方法、装置及相关组件
CN113342499B (zh) 分布式任务调用方法、装置、设备、存储介质、程序产品
CN114610499A (zh) 任务调度方法、装置、计算机可读存储介质及电子设备
CN111666141A (zh) 任务调度方法、装置、设备及计算机存储介质
CN107463390B (zh) 一种软件升级方法及升级服务器
CN109257396A (zh) 一种分布式锁调度方法及装置
CN113946427A (zh) 用于多操作系统的任务处理方法、处理器及存储介质
US10970098B2 (en) Methods for sharing input-output device for process automation on a computing machine and devices thereof
CN107247784A (zh) 一种分布式事务的控制方法及事务管理器
CN110308914B (zh) 升级处理方法、装置、设备、系统及计算机可读存储介质
CN115687019A (zh) 数据库集群的故障处理方法、智能监控平台、设备和介质
CN113703946A (zh) 应用恢复方法及其装置、电子设备、计算机可读存储介质
JP2017033095A (ja) 情報処理システム、情報処理方法、プログラム、及び情報処置装置
CN110737533A (zh) 一种任务调度方法、装置及电子设备和存储介质
CN115794416B (zh) 基于Storm和Nacos的数据热切换方法和装置
US20230106414A1 (en) Managing updates to hosts in a computing environment based on fault domain host groups
CN112631727B (zh) 一种容器组pod的监控方法及装置
CN111078658B (zh) 一种集群文件系统挂载的方法和设备
JPH10289277A (ja) 障害対処要員割付処理装置

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