[发明专利]任务管线执行方法、装置及电子设备有效
申请号: | 202010401618.4 | 申请日: | 2020-05-13 |
公开(公告)号: | CN111625326B | 公开(公告)日: | 2023-06-27 |
发明(设计)人: | 白戈;王长虎 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50;G06F9/4401;G06F9/445;G06F9/455 |
代理公司: | 北京风雅颂专利代理有限公司 11403 | 代理人: | 车英慧 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 任务 管线 执行 方法 装置 电子设备 | ||
本公开实施例中提供了一种任务管线执行方法、装置及电子设备,属于数据调度,该方法包括:在任务容器中设置与主进程隔离设置的多个子进程,每个子进程用于执行一个管线任务;在获取到主进程相关的待执行任务之后,从所述多个子进程中选择一个目标子进程,所述目标子进程用于运行所述待执行任务;在所述目标子进程中的待执行任务执行完成之后,按照预设的策略执行与所述目标子进程相关的关联子进程中的任务;在所述容器中所有的子进程中的任务执行完毕之后,释放所述所有的子进程在执行任务的过程中所占用的系统资源。通过本公开的处理方案,能够提高任务管线的执行效率。
技术领域
本公开涉及数据调度,尤其涉及一种任务管线执行方法、装置及电子设备。
背景技术
任务管线的实现有两种不同的方法,一种是松耦合的,另一种是紧耦合的。松耦合是指每一个任务运行在一个独立的容器中,当任务管线的一个任务执行完毕后,会杀死容器,然后启动另一个容器运行下一个任务。紧耦合是指所有任务由同一个主进程调度。紧耦合方式的好处是任务管线执行效率高,所有任务运行在同一个容器内,不会有频繁启动容器的开销。紧耦合方式的问题是python脚本存在内存泄漏的问题,且python的模块不能卸载干净。如果两个任务存在重名但功能不完全相同的模块(比如是同一个工具的不同版本),任务将无法正常执行。
发明内容
有鉴于此,本公开实施例提供一种任务管线执行方法、装置及电子设备,以至少部分解决现有技术中存在的问题。
第一方面,本公开实施例提供了一种任务管线执行方法,包括:
在任务容器中设置与主进程隔离设置的多个子进程,每个子进程用于执行一个管线任务;
在获取到主进程相关的待执行任务之后,从所述多个子进程中选择一个目标子进程,所述目标子进程用于运行所述待执行任务;
在所述目标子进程中的待执行任务执行完成之后,按照预设的策略执行与所述目标子进程相关的关联子进程中的任务;
在所述容器中所有的子进程中的任务执行完毕之后,释放所述所有的子进程在执行任务的过程中所占用的系统资源。
根据本公开实施例的一种具体实现方式,所述在任务容器中设置与主进程隔离设置的多个子进程之前,所述方法包括:
在唤醒主进程唤醒之后,判断是否存在容器配置文件;
若存在,则进一步基于所述容器系统配置文件,判断所述任务容器是否存在;
若不存在,则主进程创建容器设立子进程,利用所述容器设立子进程创建所述任务容器;
若存在,则主进程将包装好的启动消息发送给任务启动子进程,任务启动子进程解包发送过来的消息,得到启动容器消息实体,开始启动所述任务容器。
根据本公开实施例的一种具体实现方式,所述在任务容器中设置与主进程隔离设置的多个子进程,包括:
设置所述任务容器的内核资源隔离参数,更新配置文件;
根据更新后的配置文件开启资源隔离机制,设置父子进程隔离属性;
创建任务容器子进程,所述子进程用于任务进程实体加载到子进程中。
根据本公开实施例的一种具体实现方式,所述在获取到主进程相关的待执行任务之后,从所述多个子进程中选择一个目标子进程,包括:
获取所述主进程需要执行的任务列表;
确定所述任务列表中每个任务的执行顺序;
基于所述执行顺序,将确定所述多个子进程的执行顺序;
基于所述子进程的执行顺序,确定与当前任务匹配的目标子进程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010401618.4/2.html,转载请声明来源钻瓜专利网。