一种边缘计算场景下的任务控制方法及系统与流程

文档序号:32497206发布日期:2022-12-10 04:42阅读:81来源:国知局
一种边缘计算场景下的任务控制方法及系统与流程

1.本发明属于边缘计算技术领域,具体涉及一种边缘计算场景下的任务控制方法及系统。


背景技术:

2.在传统中心云的容器任务部署系统中,容器的运行需要磁盘、网络、镜像等前置条件,并且当容器部署在边缘节点后,容器或容器的依赖发生故障,容器部署系统不会基于最新的节点状态进行重新部署。但是在边缘计算的场景下的计算节点存在硬件网络资源受限、资源无法池化、扩展性不足等天然约束,另外,边缘节点还具有异构、不稳定等特点,因此,在任务的运行过程中任务所依赖的硬盘、线路等资源可能会随时发生故障,故此需要感知边缘节点资源的变化并动态调整任务。而对于传统的中心云的任务部署控制器,例如kubernetes会基于节点资源是可靠的前提假设进行任务调谐,当任务分配的一块硬盘发生故障,kubernetes的任务控制器不会自动剔除故障磁盘以及重新拉起任务。


技术实现要素:

3.针对以上问题,本发明提出了一种边缘计算场景下的任务控制系统方法及系统,可以在边缘节点资源发生变化时,动态调节边缘节点上的任务部署拓扑。为解决以上技术问题,本发明所采用的技术方案如下:
4.一种边缘计算场景下的任务控制方法,包括如下步骤:
5.s1,获取任务所在的边缘节点的资源信息,所述资源信息包括磁盘是否正常、网络线路连通状态和每个磁盘下所对应的挂载点;
6.s2,获取任务在边缘节点上运行所占用的容器信息,基于容器信息和步骤s1中的资源信息构建任务运行资源树;
7.s3,通过基于发布订阅模型的通信方法从云端获取任务运行所期望的资源请求信息,基于资源请求信息构建任务请求资源树;
8.s4,将任务运行资源树和任务请求资源树进行比较,获取调谐信息;
9.s5,利用深度优先遍历方法基于调谐信息进行调谐,以确保任务同步。
10.所述步骤s2包括如下步骤:
11.s2.1,获取任务运行时所使用的所有容器;
12.s2.2,获取步骤s2.2中所有容器的资源使用信息,所述资源使用信息包括网络线路、容器所占用的磁盘、容器所使用的挂载点和参数;
13.s2.3,将任务作为根节点,磁盘、挂载点和容器均作为叶子节点,构建任务运行资源树;
14.s2.4,利用最长前缀匹配算法将任务运行资源树中的容器所使用的挂载点与资源信息的挂载点对应关联。
15.在步骤s2.3中,所述构建任务运行资源树是通过扩展的伯克利数据包过滤器实时
获取任务所关联的资源包括容器、磁盘或者网络线路的增删改,并将变更后的资源状态同步到任务运行资源树。
16.所述步骤s3包括如下步骤:
17.s3.1,从任务的配置文件或者云端读取任务部署时所下发的资源请求信息;
18.s3.2,根据步骤s1得到资源信息更新资源请求信息;
19.s3.3,根据更新后的资源请求信息,将任务作为根节点,磁盘、挂载点和容器均作为叶子节点,构建任务请求资源树。
20.所述步骤s4包括如下步骤:
21.s4.1,将任务请求资源树与任务运行资源树进行对比,获取新增的叶子节点;
22.s4.2,将任务请求资源树与任务运行资源树进行对比,获取减少的叶子节点;
23.s4.3,将任务请求资源树与任务运行资源树进行对比,获取变更的叶子节点;
24.s4.4,根据步骤s4.1-s4.3所获取的叶子节点构建新增节点集合和删除节点集合。
25.所述步骤s5包括如下步骤:
26.s5.1,遍历调谐信息中的新增节点集合,将新增节点集合中每个叶子节点所对应的容器、挂载点、磁盘或网络线路启动,实现任务运行资源树更新;
27.s5.2,遍历调谐信息中的删除节点集合,将删除节点集合中每个叶子节点所对应的容器、挂载点、磁盘或网络线路关闭,实现任务运行资源树更新。
28.一种边缘计算场景下的任务控制系统,包括:
29.资源信息采集模块:用于实时获取任务所在边缘节点的资源信息,所述资源信息包括磁盘是否正常、网络线路连通状态和每个磁盘下所对应的挂载点;
30.任务运行资源树构建模块:用于获取任务在边缘节点上运行时所占用的容器信息,并基于容器信息和边缘节点的资源信息构建任务运行资源树;
31.任务请求资源树构建模块:用于从云端获取任务运行所期望的资源请求信息,基于资源请求信息构建任务请求资源树;
32.任务调谐控制器模块:将任务运行资源树和任务请求资源树进行比较,获取包含新增节点集合和删除节点集合的调谐信息,利用深度优先遍历方法基于调谐信息进行任务调谐。
33.本发明的有益效果:
34.本技术能够实时感知边缘节点的资源信息,动态感知任务和任务所关联资源的状态以及任务部署时的期望资源,通过建立任务请求资源树和任务运行资源树并进行对比将任务运行时的资源状态和任务的资源期望状态连接起来,并结合实时感知到的资源信息,实现了任务的快速调谐,并在故障发生时,以最小的代价调谐任务到预期状态。可以高效的解决资源丢失、磁盘损坏下任务无法自动调整的问题;采用基于linux hook的方式可以准实时的感知到资源的损坏和丢失并且触发任务的同步,对比采用传统方法的5-10分钟,本技术的调谐时间可以缩短至1分钟。
附图说明
35.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1为本发明的流程示意图。
37.图2为任务运行资源树、任务请求资源树的构建及调谐示意图。
具体实施方式
38.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
39.实施例1:一种边缘计算场景下的任务控制方法,如图1所示,包括如下步骤:
40.s1,获取任务所在的边缘节点的资源信息,所述资源信息包括磁盘是否正常、网络线路连通状态和每个磁盘下所对应的挂载点;
41.由于在边缘云场景中,会存在任务在运行过程中磁盘突然丢失、网络线路突然中断等问题,本技术实时地对边缘节点的资源信息进行观测,可以帮忙任务部署系统及时的感知,避免影响任务处理的质量。实施时,可以基于轮询和/或基于事件驱动获取,基于轮询的机制就是反复执行s1检查节点的资源信息,基于事件驱动是通过s2.3中的ebpf,获取例如磁盘丢失、网卡丢失的相应事件,进而触发任务运行资源树的更新;s2.3实时性较高,s1更加可靠,但是不是所有的资源都有事件,所以s1和s2.3相结合的方式是最佳的。
42.s2,获取任务在边缘节点上运行所占用的容器信息,基于容器信息和步骤s1中的资源信息构建任务运行资源树,包括如下步骤:
43.s2.1,获取任务运行时所使用的所有容器;
44.s2.2,获取步骤s2.2中所有容器的资源使用信息,所述资源使用信息包括网络线路、容器所占用的磁盘、容器所使用的挂载点和参数;
45.所述参数包括容器的环境变量和启动参数,它可以作用于容器内部程序的开关、选项、配置参数等。在docker容器中网络线路体现了一个容器与一个或者多个docker network的对应关系。具体地,通过调用/var/run/docker.sock接口,即可获取容器列表和参数。
46.s2.3,如图2所示,将任务作为根节点,磁盘、挂载点和容器均作为叶子节点,构建任务运行资源树;
47.具体地,通过扩展的伯克利数据包过滤器(extended berkeley packet filter,ebpf,它是一种可以在linux内核中运行用户编写的程序,而不需要修改内核代码或加载内核模块的技术)在linux内核中动态插入hook点,即可以近乎实时的获取该任务所关联的资源,例如容器、磁盘、网络线路的增删改查,并将变更后的状态写到任务运行资源树(current status tree)中。通过树形结构可以很好地描述任务所依赖的资源。
48.s2.4,利用最长前缀匹配算法将任务运行资源树中的容器所使用的挂载点与边缘节点的挂载点、容器的网络线路与边缘节点的网络线路对应关联。
49.具体地,利用最长前缀匹配算法将容器的挂载点与边缘节点的挂载点相关联,以确保容器和磁盘的关联关系能够被正常获取,之后再将容器的网络线路与节点的网络线路
相关联。关联线路和关联挂载点本质是一种资源的分配,分配挂载点给容器可以使得容器获得更多的持久化存储能力和读写性能,分配线路给容器可以使容器获得更大的带宽以承载更高的网络吞吐,分配多条线路可以让容器网络有更多的容错能力,当一条线路故障可以使用另一条线路提供网络服务。
50.传统的任务控制器都会在系统中留存部分数据,例如kubernetes的/var/lib/kubelet/pods目录会保存所有容器的挂载点、配置等元数据,但是当元数据被损坏的时候,控制器就会出现异常情况;而本技术获取容器和磁盘的关联不依赖任何额外数据,完全依靠系统中实时的硬件信息进行关联,确保了关联数据的准确性和实时性。
51.s3,通过基于发布订阅模型的通信方法从云端获取任务运行所期望的资源请求信息,基于资源请求信息构建任务请求资源树,包括如下步骤:
52.s3.1,从任务的配置文件或者云端读取任务部署时所下发的资源请求信息;
53.所述资源请求信息是指系统对当前任务的一个部署预期,包括运行所占用的容器、网络线路、磁盘、挂载点;边缘节点基于发布订阅模型的通信方法与云端进行通信,云端可以将用户对任务的最新的预期配置通过发布的方式准确实时的同步到边缘节点。
54.比如:例如:docker run
‑‑
name=pai-task-1、
‑‑
volume/host/data-1:/data-1、
‑‑
network=wan0、
‑‑
env=prod_env=yes
‑‑
cpus2
‑‑
memory4gregistry.cn-shanghai.aliyuncs.com/ppio/pai-task:2201121107,其中

