CN113515357B - 集群环境下批量任务的执行方法及装置 - Google Patents
集群环境下批量任务的执行方法及装置 Download PDFInfo
- Publication number
- CN113515357B CN113515357B CN202110422472.6A CN202110422472A CN113515357B CN 113515357 B CN113515357 B CN 113515357B CN 202110422472 A CN202110422472 A CN 202110422472A CN 113515357 B CN113515357 B CN 113515357B
- Authority
- CN
- China
- Prior art keywords
- server
- tasks
- task
- batch
- cluster
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 94
- 238000012545 processing Methods 0.000 claims abstract description 231
- 230000006870 function Effects 0.000 claims description 44
- 238000012544 monitoring process Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 238000011084 recovery Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N silicon dioxide Inorganic materials O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 239000010453 quartz Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
Abstract
本发明公开了一种集群环境下批量任务的执行方法及装置,涉及自动程序设计领域,该方法包括:将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态;将任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号;根据各个服务器执行批量任务的情况,更新任务处理表中批量任务的任务执行状态。本发明能够在确保任务不会重复执行的情况下充分利用集群下的所有服务器资源执行批量任务。
Description
技术领域
本发明涉及自动程序设计领域,尤其涉及一种集群环境下批量任务的执行方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
众所周知,集群是由多台服务器共同提供服务。集群环境下的批量任务执行存在如下问题:①当多台服务器同时提供服务时,如何解决任务重复执行的问题;②当集群中的部分服务器不可用时,如何在不重启服务器、不影响其他服务的情况下,快速将批量任务重新分配(包括未完成任务的分配和新任务的分配)给其他可用服务器的问题;③当集群中存在新增服务器时,如何快速将增的服务器快速加入到批量任务队列中。
现有集群环境的批量任务执行方法,主要有如下三种方案:
方案一:将执行批量任务的代码部署在一台服务器上,这样只有一台服务器执行批量任务,不存在任务重复执行的问题。该方案的缺点是:只有一台服务器执行批量任务,浪费其他服务器资源;代码分开部署,增加代码部署的复杂度;若执行批量任务的服务器宕机的话,会导致批量任务不能执行,如果该台服务器长时间未排除故障还需要考虑将执行批量任务的代码部署到其他机器上,需重启服务器,增加运维成本。
方案二:将执行批量任务的代码部署在所有服务器上,利用配置文件配置执行批量任务的开关,只在一台服务器执行批量任务。该方案的缺点是:只有一台服务器执行批量任务,浪费其他服务器资源,如果执行批量任务的服务器发生故障需要关闭其批量任务开关,并开启集群中剩下某台服务器的批量任务开关,并重启该服务器。
方案三:利用Quartz任务调度框架的集群功能执行批量任务。该方案的缺点是需要新建十几张数据库表,有一定的学习成本,若不了解其实现原理,一旦发生故障将难以排查。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例中提供了一种集群环境下批量任务的执行方法,用以解决现有集群在执行批量任务时存在服务器资源浪费、任务切换时需要重启服务器的技术问题,该方法包括:将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态;将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,所述服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号;根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态。
进一步地,在将待执行的批量任务插入到任务处理表中之前,所述方法还包括:在数据库中创建任务处理表,其中,所述任务处理表中包含如下字段:任务处理服务器编号字段、任务执行状态字段和任务处理次数字段,其中,所述任务处理服务器编号字段用于存储当前执行批量任务的服务器编号;所述任务执行状态字段用于存储任务处理服务器执行批量任务的处理状态,所述处理状态包括:待处理、处理中、处理成功和处理失败;所述任务处理次数字段用于存储批量任务执行失败时重新执行的次数。
进一步地,在将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器之前,所述方法还包括:在数据库中创建服务器编号表及对应的编号序列,其中,所述编号序列中包含的编号个数等于集群中可用于执行批量任务的服务器总数量。
进一步地,在数据库中创建服务器编号表之后,所述方法还包括:监测集群中各个服务器的状态信息;根据集群中各个服务器的状态信息,更新所述服务器编号表。
进一步地,在数据库中创建服务器编号表之后,所述方法还包括:创建服务器编号获取函数,其中,所述服务器编号获取函数用于从所述服务器编号表中获取执行批量任务的服务器编号。
进一步地,在数据库中创建服务器编号表之后,所述方法还包括:当所述服务器编号表中出现不可用服务器的情况下,删除所述服务器编号表中不可用服务器的服务器编号。
进一步地,在删除所述服务器编号表中不可用服务器的服务器编号之后,所述方法还包括:当不可用服务器恢复到可用状态的情况下,将恢复可用状态的服务器编号添加到所述服务器编号表。
进一步地,在删除所述服务器编号表中不可用服务器的服务器编号之后,所述方法还包括:将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至所述服务器编号表中其他可用的服务器上。
进一步地,在删除所述服务器编号表中不可用服务器的服务器编号之后,所述方法还包括:将不可用服务器上待处理的任务,直接分配至所述服务器编号表中其他可用的服务器上;根据不可用服务器的日志信息,将不可用服务器上处理中以及处理失败且处理次数未达到上限值的任务,分配至所述服务器编号表中其他可用的服务器上。
进一步地,在数据库中创建服务器编号表之后,所述方法还包括:监测集群中是否存在新增服务器;当集群中存在新增服务器的情况下,为新增服务器设置单独的编号;将新增服务器的编号添加到所述服务器编号表,并根据集群中当前可用服务器的数量,判断是否更新所述服务器编号表对应的编号序列。
进一步地,将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器,包括:通过循环遍历所述服务器编号表中各个服务器的方式,将所述任务处理表中的批量任务,分配到所述服务器编号表中的各个服务器。
本发明实施例中还提供了一种集群环境下批量任务的执行装置,用以解决现有集群在执行批量任务时存在服务器资源浪费、任务切换时需要重启服务器的技术问题,该装置包括:批量任务获取模块,用于将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态;批量任务分配模块,用于将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,所述服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号;任务状态更新模块,用于根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态。
进一步地,所述装置还包括:任务处理表创建模块,用于在数据库中创建任务处理表,其中,所述任务处理表中包含如下字段:任务处理服务器编号字段、任务执行状态字段和任务处理次数字段,其中,所述任务处理服务器编号字段用于存储当前执行批量任务的服务器编号;所述任务执行状态字段用于存储任务处理服务器执行批量任务的处理状态,所述处理状态包括:待处理、处理中、处理成功和处理失败;所述任务处理次数字段用于存储批量任务执行失败时重新执行的次数。
进一步地,所述装置还包括:服务器编号表创建模块,用于在数据库中创建服务器编号表及对应的编号序列,其中,所述编号序列中包含的编号个数等于集群中可用于执行批量任务的服务器总数量。
进一步地,所述装置还包括:服务器状态监测模块,用于监测集群中各个服务器的状态信息;服务器编号表更新模块,用于根据集群中各个服务器的状态信息,更新所述服务器编号表。
进一步地,所述装置还包括:服务器编号获取函数创建模块,用于创建服务器编号获取函数,其中,所述服务器编号获取函数用于从所述服务器编号表中获取执行批量任务的服务器编号。
进一步地,所述装置还包括:服务器宕机处理模块,用于当所述服务器编号表中出现不可用服务器的情况下,删除所述服务器编号表中不可用服务器的服务器编号。
进一步地,所述装置还包括:服务器宕机恢复处理模块,用于当不可用服务器恢复到可用状态的情况下,将恢复可用状态的服务器编号添加到所述服务器编号表。
进一步地,所述服务器宕机处理模块还用于:将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至所述服务器编号表中其他可用的服务器上。
进一步地,所述服务器宕机处理模块还用于:将不可用服务器上待处理的任务,直接分配至所述服务器编号表中其他可用的服务器上;根据不可用服务器的日志信息,将不可用服务器上处理中以及处理失败且处理次数未达到上限值的任务,分配至所述服务器编号表中其他可用的服务器上。
进一步地,所述装置还包括:集群新增服务器处理模块,用于:监测集群中是否存在新增服务器;当集群中存在新增服务器的情况下,为新增服务器设置单独的编号;将新增服务器的编号添加到所述服务器编号表,并根据集群中当前可用服务器的数量,判断是否更新所述服务器编号表对应的编号序列。
进一步地,所述批量任务分配模块还用于:通过循环遍历所述服务器编号表中各个服务器的方式,将所述任务处理表中的批量任务,分配到所述服务器编号表中的各个服务器。
本发明实施例中还提供了一种电子设备,用以解决现有集群在执行批量任务时存在服务器资源浪费、任务切换时需要重启服务器的技术问题,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述集群环境下批量任务的执行方法。
本发明实施例中还提供了一种计算机可读存储介质,用以解决现有集群在执行批量任务时存在服务器资源浪费、任务切换时需要重启服务器的技术问题,该计算机可读存储介质存储有执行上述集群环境下批量任务的执行方法的计算机程序。
本发明实施例中提供的集群环境下批量任务的执行方法、装置、电子设备及计算机可读存储介质,通过创建一个用于存储集群中所有可用于执行批量任务的服务器编号的服务器编号表,在将待执行的批量任务插入到任务处理表中后,根据该任务处理表,将待执行的批量任务分配到服务器编号表中的各个可用服务器,最后根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态。
本发明实施例能够在确保任务不会重复执行的情况下充分利用集群下的所有服务器资源执行批量任务,在集群中有部分服务器不可用(某些服务器宕机或者需要让出资源进行其他用途)的情况下通过简单的数据库更新操作即可将不可用服务器的任务重新分配到可用服务器下,通过数据库的删除操作即可让后续批量任务分配到可用服务器下,批量任务重新分配过程中无需重启服务器,不会造成服务器的其他功能不可用,也不会造成批量任务执行有太大的延迟,在服务器恢复可用后通过简单的数据库的插入操作将服务器加入批量任务处理服务器中。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种集群环境下批量任务的执行方法流程图;
图2为本发明实施例中提供的一种任务处理表创建流程图;
图3为本发明实施例中提供的一种服务器编号表创建流程图;
图4为本发明实施例中提供的一种服务器编号表更新流程图;
图5为本发明实施例中提供的一种服务器编号获取流程图;
图6为本发明实施例中提供的一种集群服务器宕机处理流程图;
图7为本发明实施例中提供的一种集群任务切换方法流程图;
图8为本发明实施例中提供的又一种集群任务切换方法流程图;
图9为本发明实施例中提供的一种集群新增服务器的处理流程图;
图10为本发明实施例中初始化模块、任务生成模块和任务处理模块的示意图;
图11为本发明实施例中服务器异常处理模块的示意图;
图12为本发明实施例中服务器新增模块的示意图;
图13为本发明实施例中提供的一种集群环境下批量任务的执行装置示意图;
图14为本发明实施例中提供的一种可选的集群环境下批量任务的执行装置示意图;
图15为本发明实施例中提供的一种电子设备示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例中提供了一种集群环境下批量任务的执行方法,图1为本发明实施例中提供的一种集群环境下批量任务的执行方法流程图,如图1所示,包括:
S101,将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态。
需要说明的是,上述任务处理表可以是预先在数据库中创建的用于存储待执行的批量任务及批量任务的任务执行状态的数据表。本发明实施例中的集群是指由多个服务器对外提供服务的系统,在通过集群执行批量任务时,可以将待执行的批量任务放入任务处理表中,以便集群根据该任务处理表,将批量任务分配到集群中的各个服务器上执行。本发明实施例中待执行的批量任务包含多个任务,则上述任务处理表中包含多个任务及各个任务的执行状态。
S102,将任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号。
需要说明的是,上述服务器编号表可以是预先在数据库中创建的用于存储集群中所有可用于执行批量任务的服务器编号的数据表。在具体实施时可以预先根据集群中可用于执行批量任务的服务器(即可用状态的服务器),创建一个服务器编号列表。
本发明实施例中,通过将集群中可用状态的服务器添加到服务器编号表中,能够充分利用集群的服务器资源,来执行任务处理表中的批量任务。
在一个实施例中,可以通过循环遍历服务器编号表中各个服务器的方式,将任务处理表中的批量任务,分配到服务器编号表中的各个服务器。
S103,根据各个服务器执行批量任务的情况,更新任务处理表中批量任务的任务执行状态。
由于任务处理表还用于记录批量任务的任务执行状态,因而,可以根据各个服务器执行批量任务的情况,更新任务处理表中批量任务的任务执行状态,以便在集群出现服务器宕机时,可以根据任务执行状态,将宕机服务器上的任务分配到其他服务器上。
在一个实施例中,如图2所示,在将待执行的批量任务插入到任务处理表中之前,本发明实施例中提供的集群环境下批量任务的执行方法还可以包括如下步骤:
S201,在数据库中创建任务处理表,其中,任务处理表中包含如下字段:任务处理服务器编号字段、任务执行状态字段和任务处理次数字段,其中,任务处理服务器编号字段用于存储当前执行批量任务的服务器编号;任务执行状态字段用于存储任务处理服务器执行批量任务的处理状态,处理状态包括:待处理、处理中、处理成功和处理失败;任务处理次数字段用于存储批量任务执行失败时重新执行的次数。
在一个实施例中,如图3所示,在将任务处理表中的批量任务,分配到服务器编号表中的各个服务器之前,本发明实施例中提供的集群环境下批量任务的执行方法还可以包括如下步骤:
S301,在数据库中创建服务器编号表及对应的编号序列,其中,编号序列中包含的编号个数等于集群中可用于执行批量任务的服务器总数量。
在具体实施时,上述S301可以通过如下步骤来实现:获取集群中可用于执行批量任务的服务器信息;根据集群中可用于执行批量任务的服务器信息,在数据库中创建服务器编号表及对应的编号序列。
为了实现自动更新服务器编号表中的可用服务器,在一个实施例中,如图4所示,在数据库中创建服务器编号表之后,本发明实施例中提供的集群环境下批量任务的执行方法还可以通过如下步骤来实现服务器编号表的更新:
S401,监测集群中各个服务器的状态信息;
S402,根据集群中各个服务器的状态信息,更新服务器编号表。
在一个实施例中,如图5所示,在数据库中创建服务器编号表之后,本发明实施例中提供的集群环境下批量任务的执行方法还可以包括如下步骤:
S501,创建服务器编号获取函数,其中,服务器编号获取函数用于从服务器编号表中获取执行批量任务的服务器编号。
通过上述实施例,能够快速获取待执行批量任务的服务器编号,从而快速执行批量任务。
在一个实施例中,如图6所示,在数据库中创建服务器编号表之后,本发明实施例中提供的集群环境下批量任务的执行方法还可以包括如下步骤:
S601,当服务器编号表中出现不可用服务器的情况下,删除服务器编号表中不可用服务器的服务器编号。
通过上述实施例,可通过简单的数据库操作,实现将宕机等不可用服务器切换掉,防止将批量任务分配给不可用的服务器。
进一步地,在删除服务器编号表中不可用服务器的服务器编号之后,本发明实施例中提供的集群环境下批量任务的执行方法还可以包括如下步骤:
S602,当不可用服务器恢复到可用状态的情况下,将恢复可用状态的服务器编号添加到服务器编号表。
通过上述实施例,可通过简单的数据库操作,实现将宕机后又恢复可用状态服务器自动更新到服务器编号列表,以便执行批量任务。
在一个实施例中,当系统能够容忍少量任务重复执行的情况下,如图7所示,在删除服务器编号表中不可用服务器的服务器编号之后,本发明实施例中提供的集群环境下批量任务的执行方法可以通过如下步骤实现任务切换:
S701,将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至服务器编号表中其他可用的服务器上。
在具体实施时,可根据任务处理表和服务器编号表,将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至服务器编号表中其他可用的服务器上。
通过上述实施例,可通过简单的数据库操作,实现将宕机等不可用服务器上的任务自动切换到其他可用服务器上执行的目的。
在另一个实施例中,当系统不能容忍任务重复执行的情况下,如图8所示,在删除服务器编号表中不可用服务器的服务器编号之后,本发明实施例中提供的集群环境下批量任务的执行方法还可以通过如下步骤实现任务切换:
S801,将不可用服务器上待处理的任务,直接分配至服务器编号表中其他可用的服务器上;
S802,根据不可用服务器的日志信息,将不可用服务器上处理中以及处理失败且处理次数未达到上限值的任务,分配至服务器编号表中其他可用的服务器上。
在具体实施时,可根据任务处理表和服务器编号表,将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至服务器编号表中其他可用的服务器上。
通过上述实施例,不仅可通过简单的数据库操作,实现将宕机等不可用服务器上的任务自动切换到其他可用服务器上执行的目的;而且不会存在任务重复执行的情况。
在一个实施例中,如图9所示,在删除服务器编号表中不可用服务器的服务器编号之后,本发明实施例中提供的集群环境下批量任务的执行方法可以通过如下步骤实现集群新增服务器的处理:
S901,监测集群中是否存在新增服务器;
S902,当集群中存在新增服务器的情况下,为新增服务器设置单独的编号;
S903,将新增服务器的编号添加到服务器编号表,并根据集群中当前可用服务器的数量,判断是否更新服务器编号表对应的编号序列。
通过上述实施例,能够自动监测集群中出现的新增服务器,并通过简单的数据库操作,自动将集群中的新增服务器添加到服务器编号表,以用于批量任务的执行。
由上可知,本发明实施例中提供的集群环境下批量任务的执行方法,通过创建一个用于存储集群中所有可用于执行批量任务的服务器编号的服务器编号表,在将待执行的批量任务插入到任务处理表中后,根据该任务处理表,将待执行的批量任务分配到服务器编号表中的各个可用服务器,最后根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态。
本发明实施例提供的集群环境下批量任务的执行方法,能够在确保任务不会重复执行的情况下充分利用集群下的所有服务器资源执行批量任务,在集群中有部分服务器不可用(某些服务器宕机或者需要让出资源进行其他用途)的情况下通过简单的数据库更新操作即可将不可用服务器的任务重新分配到可用服务器下,通过数据库的删除操作即可让后续批量任务分配到可用服务器下,批量任务重新分配过程中无需重启服务器,不会造成服务器的其他功能不可用,也不会造成批量任务执行有太大的延迟,在服务器恢复可用后通过简单的数据库的插入操作将服务器加入批量任务处理服务器中。
根据本发明实施例中提供的集群环境下执行批量任务的方法,可开发一个集群环境下执行批量任务的系统,该系统包括:初始化模块、任务生成模块、任务处理模块、服务器异常处理模块和服务器新增模块,其中,服务器异常处理模块和服务器新增模块为独立的模块。图10示出了初始化模块、任务生成模块和任务处理模块;图11示出了服务器异常处理模块;图12示出了服务器新增模块。
下面对各个模块实现的功能分别进行说明:
(一)初始化模块:
1)数据库新建服务器编号表TBL_SERVER_NO用于存储所有可用服务器编号,创建一个名为SEQ_SERVER_NO的序列号,起始值为1,最小值为1,自增值为1,最大值n为集群可用于执行批量任务服务器编号的最大值(如果后续预计集群会新加入服务器且数据库服务器资源充足n值可以设大一点,以免新增服务器之后重建序列号),sequence设置为CYCLE属性,以便批量任务能够循环分配给所有可用服务器:
CREATE SEQUENCE SEQ_SERVER_NO
START WITH 1
INCREMENT BY 1
MAXVALUE n
----n为集群可用服务器编号最大值;
----可根据未来预期冗余
MINVALUE 1
CYCLE
NOCACHE---确保序列连续
NOORDER;
创建服务器编号获取函数:
CREATE OR REPLACE FUNCTION FN_GETAVAILABLESERVERNO RETURNNUMBER
IS V_SEQ NUMBER;-----返回可用的服务器编号
maxLoopTimes NUMBER;
----最大查找可用服务器次数,该值不小于集群中可用服务器编号最大值
----可根据未来预计服务器新增情况,有一定冗余,设为比集群中可用服务器编号最大值略大一点的值
cnt NUMBER;
-----某服务器编号数量,可用为1,不可用为0,用于判断服务器是否可用,
-----不可用则不分配任务给该服务器
loopTimes number;
-----某次获取可用服务器编号时循环查找可用服务器的次数
-----loopTimes等于maxLoopTimes时停止查找,防止所有服务器不可用时死循环。
BEGIN
maxLoopTimes:=10;
cnt:=0;
V_SEQ:=0;
loopTimes:=0;
while(cnt=0and loopTimes<maxServerNo)loop
SELECT schema.SEQ_SERVER_NO.NEXTVAL into V_SEQ FROM DUAL;
-----SEQUENCE自增
SELECT COUNT(1)into CNT FROM shcema.TBL_SERVER_NO T WHERET.SERVER_NO=V_SEQ;
-----确定服务器是否可用,不可用序列号继续自增
loopTimes:=loopTimes+1;
end loop;
return V_SEQ;
END;
新建任务处理表,表中包含处理任务服务器编号字段(用于明确哪台服务器处理任务),任务执行状态字段(1-待处理2-处理中3-处理成功4-处理失败),任务处理次数字段(用于任务执行失败时需要重新执行的次数,根据实际情况配置)。
2)服务器编号的初始化包括:给集群中每台服务器用数字进行编号1~n,服务器代码新增配置文件,配置默认服务器编号键值对serverNo=1;部署完服务器代码后修改每台服务器编号的值为实际服务器编号;用INSERT语句将可用服务器编号初始化到服务器编号表中。
(二)任务生成模块:数据库生成批量任务插入任务处理表时,处理任务服务器编号通过服务器编号获取函数生成,任务执行状态置为1-待处理,任务处理次数为0。
(三)任务处理模块:
1)任务时间调度配置:Quartz任务调度框架非常强大,为了简单起见,只使用其时间调度配置功能,由于不是本发明的核心,不作过多的介绍,具体的配置过程查阅官方文档即可。本发明旨在确保不重复执行任务的情况下充分利用集群可用服务器资源,简单化分配批量任务,而未使用Quartz的空间调度功能亦即本发明的核心。
2)筛选任务:Quartz中配置的任务执行时间到达时,服务器根据配置文件中的服务器编号只把本服务器编号下任务执行状态为1-待处理和任务执行状态为4-处理失败且任务处理次数<5(任务处理次数根据实际情况配置或者不配置)的批量任务筛选出来,每次最多取出5000条任务,取出任务后任务执行状态更新为2-处理中。
3)处理任务以及更新任务处理结果:所有可用服务器处理取出的任务循环单笔执行,每笔任务执行完成后根据执行成功与否更新任务执行状态为3-处理成功或者4-处理失败,任务处理次数加1。所有取出的任务处理完成之后,继续循环取出需要处理的任务。
(四)服务器异常处理模块:当服务器因为宕机或者另有其他用处导致不可用时,只要简单的DELETE语句将服务器编号表TBL_SERVER_NO中不可用服务器编号删除,由于服务器故障可能导致有些任务已经处理完成但是来不及更新任务处理标志为处理成功或者处理失败,如果系统能够容忍少量重复任务执行的话就将待处理、处理中以及处理失败且处理次数未达到上限的任务直接用update语句重新分配给其他服务器即可,如果系统不能够容忍重复任务,则先将待处理的任务重新分配给其他服务器,处理中和处理失败且处理次数未达到上限的任务则根据服务器日志,确定任务是否已经处理成功或者处理失败但是处理次数达到上限,日志确定处理失败且处理次数未达到上限的任务再重新分配给其他服务器。倘若服务器恢复可用,则只需要简单的INSERT语句将恢复可用服务器编号重新插入服务器编号表TBL_SERVER_NO中即可。
(五)服务器新增模块:对于集群有新增服务器情况(单纯新增,非服务器恢复可用),则相应的给新增服务器单独编号为k(不可与其他服务器编号重复),修改服务器编号配置文件服务器编号键值对serverNo=k,根据冗余设计情况决定是否需要修改序列号SEQ_SERVER_NO中MAXVALUE的值并重建序列号,用INSERT语句将恢复可用服务器编号重新插入服务器编号表TBL_SERVER_NO中。根据冗余设计情况服务器编号获取函数FN_GETAVAILABLESERVERNO中最大循环次数maxLoopTimes是否需要重新赋值为当前集群服务器编号最大值,并重新编译函数。
通过本发明实施例,能够在确保任务不会重复执行的情况下充分利用集群下的所有服务器资源执行批量任务,在集群中有部分服务器不可用的情况下通过简单的数据库更新操作即可将故障服务器的任务重新分配到可用服务器下,通过数据库的删除操作即可让后续批量任务分配到可用服务器下,批量任务重新分配过程中无需重启服务器,不会造成其他服务不可用,单点故障不会造成执行批量任务延迟太多。倘若集群有新加入服务器,则修改服务器配置文件为相应服务器编号,数据库服务器编号表插入相应数据,将序号的MAXVALUE属性加上新增服务器的数量重建序列号(视是否有冗余设计来决定是否需要重建序列号),修改maxLoopTimes为当前集群服务器编号最大值重建服务器编号获取函数即可将服务器加入批量任务处理服务器中(视是否有冗余设计来决定是否需要重建函数)。
基于同一发明构思,本发明实施例中还提供了一种集群环境下批量任务的执行装置,如下面的实施例所述。由于该装置解决问题的原理与集群环境下批量任务的执行方法相似,因此该装置的实施可以参见集群环境下批量任务的执行方法的实施,重复之处不再赘述。
图13为本发明实施例中提供的一种集群环境下批量任务的执行装置示意图,如图13所示,该装置包括:批量任务获取模块1301、批量任务分配模块1302和任务状态更新模块1303。
其中,批量任务获取模块1301,用于将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态;批量任务分配模块1302,用于将任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号;任务状态更新模块1303,用于根据各个服务器执行批量任务的情况,更新任务处理表中批量任务的任务执行状态。
此处需要说明的是,上述批量任务获取模块1301、批量任务分配模块1302和任务状态更新模块1303对应于方法实施例中的S101~S103,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
在一个实施例中,如图14所示,本发明实施例中提供的集群环境下批量任务的执行装置还可以包括:任务处理表创建模块1304,用于在数据库中创建任务处理表,其中,任务处理表中包含如下字段:任务处理服务器编号字段、任务执行状态字段和任务处理次数字段,其中,任务处理服务器编号字段用于存储当前执行批量任务的服务器编号;任务执行状态字段用于存储任务处理服务器执行批量任务的处理状态,处理状态包括:待处理、处理中、处理成功和处理失败;任务处理次数字段用于存储批量任务执行失败时重新执行的次数。
此处需要说明的是,上述任务处理表创建模块1304对应于方法实施例中的S201,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
在一个实施例中,如图14所示,本发明实施例中提供的集群环境下批量任务的执行装置还可以包括:服务器编号表创建模块1305,用于在数据库中创建服务器编号表及对应的编号序列,其中,编号序列中包含的编号个数等于集群中可用于执行批量任务的服务器总数量。
此处需要说明的是,上述服务器编号表创建模块1305对应于方法实施例中的S301,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
在一个实施例中,如图14所示,本发明实施例中提供的集群环境下批量任务的执行装置还可以包括:服务器状态监测模块1306和服务器编号表更新模块1307。
其中,服务器状态监测模块1306,用于监测集群中各个服务器的状态信息;服务器编号表更新模块1307,用于根据集群中各个服务器的状态信息,更新服务器编号表。
此处需要说明的是,上述服务器状态监测模块1306和服务器编号表更新模块1307对应于方法实施例中的S401~S402,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
在一个实施例中,如图14所示,本发明实施例中提供的集群环境下批量任务的执行装置还可以包括:服务器编号获取函数创建模块1308,用于创建服务器编号获取函数,其中,服务器编号获取函数用于从服务器编号表中获取执行批量任务的服务器编号。
此处需要说明的是,上述服务器编号获取函数创建模块1308对应于方法实施例中的S501,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
在一个实施例中,如图14所示,本发明实施例中提供的集群环境下批量任务的执行装置还可以包括:服务器宕机处理模块1309,用于当服务器编号表中出现不可用服务器的情况下,删除服务器编号表中不可用服务器的服务器编号。
在一个实施例中,如图14所示,本发明实施例中提供的集群环境下批量任务的执行装置还可以包括:服务器宕机恢复处理模块1310,用于当不可用服务器恢复到可用状态的情况下,将恢复可用状态的服务器编号添加到服务器编号表。
此处需要说明的是,上述服务器宕机处理模块1309和服务器宕机恢复处理模块1310对应于方法实施例中的S601和S602,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
在一个实施例中,本发明实施例中提供的集群环境下批量任务的执行装置中,服务器宕机处理模块1309还用于:将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至服务器编号表中其他可用的服务器上。
在一个实施例中,本发明实施例中提供的集群环境下批量任务的执行装置中,服务器宕机处理模块1309还用于:将不可用服务器上待处理的任务,直接分配至服务器编号表中其他可用的服务器上;根据不可用服务器的日志信息,将不可用服务器上处理中以及处理失败且处理次数未达到上限值的任务,分配至服务器编号表中其他可用的服务器上。
在一个实施例中,如图14所示,本发明实施例中提供的集群环境下批量任务的执行装置还包括:集群新增服务器处理模块1311用于:监测集群中是否存在新增服务器;当集群中存在新增服务器的情况下,为新增服务器设置单独的编号;将新增服务器的编号添加到服务器编号表,并根据集群中当前可用服务器的数量,判断是否更新服务器编号表对应的编号序列。
此处需要说明的是,上述集群新增服务器处理模块1311对应于方法实施例中的S901~S903,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
在一个实施例中,本发明实施例中提供的集群环境下批量任务的执行装置中,批量任务分配模块1302还用于:通过循环遍历服务器编号表中各个服务器的方式,将任务处理表中的批量任务,分配到服务器编号表中的各个服务器。
由上可知,本发明实施例中提供的集群环境下批量任务的执行装置,通过创建一个用于存储集群中所有可用于执行批量任务的服务器编号的服务器编号表,在将待执行的批量任务插入到任务处理表中后,根据该任务处理表,将待执行的批量任务分配到服务器编号表中的各个可用服务器,最后根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态。
通过本发明实施例提供的集群环境下批量任务的执行装置,能够在确保任务不会重复执行的情况下充分利用集群下的所有服务器资源执行批量任务,在集群中有部分服务器不可用(某些服务器宕机或者需要让出资源进行其他用途)的情况下通过简单的数据库更新操作即可将不可用服务器的任务重新分配到可用服务器下,通过数据库的删除操作即可让后续批量任务分配到可用服务器下,批量任务重新分配过程中无需重启服务器,不会造成服务器的其他功能不可用,也不会造成批量任务执行有太大的延迟,在服务器恢复可用后通过简单的数据库的插入操作将服务器加入批量任务处理服务器中。
基于同一发明构思,本发明实施例中还提供了一种用于实现上述集群环境下批量任务的执行方法中的全部或部分内容的电子设备实施例。该电子设备具体包含有如下内容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现上述集群环境下批量任务的执行方法的实施例及用于实现上述集群环境下批量任务的执行装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
图15为本发明实施例中提供的一种电子设备的系统组成结构示意图。如图15所示,该电子设备150可以包括处理器1501和存储器1502;存储器1502耦合到处理器1501。值得注意的是,该图15是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在一个实施例中,集群环境下批量任务的执行方法实现的功能可以被集成到处理器1501中。其中,处理器1501可以被配置为进行如下控制:将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态;将任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号;根据各个服务器执行批量任务的情况,更新任务处理表中批量任务的任务执行状态。
由上可知,本发明的实施例中提供的电子设备,通过创建一个用于存储集群中所有可用于执行批量任务的服务器编号的服务器编号表,在将待执行的批量任务插入到任务处理表中后,根据该任务处理表,将待执行的批量任务分配到服务器编号表中的各个可用服务器,最后根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态。
通过本发明实施例提供的电子设备,能够在确保任务不会重复执行的情况下充分利用集群下的所有服务器资源执行批量任务,在集群中有部分服务器不可用(某些服务器宕机或者需要让出资源进行其他用途)的情况下通过简单的数据库更新操作即可将不可用服务器的任务重新分配到可用服务器下,通过数据库的删除操作即可让后续批量任务分配到可用服务器下,批量任务重新分配过程中无需重启服务器,不会造成服务器的其他功能不可用,也不会造成批量任务执行有太大的延迟,在服务器恢复可用后通过简单的数据库的插入操作将服务器加入批量任务处理服务器中。
在另一个实施例中,集群环境下批量任务的执行装置可以与处理器1501分开配置,例如可以将集群环境下批量任务的执行装置配置为与处理器1501连接的芯片,通过处理器的控制来实现集群环境下批量任务的执行方法的功能。
如图15所示,该电子设备150还可以包括:通信模块1503、输入单元1504、音频处理单元1505、显示器1506、电源1507。值得注意的是,电子设备150也并不是必须要包括图15中所示的所有部件;此外,电子设备150还可以包括图15中没有示出的部件,可以参考现有技术。
如图15所示,处理器1501有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器1501接收输入并控制电子设备150的各个部件的操作。
其中,存储器1502,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且处理器1501可执行该存储器1502存储的该程序,以实现信息存储或处理等。
输入单元1504向处理器1501提供输入。该输入单元1504例如为按键或触摸输入装置。电源1507用于向电子设备150提供电力。显示器1506用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器1502可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器1502还可以是某种其它类型的装置。存储器1502包括缓冲存储器15021(有时被称为缓冲器)。存储器1502可以包括应用/功能存储部15022,该应用/功能存储部15022用于存储应用程序和功能程序或用于通过处理器1501执行电子设备150的操作的流程。
存储器1502还可以包括数据存储部15023,该数据存储部15023用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器1502的驱动程序存储部15024可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块1503即为经由天线1508发送和接收信号的发送机/接收机。通信模块(发送机/接收机)1503耦合到处理器1501,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块1503,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)1503还经由音频处理单元1505耦合到扬声器1509和麦克风1510,以经由扬声器1509提供音频输出,并接收来自麦克风1510的音频输入,从而实现通常的电信功能。音频处理单元1505可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理单元1505还耦合到处理器1501,从而使得可以通过麦克风1510能够在本机上录音,且使得可以通过扬声器1509来播放本机上存储的声音。
本发明的实施例中还提供了一种用于实现上述实施例中集群环境下批量任务的执行方法中全部步骤的一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的集群环境下批量任务的执行方法的全部步骤,例如,该处理器执行该计算机程序时实现下述步骤:将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态;将任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号;根据各个服务器执行批量任务的情况,更新任务处理表中批量任务的任务执行状态。
由上可知,本发明的实施例中提供的计算机可读存储介质,通过创建一个用于存储集群中所有可用于执行批量任务的服务器编号的服务器编号表,在将待执行的批量任务插入到任务处理表中后,根据该任务处理表,将待执行的批量任务分配到服务器编号表中的各个可用服务器,最后根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态。
通过本发明实施例提供的计算机可读存储介质,能够在确保任务不会重复执行的情况下充分利用集群下的所有服务器资源执行批量任务,在集群中有部分服务器不可用(某些服务器宕机或者需要让出资源进行其他用途)的情况下通过简单的数据库更新操作即可将不可用服务器的任务重新分配到可用服务器下,通过数据库的删除操作即可让后续批量任务分配到可用服务器下,批量任务重新分配过程中无需重启服务器,不会造成服务器的其他功能不可用,也不会造成批量任务执行有太大的延迟,在服务器恢复可用后通过简单的数据库的插入操作将服务器加入批量任务处理服务器中。
虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本领域技术人员应明白,本说明书的实施例可提供为方法、装置(系统)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。可单独使用本发明的每个方面和/或实施例,或者与一个或更多其他方面和/或其他实施例结合使用。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例中所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (11)
1.一种集群环境下批量任务的执行方法,其特征在于,包括:
将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态,待执行的批量任务包含多个任务,任务处理表中包含多个任务及各个任务的执行状态;
将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,所述服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号,数据库中创建服务器编号表是根据集群中可用于执行批量任务的服务器信息创建的;
根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态;
在将待执行的批量任务插入到任务处理表中之前,所述方法还包括:
在数据库中创建任务处理表,其中,所述任务处理表中包含如下字段:任务处理服务器编号字段、任务执行状态字段和任务处理次数字段,其中,所述任务处理服务器编号字段用于存储当前执行批量任务的服务器编号;所述任务执行状态字段用于存储任务处理服务器执行批量任务的处理状态,所述处理状态包括:待处理、处理中、处理成功和处理失败;所述任务处理次数字段用于存储批量任务执行失败时重新执行的次数;
当系统能够容忍少量任务重复执行的情况下,在删除所述服务器编号表中不可用服务器的服务器编号之后,所述方法还包括:将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至所述服务器编号表中其他可用的服务器上;
当系统不能容忍任务重复执行的情况下,在删除所述服务器编号表中不可用服务器的服务器编号之后,所述方法还包括:将不可用服务器上待处理的任务,直接分配至所述服务器编号表中其他可用的服务器上;根据不可用服务器的日志信息,将不可用服务器上处理中以及处理失败且处理次数未达到上限值的任务,分配至所述服务器编号表中其他可用的服务器上,使得不会存在任务重复执行的情况;
在将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器之前,所述方法还包括:在数据库中创建服务器编号表及对应的编号序列,其中,所述编号序列中包含的编号个数等于集群中可用于执行批量任务的服务器总数量;
在数据库中创建服务器编号表及对应的编号序列,包括:获取集群中可用于执行批量任务的服务器信息;根据集群中可用于执行批量任务的服务器信息,在数据库中创建服务器编号表及对应的编号序列;
在数据库中创建服务器编号表之后,所述方法还包括:创建服务器编号获取函数,其中,所述服务器编号获取函数用于从所述服务器编号表中获取执行批量任务的服务器编号;
在数据库中创建服务器编号表之后,所述方法还包括:
监测集群中是否存在新增服务器;
当集群中存在新增服务器的情况下,为新增服务器设置单独的编号;
将新增服务器的编号添加到所述服务器编号表,并根据集群中当前可用服务器的数量,判断是否更新所述服务器编号表对应的编号序列;
判断是否更新所述服务器编号表对应的编号序列,包括:根据集群中当前可用服务器的数量,判断是否更新所述服务器编号表对应的编号序列中集群可用服务器编号最大值并重建编号序列,将恢复可用服务器编号重新插入服务器编号表。
2.如权利要求1所述的方法,其特征在于,在数据库中创建服务器编号表之后,所述方法还包括:
监测集群中各个服务器的状态信息;
根据集群中各个服务器的状态信息,更新所述服务器编号表。
3.如权利要求1所述的方法,其特征在于,在数据库中创建服务器编号表之后,所述方法还包括:
当所述服务器编号表中出现不可用服务器的情况下,删除所述服务器编号表中不可用服务器的服务器编号。
4.如权利要求3所述的方法,其特征在于,在删除所述服务器编号表中不可用服务器的服务器编号之后,所述方法还包括:
当不可用服务器恢复到可用状态的情况下,将恢复可用状态的服务器编号添加到所述服务器编号表。
5.如权利要求1至4任一项所述的方法,其特征在于,将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器,包括:
通过循环遍历所述服务器编号表中各个服务器的方式,将所述任务处理表中的批量任务,分配到所述服务器编号表中的各个服务器。
6.一种集群环境下批量任务的执行装置,其特征在于,包括:
批量任务获取模块,用于将待执行的批量任务插入到任务处理表中,其中,任务处理表用于存储待执行的批量任务及批量任务的任务执行状态,待执行的批量任务包含多个任务,任务处理表中包含多个任务及各个任务的执行状态;
批量任务分配模块,用于将所述任务处理表中的批量任务,分配到服务器编号表中的各个服务器,其中,所述服务器编号表中包含:集群中所有可用于执行批量任务的服务器编号,数据库中创建服务器编号表是根据集群中可用于执行批量任务的服务器信息创建的;
任务状态更新模块,用于根据各个服务器执行批量任务的情况,更新所述任务处理表中批量任务的任务执行状态;
所述装置还包括:
任务处理表创建模块,用于在数据库中创建任务处理表,其中,所述任务处理表中包含如下字段:任务处理服务器编号字段、任务执行状态字段和任务处理次数字段,其中,所述任务处理服务器编号字段用于存储当前执行批量任务的服务器编号;所述任务执行状态字段用于存储任务处理服务器执行批量任务的处理状态,所述处理状态包括:待处理、处理中、处理成功和处理失败;所述任务处理次数字段用于存储批量任务执行失败时重新执行的次数;
所述服务器宕机处理模块还用于:
当系统能够容忍少量任务重复执行的情况下,将不可用服务器上待处理、处理中以及处理失败且处理次数未达到上限值的任务,直接分配至所述服务器编号表中其他可用的服务器上;
所述服务器宕机处理模块还用于:
当系统不能容忍任务重复执行的情况下,将不可用服务器上待处理的任务,直接分配至所述服务器编号表中其他可用的服务器上;根据不可用服务器的日志信息,将不可用服务器上处理中以及处理失败且处理次数未达到上限值的任务,分配至所述服务器编号表中其他可用的服务器上,使得不会存在任务重复执行的情况;
所述装置还包括:服务器编号表创建模块,用于在数据库中创建服务器编号表及对应的编号序列,其中,所述编号序列中包含的编号个数等于集群中可用于执行批量任务的服务器总数量;
所述装置还包括:服务器状态监测模块,用于监测集群中各个服务器的状态信息;服务器编号表更新模块,用于根据集群中各个服务器的状态信息,更新所述服务器编号表;
所述装置还包括:服务器编号获取函数创建模块,用于创建服务器编号获取函数,其中,所述服务器编号获取函数用于从所述服务器编号表中获取执行批量任务的服务器编号;
所述装置还包括:集群新增服务器处理模块,用于:监测集群中是否存在新增服务器;当集群中存在新增服务器的情况下,为新增服务器设置单独的编号;将新增服务器的编号添加到所述服务器编号表,并根据集群中当前可用服务器的数量,判断是否更新所述服务器编号表对应的编号序列;
判断是否更新所述服务器编号表对应的编号序列,包括:根据集群中当前可用服务器的数量,判断是否更新所述服务器编号表对应的编号序列中集群可用服务器编号最大值并重建编号序列,将恢复可用服务器编号重新插入服务器编号表。
7.如权利要求6所述的装置,其特征在于,所述装置还包括:
服务器宕机处理模块,用于当所述服务器编号表中出现不可用服务器的情况下,删除所述服务器编号表中不可用服务器的服务器编号。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
服务器宕机恢复处理模块,用于当不可用服务器恢复到可用状态的情况下,将恢复可用状态的服务器编号添加到所述服务器编号表。
9.如权利要求6至8任一项所述的装置,其特征在于,所述批量任务分配模块还用于:
通过循环遍历所述服务器编号表中各个服务器的方式,将所述任务处理表中的批量任务,分配到所述服务器编号表中的各个服务器。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一项所述集群环境下批量任务的执行方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5任一项所述集群环境下批量任务的执行方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110422472.6A CN113515357B (zh) | 2021-04-20 | 2021-04-20 | 集群环境下批量任务的执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110422472.6A CN113515357B (zh) | 2021-04-20 | 2021-04-20 | 集群环境下批量任务的执行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515357A CN113515357A (zh) | 2021-10-19 |
CN113515357B true CN113515357B (zh) | 2024-03-08 |
Family
ID=78062829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110422472.6A Active CN113515357B (zh) | 2021-04-20 | 2021-04-20 | 集群环境下批量任务的执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515357B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002215859A (ja) * | 2001-01-18 | 2002-08-02 | Toshiba Corp | ワークフロー管理方法、ワークフロー管理システム及びワークフロー管理サーバー |
CN104158911A (zh) * | 2014-09-01 | 2014-11-19 | 青岛海信电器股份有限公司 | 一种面向服务器集群的控制方法及系统 |
CN107329820A (zh) * | 2016-04-28 | 2017-11-07 | 杭州海康威视数字技术股份有限公司 | 一种用于集群系统的任务处理方法及装置 |
CN110443695A (zh) * | 2019-07-31 | 2019-11-12 | 中国工商银行股份有限公司 | 数据处理方法及其装置、电子设备和介质 |
CN110633135A (zh) * | 2019-08-15 | 2019-12-31 | 中国平安财产保险股份有限公司 | 异步任务分配方法、装置、计算机设备及存储介质 |
CN112000451A (zh) * | 2020-08-19 | 2020-11-27 | 中国建设银行股份有限公司 | 批量作业调度系统、方法、设备及存储介质 |
-
2021
- 2021-04-20 CN CN202110422472.6A patent/CN113515357B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002215859A (ja) * | 2001-01-18 | 2002-08-02 | Toshiba Corp | ワークフロー管理方法、ワークフロー管理システム及びワークフロー管理サーバー |
CN104158911A (zh) * | 2014-09-01 | 2014-11-19 | 青岛海信电器股份有限公司 | 一种面向服务器集群的控制方法及系统 |
CN107329820A (zh) * | 2016-04-28 | 2017-11-07 | 杭州海康威视数字技术股份有限公司 | 一种用于集群系统的任务处理方法及装置 |
CN110443695A (zh) * | 2019-07-31 | 2019-11-12 | 中国工商银行股份有限公司 | 数据处理方法及其装置、电子设备和介质 |
CN110633135A (zh) * | 2019-08-15 | 2019-12-31 | 中国平安财产保险股份有限公司 | 异步任务分配方法、装置、计算机设备及存储介质 |
CN112000451A (zh) * | 2020-08-19 | 2020-11-27 | 中国建设银行股份有限公司 | 批量作业调度系统、方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113515357A (zh) | 2021-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389900B (zh) | 一种分布式数据库集群测试方法、装置及存储介质 | |
US9367301B1 (en) | Dynamic update of a distributed message processing system | |
US9405630B2 (en) | Methods and apparatus to perform site recovery of a virtual data center | |
CN106575247B (zh) | 计算集群的容错联盟 | |
CN105515872B (zh) | 配置信息的更新方法、装置及系统 | |
CN111770169A (zh) | 设备固件升级的方法、装置、设备以及存储介质 | |
AU2013243512A1 (en) | Telemetry system for a cloud synchronization system | |
US9015530B2 (en) | Reliably testing virtual machine failover using differencing disks | |
CN104735098A (zh) | 会话信息的控制方法和控制系统 | |
CN106657167B (zh) | 管理服务器、服务器集群、以及管理方法 | |
CN104184756A (zh) | 一种数据同步方法、装置及系统 | |
CN106776064B (zh) | 多系统中管理日志的方法及装置 | |
CN111274033A (zh) | 一种资源部署方法、装置、服务器以及存储介质 | |
CN105320577B (zh) | 一种数据备份和恢复方法、系统及装置 | |
US20180314548A1 (en) | Work item management in content management systems | |
CN114791856A (zh) | 基于K8s的分布式训练任务处理方法、相关设备及介质 | |
CN113515357B (zh) | 集群环境下批量任务的执行方法及装置 | |
CN110780889A (zh) | 一种云手机数据克隆方法及云手机数据还原方法 | |
CN111158956A (zh) | 一种集群系统的数据备份方法及相关装置 | |
CN111240698A (zh) | 模型部署的方法、装置、存储介质及电子设备 | |
CN110515629A (zh) | 一种脚本部署方法、装置、设备及计算机可读存储介质 | |
WO2020131483A2 (en) | Methods, apparatuses and systems for cloud-based disaster recovery | |
CN115952198A (zh) | 一种基于有限状态机的云缓存数据库施工处理方法及装置 | |
CN106301877A (zh) | 一种虚拟网元的升级方法和装置 | |
CN111339100B (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 |