1.本发明属于云计算数据处理技术领域,尤其涉及一种基于容器的云计算工作流调度方法、系统及设备。
背景技术:2.目前,大多数的云中应用程序多为传统单体架构系统模式,所应用的调度方法也是针对单体架构设计。由于传统单体应用架构中耦合性高、拓展性差和开发效率低等问题,微服务架构作为一种新的应用程序开发模式由软件开发人员提出。在微服务架构下,原本的单体系统被拆分设计为一组小服务,每个小服务都在自己的进程中运行并使用轻量级机制(http请求/资源api调用)进行通信。这些服务都是围绕业务构建,可以独立开发、部署、运行和迭代更新。每个微服务都可以使用不同的编程语言编写并使用不同的数据存储技术。通过对服务之间的解耦,不同的服务单元被分解为功能单一的微服务,开发人员只需要关注服务本身的业务逻辑。各服务模块的开发团队可以并行工作,增加了系统的开发效率和鲁棒性。随着微服务技术的发展,微服务架构被广泛应用于云中的应用程序,但针对于此架构的调度方法大多是将微服务子模块单独占用一台虚拟机运行,容易造成资源的浪费;如果微服务子模块共用虚拟机,则容易造成各微服务执行环境相互干扰。
3.通过上述分析,现有技术存在的问题及缺陷为:现有技术中调度方法是将微服务子模块单独占用一台虚拟机运行,会形成较多的空闲时隙,容易造成资源的浪费;如果微服务子模块共用虚拟机,则容易造成各微服务执行环境相互干扰。
技术实现要素:4.针对现有技术存在的问题,本发明提供了一种基于容器的云计算工作流调度方法、系统及设备。
5.本发明是这样实现的,一种基于容器的云计算工作流调度方法,所述基于容器的云计算工作流调度方法包括:
6.首先容器配置决策模块根据各种任务处理时所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;其次工作流初始化模块确定到达工作流中任务的初始优先级,并根据优先级和工作流的截止日期约束计算每个任务的子截止日期;再次根据基于就绪任务紧急度的调度方法对工作流的任务进行调度,生成调度方案,以降低成本;最后处理结果反馈模块根据调度结果对后续的等待任务进行安排,以快速进行后续处理,减少后续就绪任务等待时间。
7.进一步,所述基于容器的云计算工作流调度方法具体包括:
8.步骤一,根据各种任务的计算工作所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;通过此配置可以在初始化容器的时候分配最合适的资源,避免资源资源分配过多导致浪费;
9.步骤二,工作流初始化模块将用户的请求转化为工作流的dag图,计算工作流中任
务的优先级和工作流中任务的子截止日期;同时为每个任务设置前驱任务集合和后继任务集合,并放入到对应的就绪队列和任务池中;通过此方法可以减小任务间的执行时间波动影响,并协调各任务间的执行顺序,提高资源利用率;
10.步骤三,基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配,如此执行可以实时调整各任务间的执行顺序,避免等待任务一开始在容器资源上的占用时间,减少等待时隙与空闲间隙;
11.步骤四,在一个就绪任务执行完以后,执行时间的不确定性将消失,执行任务的微服务实例更新就绪时间,可以实时调整任务的执行时间,根据任务的就绪时间和子截止日期实时分配最优资源执行,提高任务执行成功率;
12.步骤五,在步骤三中创建新的容器和虚拟机,进行容器和虚拟机的两层扩展,以最大限度的利用虚拟机资源和降低虚拟机的使用时间,降低虚拟机成本;使用两层扩展方便各任务间的独立执行,避免任务执行时的干扰,并且使资源可以细粒度的划分,避免资源的大块浪费。
13.进一步,所述步骤一具体过程为:
14.当共有f类微服务实例,则得到容器配置方案cc={ccj,j=1,2,...,f},其中ccj表示第类微服务类型所对应容器的配置方案。
15.进一步,所述步骤二具体过程为:
16.当用户请求到达云中心后,工作流初始化模块将用户的请求转化为工作流的dag图,根据dag图的关键路径计算工作流中任务的优先级,再根据截止日期、到达时间计算和计算的优先级计算工作流中任务的子截止日期;为每个任务设置前驱任务集合和后继任务集合,并将前驱任务集合为空的任务定义为就绪任务,放到就绪队列q中,其余任务为等待任务,放入任务池pt中。
17.进一步,所述步骤三具体过程为:
18.基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配;为所有就绪任务计算紧急度ui,作为就绪任务调度的基础,以解决多个就绪任务的调度优先问题;
19.一个就绪的任务为前驱任务已经完成的任务,且入口任务总是一个就绪的任务;计算完成后选择紧急度最小的任务进行调度,任务调度充分利用现有资源以及如何创建新的容器,不同的情况需要不同的调度方案。
20.进一步,所述不同的情况需要不同的调度方案具体包括:
21.当存在能够按时完成任务的实例,则选择是成本增加最少的一个运行任务;当现有实例都不满足,则初始化一个具cc配置的新容器运行任务;当某个虚拟机上有创建实例所需的镜像,则优先将容器部署在虚拟机上。
22.进一步,所述步骤四具体过程为:
23.在一个就绪任务执行完以后,执行时间的不确定性将消失,执行任务的微服务实例更新就绪时间;当实例上有等待任务,更新等待任务相关参数并在收到前置任务的参数后执行,并更新任务的后继任务的依赖信息;当存在后继任务的所有前置任务都已完成,则变为新的就绪任务,放入就绪队列q中,再次执行任务调度过程。
24.进一步,所述步骤四中,进行容器和虚拟机的两层扩展具体过程为:
25.1)将新增的容器通过最佳拟合算法部署到虚拟机上,当虚拟机都无法满足剩余容器时,将增加新的虚拟机来进行部署;
26.2)将剩余容器按所需资源的大小和每种虚拟机类型按拥有的资源大小进行降序排序,资源最多的设为type1;将所有剩余容器都部署在type1类型的虚拟机上,得到一个可行解s1并计算成本;
27.3)对除type1外的每个其他类型的虚拟机typei,设第一次i为2,找到可行解s
i-1
中最后创建的虚拟机,设为vm
x
中的方法部署到typei中,第一次i为2,得到可行解s2,计算可行解的成本;
28.4)重复过程3),得到最低成本的可行解s,对解中的每个虚拟机判断是否有资源剩余,替换为更低的虚拟机配置放置容器以进一步减少成本,最终得到可行解s。
29.本发明的另一目的在于提供一种实施所述基于容器的云计算工作流调度方法的基于容器的云计算工作流调度系统,所述基于容器的云计算工作流调度系统包括:
30.用户,发送请求,并接收返回结果;
31.工作流层,工作流初始化模块确定到达工作流中任务的初始优先级,并根据优先级和工作流的截止日期约束计算每个任务的子截止日期;再次根据基于就绪任务紧急度的调度方法对工作流的任务进行调度,生成调度方案,以降低成本;
32.微服务实施例层,容器配置决策模块根据各种任务处理时所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;
33.虚拟机层,处理结果反馈模块根据调度结果对后续的等待任务进行安排,以快速进行后续处理,减少后续就绪任务等待时间。
34.本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
35.步骤一,根据各种任务的计算工作所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;
36.步骤二,工作流初始化模块将用户的请求转化为工作流的dag图,计算工作流中任务的优先级和工作流中任务的子截止日期;同时为每个任务设置前驱任务集合和后继任务集合,并放入到对应的就绪队列和任务池中;
37.步骤三,基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配;
38.步骤四,在一个就绪任务执行完以后,执行时间的不确定性将消失,执行任务的微服务实例更新就绪时间;
39.步骤五,在步骤三中创建新的容器和虚拟机,进行容器和虚拟机的两层扩展,以最大限度的利用虚拟机资源和降低虚拟机的使用时间,降低虚拟机成本。
40.结合上述的技术方案和解决的技术问题,请从以下几方面分析本发明所要保护的技术方案所具备的优点及积极效果为:
41.第一、针对上述现有技术存在的技术问题以及解决该问题的难度,紧密结合本发明的所要保护的技术方案以及研发过程中结果和数据等,详细、深刻地分析本发明技术方
案如何解决的技术问题,解决问题之后带来的一些具备创造性的技术效果。具体描述如下:
42.为了解决传统单体应用架构中耦合性高、拓展性差、开发效率低和维护困难等问题,微服务架构被提出并被许多商业公司采用。在微服务架构中,一个应用程序被拆分为一系列可以独立开发、部署、运行和迭代的小服务。轻量级的容器虚拟化技术因其快速启动和低开销而成为部署微服务实例的首选技术。当前方法中很少有针对微服务工作流的优化,并且在应用场景中没有将微服务和现有的容器技术结合起来使资源利用最大化。大多数的方法只考虑了在网格计算和云计算中的传统工作流调度问题,将工作流任务调度到基础设施即服务模式的虚拟机上。本发明的提出旨在实现了工作流任务调度和容器伸缩的结合,保证了用户的服务质量;并且提高了云中的资源利用率,降低了执行成本。本发明采用容器作为微服务运行的载体,通过容器隔离运行环境的干扰,并且利用容器快速部署和运行的特点,大大减少微服务初始化时间,提高执行效率。此外,针对现阶段大多数的任务调度算法都假设单个工作流的执行,且工作流的特征提前已知;在考虑多工作流的算法中没有考虑工作流的实时性与任务执行时间的不确定性,从而导致调度算法做出的决策违反工作流的截止日期并增加成本。为此,本发明聚焦实时多工作流的任务调度问题,拟在保证用户qos的基础上尽可能使调度算法做出的伸缩决策最优(如新服务实例的配置和数量),以降低资源租用成本。
43.第二,把技术方案看做一个整体或者从产品的角度,本发明所要保护的技术方案具备的技术效果和优点,具体描述如下:
44.本发明可以对用户的请求进行快速处理并返回结果,在保证用户服务质量的情况下降低成本,提高资源利用率;可以为用户提供按需收费的模式,针对用户任务所需资源类型分配合适资源,进一步提高执行效率。
45.第三,作为本发明的权利要求的创造性辅助证据,还体现在以下重要方面:
46.本发明的技术方案克服了技术偏见:传统的调度方案中多使用虚拟机进行资源分配,虽然简单但是具有过高的成本和巨大的性能浪费,因此使用虚拟机和容器的双层结构可以避免此种情况,并为微服务的初始化提供更加快速的执行环境,缩短执行等待时间,提高任务执行成功率。
附图说明
47.图1是本发明实施例提供的基于容器的云计算工作流调度方法流程图;
48.图2是本发明实施例提供的基于容器的云计算工作流调度系统结构示意图;
49.图3是本发明实施例提供的容器云平台架构结构示意图;
50.图4是本发明实施例提供的应用程序工作流示意图;
51.图中:1、用户;2、工作流层;3、微服务实施例层;4、虚拟机层。
52.图5是本发明实施例提供的运行的部分项目示意图;
53.图6是本发明实施例提供的平台的部分组件示意图;
54.图7是本发明实施例提供的集群中各节点的资源使用情况示意图;
55.图8是本发明实施例提供的各集群信息示意图;
56.图9是本发明实施例提供的添加集群界面示意图;
57.图10是本发明实施例提供的某一集群资源的总体使用情况示意图;
58.图11是本发明实施例提供的创建服务界面示意图;
59.图12是本发明实施例提供的集群管理的所有服务具体信息示意图;
60.图13是本发明实施例提供的平台中该集群所运行的的容器组信息示意图;
61.图14是本发明实施例提供的集群中的节点信息示意图;
62.图15是本发明实施例提供的已分配资源和使用情况等信息示意图;
63.图16是本发明实施例提供的调度器调度情况示意图;
64.图17是本发明实施例提供的用户请求信息监控示意图。
具体实施方式
65.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
66.一、解释说明实施例。为了使本领域技术人员充分了解本发明如何具体实现,该部分是对权利要求技术方案进行展开说明的解释说明实施例。
67.如图1所示,本发明实施例提供的基于容器的云计算工作流调度方法包括:
68.s101:根据各种任务的计算工作所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置。
69.s102:工作流初始化模块将用户的请求转化为工作流的dag图,计算工作流中任务的优先级和工作流中任务的子截止日期;同时为每个任务设置前驱任务集合和后继任务集合,并放入到对应的就绪队列和任务池中。
70.s103:基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配。
71.s104:在一个就绪任务执行完以后,执行时间的不确定性将消失,执行任务的微服务实例更新就绪时间。
72.s105:在步骤三中创建新的容器和虚拟机,进行容器和虚拟机的两层扩展,以最大限度的利用虚拟机资源和降低虚拟机的使用时间,降低虚拟机成本。
73.本发明实施例提供的s101具体过程为:
74.假设共有f类微服务实例,则可以得到容器配置方案cc={ccj,j=1,2,...,f},其中ccj表示第类微服务类型所对应容器的配置方案。
75.本发明实施例提供的s102具体过程为:
76.当用户请求到达云中心后,工作流初始化模块将用户的请求转化为工作流的dag图,根据dag图的关键路径计算工作流中任务的优先级,再根据截止日期、到达时间计算和上述计算的优先级计算工作流中任务的子截止日期。之后为每个任务设置前驱任务集合和后继任务集合,并将前驱任务集合为空的任务定义为就绪任务,放到就绪队列q中,其余任务为等待任务,放入任务池pt中。
77.本发明实施例提供的s103具体过程为:
78.基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配。为了解决多个就绪任务的调度优先问题,为所有就绪任务计算紧急度ui,作为就绪任务调度的基础。一个就绪的任务指其前驱
任务已经完成的任务,且入口任务总是一个就绪的任务。计算完成后选择紧急度最小的任务进行调度,任务调度需要考虑如何充分利用现有资源以及如何创建新的容器。
79.不同的情况需要不同的调度方案,已知三种情况的方案如下:1)如果存在能够按时完成任务的实例,则选择是成本增加最少的一个运行该任务;2)如果现有实例都不满足,则初始化一个具cc配置的新容器运行该任务;3)如果某个虚拟机上有创建实例所需的镜像,则优先将容器部署在该虚拟机。
80.本发明实施例提供的s104具体过程为:
81.在一个就绪任务执行完以后,其执行时间的不确定性将消失,执行该任务的微服务实例更新其就绪时间。当该实例上有等待任务,更新等待任务相关参数并在收到前置任务的参数后执行,并更新该任务的后继任务的依赖信息,当存在后继任务的所有前置任务都已完成,则其变为新的就绪任务,将其放入就绪队列q中,再次执行任务调度过程。
82.本发明实施例提供的s104中,进行容器和虚拟机的两层扩展具体过程为:
83.1)将新增的容器通过最佳拟合算法部署到虚拟机上,当虚拟机都无法满足剩余容器时,将增加新的虚拟机来进行部署。
84.2)将剩余容器按所需资源的大小和每种虚拟机类型按拥有的资源大小进行降序排序,资源最多的设为type1;将所有剩余容器都部署在type1类型(配置最高)的虚拟机上,得到一个可行解s1并计算其成本。
85.3)对除type1外的每个其他类型的虚拟机typei,设第一次i为2,找到可行解s
i-1
中最后创建的虚拟机,设为vm
x
(此虚拟机可能存在太多的剩余资源,需要替换成更小的虚拟机减小成本),将虚拟机的容器使用步骤2)中的方法部署到typei中(第一次i为2),得到可行解s2,计算此可行解的成本。
86.4)重复过程3),得到最低成本的可行解s,对此解中的每个虚拟机判断是否有资源剩余,替换为更低的虚拟机配置放置这些容器以进一步减少成本,最终得到可行解s。
87.如图2所示,本发明实施例提供的基于容器的云计算工作流调度系统包括:
88.用户1,发送请求,并接收返回结果。
89.工作流层2,工作流初始化模块确定到达工作流中任务的初始优先级,并根据优先级和工作流的截止日期约束计算每个任务的子截止日期;再次根据基于就绪任务紧急度的调度方法对工作流的任务进行调度,生成调度方案,以降低成本。
90.微服务实施例层3,容器配置决策模块根据各种任务处理时所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置。
91.虚拟机层4,处理结果反馈模块根据调度结果对后续的等待任务进行安排,以快速进行后续处理,减少后续就绪任务等待时间。
92.二、应用实施例。为了证明本发明的技术方案的创造性和技术价值,该部分是对权利要求技术方案进行具体产品上或相关技术上的应用实施例。
93.此方案已有具体的产品,其中运行的部分项目如图5所示,平台的部分组件如图6所示,以及集群中各节点的资源使用情况如图7所示,如cpu使用率,cpu平均负载,内存使用率,容器组使用量等指标。
94.三、实施例相关效果的证据。本发明实施例在研发或者使用过程中取得了一些积极效果,和现有技术相比的确具备很大的优势,下面内容结合试验过程的数据、图表等进行
描述。
95.容器服务云平台中的计算集群,可以为用户提供方便快捷的集群计算任务。用户只需上传目标数据、任务文件,即可由平台自动进行集群计算,并且向用户提供计算结果。用户无需关注集群创建、环境配置等等与计算任务无关的工作,聚焦于计算本身。本测试平台使用32台虚拟机搭建三个集群,通过联邦机制对集群进行管理,一个为host集群,其余为member集群,各集群信息,如集群名称、集群内节点数量、集群所用kubernetes版本等信息如图8所示。当需要管理新的集群时,可以在添加集群页面进行对已有集群的添加,来动态的扩展对更多集群的管理,添加集群界面如图9所示。
96.点击集群名称可进入相应集群管理界面,每个集群管理包含节点管理、服务组件、项目管理、应用负载、存储管理、监控告警等功能,为服务提供商、应用开发者以及软件系统管理员提供方便的管理操作,概览界面集中展示了集群资源的总体使用情况,如集群cpu利用率、内存利用率、容器组利用率和本地储存利用率。具体信息如图10所示。
97.在微服务任务调度和容器伸缩中,为了对用户的请求进行处理,需要先将执行任务的服务发布到平台。服务是一组应用开发者开发的微服务镜像,应用开发者可以在平台添加自己的服务,添加时需要提供服务名称、功能简介、所属类型、服务的jar包等信息,添加完成后平台会全方位管理该服务,添加界面如图11所示。集群管理的所有服务具体信息如图12所示。
98.在kubernetes集群中,kube-scheduler和kube-controller-manager两个组件用来管理任务的调度和pod的弹性伸缩等功能,这些组件都有自定义的接口,开发者可以根据项目需求来修改调度器和控制器的规则,来实现项目的定制化管理。所提的方案需要在现有容器的状态和节点实时信息都明确的情况下做出决策,因此需要监控容器组和节点运行情况。平台中所有运行中的的容器组信息如图13所示。在微服务任务调度过程中调度算法会优先选择已有的容器服务执行对应任务,当又有容器组不满足条件时,kube-scheduler会创建新的容器组并通过算法选择最合适的节点进行部署。部署时会根据各节点的各种信息综合评价来选择节点,节点信息包括cpu利用率、内存利用率、容器组使用情况,具体信息如图14所示,每个节点内都有不同的容器组来执行任务,容器组的负载会对应于节点的运行状态,其已分配资源和使用情况等信息如图15所示。
99.在调度过程中,平台也会对调度器和用户请求进行监控,查看其调度情况以及不同时刻的请求压力,来动态调整调度策略。调度器调度情况如图16所示,用户请求信息监控如图17所示。
100.应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
101.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
技术特征:1.一种基于容器的云计算工作流调度方法,其特征在于,所述基于容器的云计算工作流调度方法包括:首先容器配置决策模块根据各种任务处理时所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;其次工作流初始化模块确定到达工作流中任务的初始优先级,并根据优先级和工作流的截止日期约束计算每个任务的子截止日期;再次根据基于就绪任务紧急度的调度方法对工作流的任务进行调度,生成调度方案,以降低成本;最后处理结果反馈模块根据调度结果对后续的等待任务进行安排,以快速进行后续处理,减少后续就绪任务等待时间。2.如权利要求1所述基于容器的云计算工作流调度方法,其特征在于,所述基于容器的云计算工作流调度方法具体包括:步骤一,根据各种任务的计算工作所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;步骤二,工作流初始化模块将用户的请求转化为工作流的dag图,计算工作流中任务的优先级和工作流中任务的子截止日期;同时为每个任务设置前驱任务集合和后继任务集合,并放入到对应的就绪队列和任务池中;步骤三,基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配;步骤四,在一个就绪任务执行完以后,执行时间的不确定性将消失,执行任务的微服务实例更新就绪时间;步骤五,在步骤三中创建新的容器和虚拟机,进行容器和虚拟机的两层扩展,以最大限度的利用虚拟机资源和降低虚拟机的使用时间,降低虚拟机成本。3.如权利要求2所述基于容器的云计算工作流调度方法,其特征在于,所述步骤一具体过程为:当共有f类微服务实例,则得到容器配置方案cc={cc
j
,j=1,2,...,f},其中cc
j
表示第类微服务类型所对应容器的配置方案。4.如权利要求2所述基于容器的云计算工作流调度方法,其特征在于,所述步骤二具体过程为:当用户请求到达云中心后,工作流初始化模块将用户的请求转化为工作流的dag图,根据dag图的关键路径计算工作流中任务的优先级,再根据截止日期、到达时间计算和计算的优先级计算工作流中任务的子截止日期;为每个任务设置前驱任务集合和后继任务集合,并将前驱任务集合为空的任务定义为就绪任务,放到就绪队列q中,其余任务为等待任务,放入任务池pt中。5.如权利要求2所述基于容器的云计算工作流调度方法,其特征在于,所述步骤三具体过程为:基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配;为所有就绪任务计算紧急度u
i
,作为就绪任务调度的基础,以解决多个就绪任务的调度优先问题;一个就绪的任务为前驱任务已经完成的任务,且入口任务总是一个就绪的任务;计算完成后选择紧急度最小的任务进行调度,任务调度充分利用现有资源以及如何创建新的容器,不同的情况需要不同的调度方案。
6.如权利要求5所述基于容器的云计算工作流调度方法,其特征在于,所述不同的情况需要不同的调度方案具体包括:当存在能够按时完成任务的实例,则选择是成本增加最少的一个运行任务;当现有实例都不满足,则初始化一个具cc配置的新容器运行任务;当某个虚拟机上有创建实例所需的镜像,则优先将容器部署在虚拟机上。7.如权利要求2所述基于容器的云计算工作流调度方法,其特征在于,所述步骤四具体过程为:在一个就绪任务执行完以后,执行时间的不确定性将消失,执行任务的微服务实例更新就绪时间;当实例上有等待任务,更新等待任务相关参数并在收到前置任务的参数后执行,并更新任务的后继任务的依赖信息;当存在后继任务的所有前置任务都已完成,则变为新的就绪任务,放入就绪队列q中,再次执行任务调度过程。8.如权利要求2所述基于容器的云计算工作流调度方法,其特征在于,所述步骤四中,进行容器和虚拟机的两层扩展具体过程为:1)将新增的容器通过最佳拟合算法部署到虚拟机上,当虚拟机都无法满足剩余容器时,将增加新的虚拟机来进行部署;2)将剩余容器按所需资源的大小和每种虚拟机类型按拥有的资源大小进行降序排序,资源最多的设为type1;将所有剩余容器都部署在type1类型的虚拟机上,得到一个可行解s1并计算成本;3)对除type1外的每个其他类型的虚拟机type
i
,设第一次i为2,找到可行解s
i-1
中最后创建的虚拟机,设为vm
x
中的方法部署到type
i
中,第一次i为2,得到可行解s2,计算可行解的成本;4)重复过程3),得到最低成本的可行解s,对解中的每个虚拟机判断是否有资源剩余,替换为更低的虚拟机配置放置容器以进一步减少成本,最终得到可行解s。9.一种实施如权利要求1~8任意一项所述基于容器的云计算工作流调度方法的基于容器的云计算工作流调度系统,其特征在于,所述基于容器的云计算工作流调度系统包括:用户,发送请求,并接收返回结果;工作流层,工作流初始化模块确定到达工作流中任务的初始优先级,并根据优先级和工作流的截止日期约束计算每个任务的子截止日期;再次根据基于就绪任务紧急度的调度方法对工作流的任务进行调度,生成调度方案,以降低成本;微服务实施例层,容器配置决策模块根据各种任务处理时所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;虚拟机层,处理结果反馈模块根据调度结果对后续的等待任务进行安排,以快速进行后续处理,减少后续就绪任务等待时间。10.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:步骤一,根据各种任务的计算工作所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;步骤二,工作流初始化模块将用户的请求转化为工作流的dag图,计算工作流中任务的优先级和工作流中任务的子截止日期;同时为每个任务设置前驱任务集合和后继任务集
合,并放入到对应的就绪队列和任务池中;步骤三,基于紧急度的任务调度模块在一个新工作流到达后或在一个分配的任务完成后产生了新的就绪任务时被触发,对就绪任务进行分配;步骤四,在一个就绪任务执行完以后,执行时间的不确定性将消失,执行任务的微服务实例更新就绪时间;步骤五,在步骤三中创建新的容器和虚拟机,进行容器和虚拟机的两层扩展,以最大限度的利用虚拟机资源和降低虚拟机的使用时间,降低虚拟机成本。
技术总结本发明属于云计算数据处理技术领域,公开了一种基于容器的云计算工作流调度方法、系统及设备,所述基于容器的云计算工作流调度方法包括首先容器配置决策模块根据各种任务处理时所需资源的历史记录,通过分析得到各种任务对应微服务实例的最佳容器配置;其次工作流初始化模块确定到达工作流中任务的初始优先级,并根据优先级和工作流的截止日期约束计算每个任务的子截止日期;再次根据基于就绪任务紧急度的调度方法对工作流的任务进行调度,生成调度方案;最后处理结果反馈模块根据调度结果对后续的等待任务进行安排。本发明可以对用户的请求进行快速处理并返回结果,在保证用户服务质量的情况下降低成本,提高资源利用率。提高资源利用率。提高资源利用率。
技术研发人员:沈玉龙 师瑞谦 吕亚龙 郭泽伟 陶玉东 李云豆 李泽玉 严煜昆 刘磊 薛天琳
受保护的技术使用者:西安电子科技大学青岛计算技术研究院
技术研发日:2022.07.05
技术公布日:2022/11/1