network=wan0声明了此容器使用的是wan0线路,
‑‑
volume=/host/data-1声明了此容器使用的是/host/data-1挂载点;通过docker提供的inspect api可以获取正在运行的容器中的

network和

volume对应的值;其中容器和线路的关联,可以直接通过

network得出。
55.s3.2,根据步骤s1得到资源信息更新资源请求信息;
56.具体地,如果资源请求信息中的线路、磁盘或者挂载点在边缘节点上不存在或损坏,则移除该信息,进而通过变化的资源请求信息触发任务控制的调谐。这样可以确保在边缘节点资源故障例如磁盘损坏的情况下的时候,避免被感知到并调整任务的部署。
57.s3.3,如图2所示,根据更新后的资源请求信息,将任务作为根节点,磁盘、挂载点和容器均作为叶子节点,构建任务请求资源树;
58.具体地,首先利用最长前缀匹配算法将资源请求信息中的磁盘和挂载点进行绑定,然后再基于最长前缀匹配算法将容器和挂载点进行绑定,最后将资源请求信息的网络线路与容器进行绑定,进而形成任务请求资源树(desired status tree)。从两颗资源树可以看出,容器和磁盘的关联需要通过磁盘和挂载点的关联、挂载点和容器的关联两次关联关系之后得出。
59.容器启动运行时的资源初始分配往往决定了容器中任务的运行效率,合理的资源配额分配既能够保障容器的稳定高效的运行又能充分的利用计算资源来完成所要求的任务。
60.s4,将任务运行资源树和任务请求资源树进行比较,获取调谐信息,包括如下步骤:
61.s4.1,将任务请求资源树与任务运行资源树进行对比,获取新增的叶子节点;
62.s4.2,将任务请求资源树与任务运行资源树进行对比,获取减少的叶子节点;
63.s4.3,将任务请求资源树与任务运行资源树进行对比,获取变更的叶子节点;
64.s4.4,根据步骤s4.1-s4.3获取的叶子节点构建新增节点集合和删除节点集合。
65.在实现层面,每个叶子节点都会实现删除(down)和新增(up)两个方法,删除对应的是销毁对应的资源,新增对应的部署/创建对应的资源;例如容器叶子节点实现的新增方法就是将对应的容器启动,而删除就是将容器销毁;磁盘叶子节点实现的新增方法是将磁盘分区并格式化,删除则是将磁盘的分区清理,基于此方式,控制器开发不需要考虑叶子节点的实际的业务逻辑。为了提高对比效率,当两颗树的某一个叶子节点不一致时,会直接标记该叶子节点下级所有的叶子节点不一致。例如,diska-》parta-》containera和diska
’‑
》parta
’‑
》containera’在对比diska的时候发现diska不一致,则不会继续对比parta和containera,极大的提高了对比的效率。
66.s5,控制器利用深度优先遍历方法基于调谐信息进行调谐,以确保任务同步,包括如下步骤:
67.s5.1,遍历新增节点集合,将新增节点集合中每个叶子节点所对应的容器、挂载点、磁盘或线路启动,实现任务运行资源树更新;
68.s5.2,遍历删除节点集合,将删除节点集合中每个叶子节点所对应的容器、挂载点、磁盘或线路关闭,实现任务运行资源树更新。
69.调谐(reconcile)作用是在于将当前状态调整到预期状态的一种机制,任务同步是一种状态,指的是基于reconcile的机制将current status tree同步至desired status tree。当收到云端发布的新的预期配置,任务请求资源树的改变会立即触发同步,当获取到该任务在使用的资源被移除、损坏的时候,任务运行资源树的改变也会立即触发同步。
70.本技术将边缘节点的异构部署抽象为一个任务,将节点上的每个任务看作一颗树状的结构,该任务关联的资源为这棵树的叶子节点,通过对比desired task tree和current task tree之间的最小化差异实现调谐。在任意一个资源发生改变的时候,都可以计算出current task tree达到desired task tree的最短路径,从而实现最低成本的变更。针对任务在边缘节点的当前的运行状态和指定的预期状态,动态的调节该节点上的任务部署拓扑,并且在调整过程中考虑边缘节点的当前状态,以最小的代价进行任务的部署和变更,最小化对任务部署状态的影响。
71.实施例2:一种边缘计算场景下的任务控制系统,包括:
72.资源信息采集模块:用于实时获取任务所在边缘节点的资源信息,所述资源信息包括磁盘是否正常、网络线路连通状态和每个磁盘下所对应的挂载点;
73.任务运行资源树构建模块:用于获取任务在边缘节点上运行时所占用的容器信息,并基于容器信息和边缘节点的资源信息构建任务运行资源树;
74.所述容器信息包括容器以及包含网络线路、容器所占用的磁盘、容器所使用的挂载点和参数的资源使用信息;
75.任务请求资源树构建模块:用于从云端获取任务运行所期望的资源请求信息,基于资源请求信息构建任务请求资源树;
76.所述资源请求信息是指系统对当前任务的一个部署预期,包括运行所占用的容器、网络线路、磁盘、挂载点;
77.任务调谐控制器模块:将任务运行资源树和任务请求资源树进行比较,获取包含新增节点集合和删除节点集合的调谐信息,利用深度优先遍历方法基于调谐信息进行任务
调谐。
78.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1