CN115658248A - 任务调度方法方法、装置、电子设备及存储介质 - Google Patents
任务调度方法方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115658248A CN115658248A CN202211107236.6A CN202211107236A CN115658248A CN 115658248 A CN115658248 A CN 115658248A CN 202211107236 A CN202211107236 A CN 202211107236A CN 115658248 A CN115658248 A CN 115658248A
- Authority
- CN
- China
- Prior art keywords
- task
- scheduling
- target
- target task
- container
- 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.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供了一种任务调度方法方法、装置、电子设备及存储介质,涉及数据处理技术领域,尤其涉及智能搜索、网页搜索、信息检索领域。具体实现方案为:响应于接收到选择指令,根据选择指令,从多个预定模板中选择目标模板;响应于接收到任务信息,根据任务信息和目标模板,创建目标任务;以及对目标任务进行调度。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及智能搜索、网页搜索、信息检索领域,更具体地,本公开提供了一种任务调度方法方法、装置、电子设备、存储介质以及计算机程序产品。
背景技术
目前搜索***、推荐***等一系列架构***可以配备定时任务,并利用定时任务来承担数据接入、数据处理、模型训练、监控维护等工作。
发明内容
本公开提供了一种任务调度方法方法、装置、电子设备、存储介质以及计算机程序产品。
根据本公开的一方面,提供了一种任务调度方法,包括:响应于接收到选择指令,根据选择指令,从多个预定模板中选择目标模板;响应于接收到任务信息,根据任务信息和目标模板,创建目标任务;以及对目标任务进行调度。
根据本公开的另一方面,提供了一种任务调度装置,包括选择模块、创建模块和调度模块。选择模块用于响应于接收到选择指令,根据选择指令,从多个预定模板中选择目标模板;创建模块用于响应于接收到任务信息,根据任务信息和目标模板,创建目标任务;调度模块用于对目标任务进行调度。
根据本公开的另一个方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开提供的方法。
根据本公开的另一个方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开提供的方法。
根据本公开的另一个方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开提供的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的任务调度方法和装置的应用场景示意图;
图2是根据本公开实施例的任务调度方法的示意流程图;
图3是根据本公开另一实施例的任务调度方法的示意流程图;
图4是根据本公开另一实施例的任务调度方法的示意流程图;
图5是根据本公开实施例的任务调度方法的示意***架构图;
图6是根据本公开实施例的任务调度装置的示意结构框图;以及
图7是用来实施本公开实施例的任务调度方法的电子设备的结构框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本公开实施例的任务调度方法和装置的应用场景示意图。
需要注意的是,图1所示仅为可以应用本公开实施例的***架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、***、环境或场景。
如图1所示,根据该实施例的***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本公开实施例所提供的任务调度方法一般可以由服务器105执行。相应地,本公开实施例所提供的任务调度装置一般可以设置于服务器105中。本公开实施例所提供的任务调度方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的任务调度装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2是根据本公开实施例的任务调度方法的示意流程图。
如图2所示,该任务调度方法200可以包括操作S210~操作S230。
在操作S210,响应于接收到选择指令,根据选择指令,从多个预定模板中选择目标模板。
例如,可以预先根据实际需求创建多个预定模板,每个预定模板可以对应有模板标识。
例如,业务平台层可以提供人机交互界面,并且业务平台层可以提供多个预定模板。用户可以根据实际需求在人机交互界面进行选择操作,选择操作会触发选择指令,可以根据选择指令中包括的模板标识来选择目标模板。
在操作S220,响应于接收到任务信息,根据任务信息和目标模板,创建目标任务。
例如,用户还可以根据实际需求在业务平台层进行配置操作,来配置与任务有关的信息,例如任务的参数、代码等信息,该信息可以指示任务的任务内容、执行周期、开始执行的时刻等。配置操作会触发配置指令,可以从配置指令中获取用户配置的任务信息。
例如,可以将任务模板和任务信息组装为模板任务。任务例如可以是进行数据导出、数据导入、在某电商平台上发放针对特定商品的优惠券等,任务例如可以是定时任务,本公开实施例对任务的内容不做限定。
以目标任务是进行数据导出为例,该任务可以包括多个步骤,可以将连接数据库、查找数据之后进行协议转化、进行数据校验等步骤封装为任务模板,可以将执行该任务所需的其他步骤作为配置的任务信息,或者将数据源地址、导出数据的目标存储地址等作为配置的任务信息,因此将任务模板和任务信息组装,可以得到目标任务。
在操作S230,对目标任务进行调度。
例如,创建目标任务之后,可以按照预定时刻、预定次数来执行该任务,从而实现对该任务的调度。
在相关技术中,可以将多个任务开发到多个机器上,随着定时的任务脚本越来越多,暴露的问题日益明显。一方面,多个脚本分散在多台机器上,在服务交接的时候容易发生遗漏。另一方面,任务的稳定性需求难以得到保证,尤其是发生单机故障的时候,故障机器上运行的任务均会出现异常。因此可以将多个机器上的任务迁移至业务任务***,利用业务任务***来管理多个任务。但是在实际进行任务迁移的过程中,需要针对多个任务分别进行开发,导致将任务迁移至业务任务***的成本较高。
根据本公开实施例提供的技术方案,在将其他机器上的任务迁移至业务任务***的过程中,可以利用预定模板和配置信息来迁移任务,由于可以复用预定模板,因此可以较为简单地将其他机器上的定时任务迁移至该业务任务***,从而降低任务迁移资源成本和人力成本,提高任务迁移效率。
在实际应用中,本公开适用于针对大规模复杂场景,例如搜索、推荐等场景,迁移数据接入、数据处理、训练等定时任务。
需要说明的是,在实际应用中,可以根据实际需求来创建预定模板和配置任务信息,本公开实施例对预定模板和任务信息不做限定。
在一种示例中,目标模板包括任务模板,任务模板包括与任务有关的代码。任务模板例如适用于创建常用的任务,该种任务的执行流程较为固定化、通用化,任务的参数可以根据任务的实际需求进行自定义。因此,可以根据与任务有关的代码创建任务模板,在使用任务模板时,无需编写任务的代码。
在实际应用中,可以由设计人员基于多个相似的任务统一抽象设计出通用的算子,可以将该算子封装为任务模板,该算子可以被通用框架统一加载,被执行器统一加载执行,从而可以低成本配置高度流程化的任务,并稳定执行任务。
相应地,当任务模板包括任务代码时,任务信息可以包括代码参数。应当理解,任务模板可以预先封装执行该类任务的一些代码,但是代码中的参数处于空缺状态,可以将这些空缺的参数配置为任务信息。
例如,某个任务用于从MySQL或者其他数据库中导出某种类型的数据,然后对导出的数据进行建库处理。任务可以包括多个步骤,涉及几百行代码,实际应用中,若不使用任务模板,需要编写任务的全部代码,编写过程较为复杂。当使用任务模板时,可以预先将该任务的一些步骤进行封装,例如将连接数据库、查找数据之后进行协议转化、进行数据校验等步骤进行封装,经封装处理的步骤无需编写代码。因此,当需要执行任务时,用户可以选择预先创建的任务模板,并根据任务的实际需求,提供MySQL(关系型数据库管理***)的SQL语句、UGI参数(用户账户、密码、地址)、数据需要导出到的目标存储地址等任务信息,将任务的代码与任务信息组装即可创建该任务。应当理解,当多个任务复用同一个任务模板时,多个任务的任务信息不同,因此任务也不同。
在另一种示例中,目标模板包括业务环境模板,业务环境模板例如适用于业务需要灵活开发的场景,例如业务灵活度比较高的服务类型的任务,可以是分散的脚本类型的任务。
相应地,当目标模板包括业务环境模板时,任务信息可以包括与任务有关的代码,即该种情况用户可以配置任务的代码,从而支持业务自定义的代码开发。
需要说明的是,业务的需求多种多样,多种需求需要映射到不同的基础环境,虽然不同业务的差异性可能比较大,但是同一个业务线所包括的多个任务的基础环境大体相同,具有高度类似性。可以根据业务实际需求创建业务环境模板,创建好的业务环境模板可以复用,多个目标任务的脚本可以使用同一个业务环境模板。在实际应用中,可以将目标任务的代码与选择出的业务环境模板进行叠加组装。
例如,可以根据业务环境模板、架构执行框架和配置的任务代码来创建自定义代码类的目标任务,从而实现业务能够以较低成本从原物理机迁移至业务任务***。
例如,业务可以自定义定制业务环境模板,同一个业务环境模板可以在多个任务中进行复用,业务环境模板例如可以包括带有Nginx Redis的环境、带有Php环境的基础环境、带有商品搜索基础组件的环境等。可以根据实际需要选择业务环境模板,基础环境支持自定义。
架构执行框架是为业务提供的框架,不同业务可以复用该框架而无需进行修改。业务可以在该框架下并行的执行目标任务。
任务代码是需要执行的脚本,可以在某个环境下执行,语言上支持Python、Shell、Php等常见脚本语言。多个任务可以各自对应有的代码;也可以多个任务对应同一个代码,并且不同任务的代码参数可以不同。
图3是根据本公开另一实施例的任务调度方法的示意流程图。
如图3所示,该任务调度方法300可以包括操作S310~操作S320,还可以包括操作S331~操作S333。
在一些实施例中,可以在目标模板包括任务模板且任务模板包括与任务有关的代码的情况下,执行该方法300。应当理解,也可以在其他情况下执行该方法300,例如在目标模板包括业务环境模板且任务信息可以包括与任务有关的代码的情况下,执行该方法300。
例如,操作S310和操作S320可以参考上述操作S210和操作S220,本实施例在不再赘述。
在操作S331,响应于检测到当前时刻是目标任务的触发时刻,将目标任务添加至消息队列中。
在操作S332,利用多个工作节点中的至少一个工作节点,从消息队列中获取目标任务。
在操作S333,利用至少一个工作节点执行目标任务。
例如,可以通过配置数据库、任务管理器、任务触发器、消息队列、工作节点来实现上述操作。
配置数据库可以存储与任务有关的信息,例如任务的内容、任务的执行周期、任务上一次执行的时间、任务的当前运行状态,运行状态可以包括已触发、处理中、已完成等。
任务管理器可以从配置数据库中获取数据,然后根据获取的数据确定当前时刻是否是目标任务的触发时刻。在确定当前时刻需要触发时,任务管理器可以向任务触发器发送触发指令。
任务触发器接收到触发之后,进行初始化数据加载,加载过程可以包括将目标任务发送至消息队列中,消息队列可以是kafka队列。任务触发器还可以将目标任务拆分为多个子任务。
消息队列可接收上游的任务触发器下发的目标任务,然后将目标任务分发至下游的至少一个工作节点。此外,当目标任务被拆分为多个子任务时,消息队列可以将每个子任务的全量信息下发给工作节点。
工作节点可以接收消息队列下发的目标任务,多个工作节点可以对各自接收到的目标任务或者子任务进行单独处理,从而执行目标任务。
此外,在实际应用中,下游的工作节点通过消费上游的消息队列中的消息,来执行目标任务,若工作节点出现故障,消息队列可以通过重平衡(Rebalance)机制将目标任务分发至其他工作节点。
在一些实施例中,上述方法300还可以包括操作S334,实时更新并记录目标任务的执行状态。
例如,可以利用任务触发器将目标任务添加至消息队列中,还利用任务触发器在任务管理器中注册,注册可以包括将目标任务的执行状态更新为已触发。又例如,工作节点在获取到目标任务或者由目标任务拆分而得到的子任务的情况下,可以利用工作节点向任务管理器进行状态同步,从而将目标任务的状态信息更新为处理中。又例如,可以在工作节点已执行完目标任务的情况下,利用工作节点向任务管理器进行状态同步,从而将目标任务的状态信息更新为已完成。
例如,任务管理器可以维护任务触发器和工作节点提交的目标任务的状态信息。任务管理器还可以将状态信息记录在配置数据库中。
此外,还可以提供观测接口,通过观测接口可以获取目标任务的状态信息。在实际应用中,可以通过目标任务的状态信息来追查故障原因,例如某个目标任务是执行周期是每5分钟执行一次,但是超时未执行,通过状态信息可以确定故障原因是未成功触发,还是在执行过程中出现故障而停止等。
在一些实施例中,上述将目标任务添加至消息队列中的操作可以包括以下操作:响应于检测到目标任务满足预定拆分条件,将目标任务拆分为多个子任务,然后将多个子任务添加至消息队列。相应地,上述利用至少一个工作节点执行目标任务的操作可以包括以下操作:利用至少两个工作节点并行执行多个子任务。
例如,预定拆分条件包括以下中的至少一个:目标任务的数据量大于等于第一阈值,目标任务的计算量大于等于第二阈值。
例如,以数据导出任务为例,对于大批量的数据导出任务,可以对数据进行分区(partition),每个分区的数据对应一个子任务。可以将目标任务拆分为10个子任务,下游可以由5个或者其他数量个工作节点并行执行多个子任务,从而提高目标任务的处理效率。
图4是根据本公开另一实施例的任务调度方法的示意流程图。
如图4所示,该任务调度方法400可以包括操作S410~操作S420,还可以包括操作S431~操作S437。
在一些实施例中,可以在目标模板包括业务环境模板且任务信息可以包括与任务有关的代码的情况下,执行该方法400。应当理解,也可以在其他情况下执行该方法400,例如在目标模板包括任务模板且任务模板包括与任务有关的代码的情况下,执行该方法400。
例如,操作S410和操作S420可以参考上述操作S210和操作S220,本实施例在不再赘述。
在操作S431,根据目标任务的调度间隔时长和对容器进行调度处理所需的预期时长,确定容器是否满足预定预调度条件。在确定容器满足预定预调度条件的情况下,可以执行操作S432。在确定容器不满足预定预调度条件的情况下,可以执行操作S435。
例如,对容器进行调度处理可以表示使容器启动,使容器初始化等。
例如,配置服务器可以存储与任务有关的信息,供调度器读取该信息并触发调度。配置服务器存储的信息可以包括用户在业务平台层配置的信息,还可以包括根据任务的实际情况计算得到的信息,例如这些信息可以包括任务的执行命令、任务的执行周期、任务的当前执行状态、容器调度所需的实际时长、下一次调度容器的时刻等、下一次执行目标任务的时刻等信息。
例如,容器可以是docker容器。
例如,可以通过以下方式确定预期时长:从预定时段的历史数据中获取调度容器所需的至少一个实际时长,然后根据至少一个实际时长和预定分位值,确定预期时长。
例如,预定时段可以是过去1天、7天、30天等,容器在过去的预定时段中已被调度多次,每次被调度均可以记录调度该容器所需的实际时长。预定分位值可以是75%分位值、90%分位值等。
以容器在过去7天中被调度了100次,90%分位值对应的实际时长是5分钟为例,该种情况可以表示:在过去7天,90次调度容器所需的实际时长均小于等于5分钟,可以看出,调度容器所需时长小于等于5分钟的概率是90%。因此,通过预定分位值,可以确保容器以较大概率在预期时长内完成调度。
例如,调度器可以从配置服务器读取其存储的信息,然后将对容器进行调度处理所需的预期时长与任务的执行间隔进行比较,并根据比较结果确定是否需要进行预调度。
例如,预调度可以表示在目标任务执行之前先启动容器,使得容器启动后可以直接执行目标任务,而无需因等待容器启动而耗费时间。
例如,预定预调度条件包括:调度间隔时长大于预期时长与预定系数的乘积,预定系数大于等于1,优选预定系数大于等于1.5。
以对容器进行调度处理所需的预期时长是10分钟且预定系数等于1为例,若调度间隔时长是1小时,则可以进行预调度。若调度间隔时长是1分钟,则可以不进行预调度。
以预期时长是10分钟,调度间隔时长是13分钟为例,若预定系数等于1,可以进行预调度;若预定系数等于1.5,可以不进行预调度。可以看出,当调整预定系数的大于1时,例如大于1.5甚至大于2时,可以避免频繁启动容器而额外消耗资源。
在操作S432,根据预期时长和目标任务的目标执行时刻,在目标执行时刻之前对容器进行预调度处理。
例如,可以在预定时刻处对容器进行预调度,预定时刻与目标任务的目标执行时刻之间的时间差等于预期时长。采用该种方式,对容器进行调度处理需要一些时间,通过预调度的方式,在容器调度完成后,容器可以直接执行目标任务,而无需在需要执行目标任务时先等待容器调度完成,从而提高目标任务的执行效率。此外,在预定时刻调度容器,还可以避免容器启动后等待较长时间才执行目标任务,进而避免容器处于启动状态而不执行任务造成的资源浪费。
例如,可以利用调度器生成调度指令,通过调度指令实现对容器的预调度处理。
在操作S433,利用经预调度处理的容器执行目标任务。
例如,可以利用PaaS(Platform as a Service)管理层接收调度器的预调度指令,然后根据预调度指令产生容器,初始化业务环境,运行定时任务框架,框架拉起服务代码,从而执行目标任务。在实际应用中,PaaS管理层可以使用K8S。容器提供资源隔离、空间隔离独立部署等特性,同一个容器可以同时执行多个目标任务。
在操作S434,在确定容器执行完成目标任务的情况下,释放容器。
例如,由于满足预定预调度条件,因此容器执行完成目标任务之后,需要等待一段时间后才会再次执行下一次目标任务,并且等待时长大于调度容器所需的预期时长。因此,可以释放容器,从而避免容器处于启动状态且不执行目标任务而额外消耗资源,达到节省资源的效果。
在操作S435,根据目标任务的目标执行时刻,对容器进行调度处理。
例如,可以在目标任务的目标执行时刻处,对容器进行调度处理。又例如,也可以参考操作S432的方式,在首次调度容器的过程中,对容器进行预调度处理。
在操作S436,利用经调度处理的容器执行目标任务。
在操作S437,在确定容器执行完成目标任务的情况下,保留经调度处理的容器。
例如,容器进行调度处理所需的预期时长是10分钟,预定系数等于1为例,调度间隔时长是1分钟。可以看出,此时若在调度容器后将容器释放,则在下一次执行目标任务时,需要先等待容器完成调度,导致目标任务超时。因此,可以保留经调度处理的容器,从而提高目标任务的执行效率,还可以提高稳定性。
在一些实施例中,上述方法还可以包括以下操作:对异常的容器进行迁移。
例如,响应于检测到容器处于故障状态调度新的容器,以及获取目标任务的执行状态,然后利用新的容器,基于执行状态继续执行目标任务。
例如,容器通过自身的运行逻辑检测到自身出现故障,可以向调度器上报故障,调度器可以释放故障容器并调度新的容器,利用新的容器继续执行故障容器所执行的目标任务。
此外,在实际应用中,可以利用远程分布式文件***对目标任务的执行状态进行同步,例如,在执行目标任务的过程中,在本地文件中实时更新目标任务的执行状态,同时本地文件与远程分布式文件***之间进行数据同步。当容器发生故障时,可以通过同步的数据来基于目标任务的执行状态继续运行该目标任务。
在相关技术中,可以采用单机单实例的方式来执行目标任务,当机器宕机,需要重启机器后才能继续执行目标任务,存在稳定性低的问题。相比于该相关技术,本公开实施例可以在容器故障之后将目标任务迁移至其他容器中执行,从而提高稳定性。
图5是根据本公开实施例的任务调度方法的示意***架构图。
如图5所示,业务任务***包括业务平台层510、业务逻辑层520和基础服务层530。
业务平台层510可以提供人机交互界面,并且业务平台层510可以提供多个预定模板,例如提供多个任务模板和多个业务环境模板。用户可以根据实际需求在业务平台层510选择需要的任务模板或者业务环境模板。用户还可以在业务平台层510配置任务信息,例如配置代码参数或者任务代码。
业务逻辑层520可以包括通用模板类任务和自定义代码类任务。针对流程固定化的服务任务,可以采用通用模板类任务的处理流程。针对通用模板类任务无法覆盖的其他任务,可以使用自定义代码类任务的处理流程。
基础服务层530用于为目标任务提供基础服务。例如,对于数据导入、数据导出的任务,基础服务层530可以包括多种数据库,数据库可以包括Mongo(一种基于分布式文件存储的数据库)、HDFS(Hadoop分布式文件***)、MySQL、ES(ElasticSearch)等。
在实际应用中,当用户在任务平台层选择任务模板,并配置代码参数时,表示目标任务属于通用模板类任务。可以将任务模板和代码参数组装为目标任务。可以利用配置数据库、任务管理器、任务触发器、消息队列、工作节点来实现处理通用模板类任务。
例如,配置数据库可以存储与任务有关的信息,任务管理器可以从配置数据库中获取数据,然后根据获取的数据确定当前时刻是否是目标任务的触发时刻。在确定当前时刻需要触发时,任务管理器可以向任务触发器发送触发指令。任务触发器将目标任务发送至消息队列,工作节点从消息队列获取目标任务并执行。
在实际应用中,当用户在任务平台层选择业务环境模板,并配置与任务有关的代码时,表示目标任务属于自定义代码类任务。可以将业务环境模板、架构执行框架和配置的任务代码组装为目标任务。可以利用配置服务器、调度器、PaaS管理层、容器来实现处理自定义代码类任务。
例如,配置服务器可以存储与任务有关的信息,供调度器读取该信息并触发调度。触发器从配置服务器读取信息,并比较目标任务的调度间隔时长和对容器进行调度处理所需的预期时长,来确定容器是否满足预定预调度条件。
在确定满足预定预调度条件的情况下,调度器在预定时刻预调度容器,例如调度器可以向PaaS管理层发送预调度指令,PaaS管理层根据预调度指令产生容器,容器执行目标任务。并且在容器执行目标任务之后,对容器进行释放。在下一次执行目标任务时,再次预调度容器。
在确定不满足预定预调度条件的情况下,调度器调度容器,例如调度器可以向PaaS管理层发送预调度指令,PaaS管理层根据预调度指令产生容器,容器执行目标任务。并且在容器执行目标任务之后,对经调度处理的容器进行保留。
采用上述业务任务***,可以确保业务高效创建和高效迁移。在实际应用中,针对业务复杂任务的场景下业务云原生的定时任务***,可以根据业务的不同使用场景,将任务划分为通用模板类任务和自定义代码类任务。在迁移过程中,通用模板类任务可以复用任务模板,自定义代码类任务可以复用业务环境模板,从而实现不同级别的复用和自定义需求,实现业务低成本的批量迁移的效果。
在实际应用中,上述业务任务***可以实现单个业务天级别迁移上百个原始物理机的自定义代码类任务。此外,通用模板类任务的平均接入周期小于1小时,提升业务任务的稳定性和接入效率。
图6是根据本公开实施例的任务调度装置的示意结构框图。
如图6所示,该任务调度装置600可以包括选择模块610、创建模块620和调度模块630。
选择模块610用于响应于接收到选择指令,根据选择指令,从多个预定模板中选择目标模板。
创建模块620用于响应于接收到任务信息,根据任务信息和目标模板,创建目标任务。
调度模块630用于对目标任务进行调度。
根据本公开另一实施例,调度模块包括第一确定子模块、第一调度子模块、第一执行子模块以及释放子模块。第一确定子模块用于根据目标任务的调度间隔时长和对容器进行调度处理所需的预期时长,确定容器是否满足预定预调度条件;第一调度子模块用于在确定容器满足预定预调度条件的情况下,根据预期时长和目标任务的目标执行时刻,在目标执行时刻之前对容器进行预调度处理;第一执行子模块用于利用经预调度处理的容器执行目标任务;释放子模块用于在确定容器执行完成目标任务的情况下,释放容器。
根据本公开另一实施例,预定预调度条件包括:调度间隔时长大于预期时长与预定系数的乘积,预定系数大于等于1。
根据本公开另一实施例,根据第一调度子模块包括预调度单元,其用于在预定时刻处对容器进行预调度;其中,预定时刻与目标任务的目标执行时刻之间的时间差等于预期时长。
根据本公开另一实施例,上述装置还包括第二调度子模块、第二执行子模块和保留子模块。第二调度子模块用于在确定容器不满足预定预调度条件的情况下,根据目标任务的目标执行时刻,对容器进行调度处理;第二执行子模块用于利用经调度处理的容器执行目标任务;保留子模块用于在确定容器执行完成目标任务的情况下,保留经调度处理的容器。
根据本公开另一实施例,上述装置还包括第一获取子模块和第二确定子模块。第一获取子模块用于从预定时段的历史数据中获取调度容器所需的至少一个实际时长;第二确定子模块用于根据至少一个实际时长和预定分位值,确定预期时长。
根据本公开另一实施例,上述装置还包括第三调度子模块、第二获取子模块和第三执行子模块。第三调度子模块用于响应于检测到容器处于故障状态,调度新的容器;第二获取子模块用于获取目标任务的执行状态;第三执行子模块用于利用新的容器,基于执行状态继续执行目标任务。
根据本公开另一实施例,目标模板包括业务环境模板,任务信息包括与任务有关的代码。
根据本公开另一实施例,调度模块包括添加子模块、第三获取子模块和第四执行子模块。添加子模块用于响应于检测到当前时刻是目标任务的触发时刻,将目标任务添加至消息队列中;第三获取子模块用于利用多个工作节点中的至少一个工作节点,从消息队列中获取目标任务;第四执行子模块用于利用至少一个工作节点执行目标任务。
根据本公开另一实施例,上述装置还包括第一状态确定子模块和第二状态确定子模块。第一状态确定子模块用于响应于检测到目标任务被添加至消息队列,将目标任务的状态信息确定为已触发;第二状态确定子模块用于响应于检测到至少一个工作节点已从消息队列中获取目标任务,将目标任务的状态信息确定为处理中;第三状态确定子模块用于响应于检测到至少一个工作节点已执行完目标任务,将目标任务的状态信息确定为已完成;记录子模块用于记录目标任务的状态信息。
根据本公开另一实施例,添加子模块包括拆分单元和添加单元。拆分单元用于响应于检测到目标任务满足预定拆分条件,将目标任务拆分为多个子任务;添加单元用于将多个子任务添加至消息队列;其中,预定拆分条件包括以下中的至少一个:目标任务的数据量大于等于第一阈值,目标任务的计算量大于等于第二阈值;其中,第四执行子模块还用于利用至少两个工作节点并行执行多个子任务。
根据本公开另一实施例,目标模板包括任务模板,任务模板包括与任务有关的代码,任务信息包括代码参数。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
根据本公开的实施例,本公开还提供了一种电子设备,包括至少一个处理器;以及与至少一个处理器通信连接的存储器;存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述任务调度方法。
根据本公开的实施例,本公开还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行上述任务调度方法。
根据本公开的实施例,本公开还提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现上述任务调度方法。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如任务调度方法。例如,在一些实施例中,任务调度方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的任务调度方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行任务调度方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (27)
1.一种任务调度方法,包括:
响应于接收到选择指令,根据所述选择指令,从多个预定模板中选择目标模板;
响应于接收到任务信息,根据所述任务信息和所述目标模板,创建目标任务;以及
对所述目标任务进行调度。
2.根据权利要求1所述的方法,其中,所述对所述目标任务进行调度包括:
根据所述目标任务的调度间隔时长和对容器进行调度处理所需的预期时长,确定所述容器是否满足预定预调度条件;
在确定所述容器满足所述预定预调度条件的情况下,根据所述预期时长和所述目标任务的目标执行时刻,在所述目标执行时刻之前对容器进行预调度处理;
利用经预调度处理的容器执行所述目标任务;以及
在确定容器执行完成所述目标任务的情况下,释放所述容器。
3.根据权利要求2所述的方法,其中,所述预定预调度条件包括:
所述调度间隔时长大于所述预期时长与预定系数的乘积,所述预定系数大于等于1。
4.根据权利要求2所述的方法,其中,根据所述预期时长和所述目标任务的目标执行时刻,在所述目标执行时刻之前对容器进行预调度包括:
在预定时刻处对容器进行预调度;
其中,所述预定时刻与所述目标任务的目标执行时刻之间的时间差等于所述预期时长。
5.根据权利要求2所述的方法,还包括:
在确定容器不满足所述预定预调度条件的情况下,根据所述目标任务的目标执行时刻,对容器进行调度处理;
利用经调度处理的容器执行所述目标任务;以及
在确定所述容器执行完成所述目标任务的情况下,保留经调度处理的容器。
6.根据权利要求2所述的方法,还包括:
从预定时段的历史数据中获取调度容器所需的至少一个实际时长;以及
根据所述至少一个实际时长和预定分位值,确定所述预期时长。
7.根据权利要求2所述的方法,还包括:
响应于检测到容器处于故障状态,调度新的容器;
获取所述目标任务的执行状态;以及
利用所述新的容器,基于所述执行状态继续执行所述目标任务。
8.根据权利要求1至7中任意一项所述的方法,其中,所述目标模板包括业务环境模板,所述任务信息包括与任务有关的代码。
9.根据权利要求1所述的方法,其中,所述对所述目标任务进行调度包括:
响应于检测到当前时刻是所述目标任务的触发时刻,将所述目标任务添加至消息队列中;
利用多个工作节点中的至少一个工作节点,从所述消息队列中获取所述目标任务;以及
利用所述至少一个工作节点执行所述目标任务。
10.根据权利要求9所述的方法,还包括:
响应于检测到所述目标任务被添加至所述消息队列,将所述目标任务的状态信息确定为已触发;
响应于检测到所述至少一个工作节点已从所述消息队列中获取所述目标任务,将所述目标任务的状态信息确定为处理中;
响应于检测到所述至少一个工作节点已执行完所述目标任务,将所述目标任务的状态信息确定为已完成;以及
记录所述目标任务的状态信息。
11.根据权利要求9所述的方法,其中,将所述目标任务添加至消息队列中包括:
响应于检测到所述目标任务满足预定拆分条件,将所述目标任务拆分为多个子任务;以及
将所述多个子任务添加至所述消息队列;
其中,所述预定拆分条件包括以下中的至少一个:所述目标任务的数据量大于等于第一阈值,所述目标任务的计算量大于等于第二阈值;
其中,所述利用所述至少一个工作节点执行所述目标任务包括:
利用至少两个工作节点并行执行所述多个子任务。
12.根据权利要求9至11中任意一项所述的方法,其中,所述目标模板包括任务模板,所述任务模板包括与任务有关的代码,所述任务信息包括代码参数。
13.一种任务调度装置,包括:
选择模块,用于响应于接收到选择指令,根据所述选择指令,从多个预定模板中选择目标模板;
创建模块,用于响应于接收到任务信息,根据所述任务信息和所述目标模板,创建目标任务;以及
调度模块,用于对所述目标任务进行调度。
14.根据权利要求13所述的装置,其中,所述调度模块包括:
第一确定子模块,用于根据所述目标任务的调度间隔时长和对容器进行调度处理所需的预期时长,确定所述容器是否满足预定预调度条件;
第一调度子模块,用于在确定所述容器满足所述预定预调度条件的情况下,根据所述预期时长和所述目标任务的目标执行时刻,在所述目标执行时刻之前对容器进行预调度处理;
第一执行子模块,用于利用经预调度处理的容器执行所述目标任务;以及
释放子模块,用于在确定容器执行完成所述目标任务的情况下,释放所述容器。
15.根据权利要求14所述的装置,其中,所述预定预调度条件包括:
所述调度间隔时长大于所述预期时长与预定系数的乘积,所述预定系数大于等于1。
16.根据权利要求14所述的装置,其中,根据第一调度子模块包括:
预调度单元,用于在预定时刻处对容器进行预调度;
其中,所述预定时刻与所述目标任务的目标执行时刻之间的时间差等于所述预期时长。
17.根据权利要求14所述的装置,还包括:
第二调度子模块,用于在确定容器不满足所述预定预调度条件的情况下,根据所述目标任务的目标执行时刻,对容器进行调度处理;
第二执行子模块,用于利用经调度处理的容器执行所述目标任务;以及
保留子模块,用于在确定所述容器执行完成所述目标任务的情况下,保留经调度处理的容器。
18.根据权利要求14所述的装置,还包括:
第一获取子模块,用于从预定时段的历史数据中获取调度容器所需的至少一个实际时长;以及
第二确定子模块,用于根据所述至少一个实际时长和预定分位值,确定所述预期时长。
19.根据权利要求14所述的装置,还包括:
第三调度子模块,用于响应于检测到容器处于故障状态,调度新的容器;
第二获取子模块,用于获取所述目标任务的执行状态;以及
第三执行子模块,用于利用所述新的容器,基于所述执行状态继续执行所述目标任务。
20.根据权利要求13至19中任意一项所述的装置,其中,所述目标模板包括业务环境模板,所述任务信息包括与任务有关的代码。
21.根据权利要求13所述的装置,其中,所述调度模块包括:
添加子模块,用于响应于检测到当前时刻是所述目标任务的触发时刻,将所述目标任务添加至消息队列中;
第三获取子模块,用于利用多个工作节点中的至少一个工作节点,从所述消息队列中获取所述目标任务;以及
第四执行子模块,用于利用所述至少一个工作节点执行所述目标任务。
22.根据权利要求21所述的装置,还包括:
第一状态确定子模块,用于响应于检测到所述目标任务被添加至所述消息队列,将所述目标任务的状态信息确定为已触发;
第二状态确定子模块,用于响应于检测到所述至少一个工作节点已从所述消息队列中获取所述目标任务,将所述目标任务的状态信息确定为处理中;
第三状态确定子模块,用于响应于检测到所述至少一个工作节点已执行完所述目标任务,将所述目标任务的状态信息确定为已完成;以及
记录子模块,用于记录所述目标任务的状态信息。
23.根据权利要求21所述的装置,其中,添加子模块包括:
拆分单元,用于响应于检测到所述目标任务满足预定拆分条件,将所述目标任务拆分为多个子任务;以及
添加单元,用于将所述多个子任务添加至所述消息队列;
其中,所述预定拆分条件包括以下中的至少一个:所述目标任务的数据量大于等于第一阈值,所述目标任务的计算量大于等于第二阈值;
其中,所述第四执行子模块还用于利用至少两个工作节点并行执行所述多个子任务。
24.根据权利要求21至23中任意一项所述的装置,其中,所述目标模板包括任务模板,所述任务模板包括与任务有关的代码,所述任务信息包括代码参数。
25.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至12中任一项所述的方法。
26.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1至12中任一项所述的方法。
27.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211107236.6A CN115658248A (zh) | 2022-09-09 | 2022-09-09 | 任务调度方法方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211107236.6A CN115658248A (zh) | 2022-09-09 | 2022-09-09 | 任务调度方法方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115658248A true CN115658248A (zh) | 2023-01-31 |
Family
ID=84984315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211107236.6A Pending CN115658248A (zh) | 2022-09-09 | 2022-09-09 | 任务调度方法方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658248A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112184A (zh) * | 2023-10-23 | 2023-11-24 | 深圳市魔数智擎人工智能有限公司 | 一种基于容器技术的任务调度服务方法及*** |
-
2022
- 2022-09-09 CN CN202211107236.6A patent/CN115658248A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112184A (zh) * | 2023-10-23 | 2023-11-24 | 深圳市魔数智擎人工智能有限公司 | 一种基于容器技术的任务调度服务方法及*** |
CN117112184B (zh) * | 2023-10-23 | 2024-02-02 | 深圳市魔数智擎人工智能有限公司 | 一种基于容器技术的任务调度服务方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11593599B2 (en) | Long running workflows for document processing using robotic process automation | |
US10678601B2 (en) | Orchestration service for multi-step recipe composition with flexible, topology-aware, and massive parallel execution | |
US11334465B2 (en) | Long running workflows for robotic process automation | |
CN107016480B (zh) | 任务调度方法、装置及*** | |
CN111694857B (zh) | 存储资源数据的方法、装置、电子设备及计算机可读介质 | |
US10949218B2 (en) | Generating an execution script for configuration of a system | |
CN111190888A (zh) | 一种管理图数据库集群的方法和装置 | |
EP4113299A2 (en) | Task processing method and device, and electronic device | |
CN109214741B (zh) | 一种监控指标的预警方法和预警*** | |
CN110309108A (zh) | 数据采集及储存方法、装置、电子设备、存储介质 | |
CN113377665A (zh) | 基于容器技术的测试方法、装置、电子设备及存储介质 | |
US20220244990A1 (en) | Method for performing modification task, electronic device and readable storage medium | |
CN115964153A (zh) | 一种异步任务处理方法、装置、设备以及存储介质 | |
CN115658248A (zh) | 任务调度方法方法、装置、电子设备及存储介质 | |
CN114398023A (zh) | 生成文件的方法、配置页面的方法和装置 | |
CN111782341B (zh) | 用于管理集群的方法和装置 | |
CN111767126A (zh) | 分布式批量处理的***和方法 | |
CN111580733A (zh) | 任务处理方法、装置、计算设备以及介质 | |
CN114697398B (zh) | 数据处理方法、装置、电子设备、存储介质及产品 | |
CN113360689B (zh) | 图像检索***、方法、相关装置及计算机程序产品 | |
CN115510036A (zh) | 数据迁移方法、装置、设备以及存储介质 | |
CN115373886A (zh) | 服务群组容器停机方法、装置、计算机设备和存储介质 | |
CN114860346A (zh) | 建模任务的管理方法和建模任务的运行方法 | |
CN114237858A (zh) | 一种基于多集群网络的任务调度方法及*** | |
CN113419921A (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 |