控制方法及装置、计算机设备及存储介质与流程

文档序号:32344301发布日期:2022-11-26 10:49阅读:28来源:国知局
控制方法及装置、计算机设备及存储介质与流程

1.本技术涉及路径规划技术领域,特别涉及一种控制方法、控制装置、计算机设备及非易失性计算机可读存储介质。


背景技术:

2.目前,在云计算过程中,会给多个任务分配固定的资源,从而使得任务能够正常地被执行。然而,任务所需的资源可能是不断变化的,资源分配过多会导致资源浪费,而资源分配过少则会导致任务执行效率较低。


技术实现要素:

3.本技术实施方式提供了一种控制方法、控制装置、计算机设备及非易失性计算机可读存储介质。
4.本技术实施方式的控制方法包括获取当前并行的任务的不同指标信息;根据所述指标信息和预设的伸缩策略确定目标并行数量;及根据所述目标并行数量调度资源,以调整当前并行的所述任务的数量。
5.本技术实施方式的控制装置包括获取模块、第一确定模块和调整模块。所述获取模块用于获取当前并行的任务的不同指标信息;所述第一确定模块用于根据所述指标信息和预设的伸缩策略确定目标并行数量;及所述调整模块用于根据所述目标并行数量调度资源,以调整当前并行的所述任务的数量。
6.本技术实施方式的计算机设备包括处理器,所述处理器用于执行控制方法。所述控制方法包括获取当前并行的任务的不同指标信息;根据所述指标信息和预设的伸缩策略确定目标并行数量;及根据所述目标并行数量调度资源,以调整当前并行的所述任务的数量。
7.本技术实施方式提供一种非易失性计算机可读存储介质,其上存储有计算机程序。该计算机程序被处理器执行时实现控制方法。所述控制方法包括获取当前并行的任务的不同指标信息;根据所述指标信息和预设的伸缩策略确定目标并行数量;及根据所述目标并行数量调度资源,以调整当前并行的所述任务的数量。
8.本技术的控制方法、控制装置、计算机设备及非易失性计算机可读存储介质,通过监控当前并行的任务的不同指标信息,并且基于指标信息和预设伸缩策略来确定是否需要扩容(扩大资源用量以增加当前可并行的任务数量)或缩容(缩小资源用量以减少当前可并行的任务数量),并确定扩容或缩容后的目标并行数量,最后根据目标并行数量来实时调度资源,以调整当前并行的任务的数量,从而使得调度的资源始终与当前需要执行的任务所需的资源相匹配,防止资源浪费的同时,最大化地保证了任务的执行效率。
9.本技术实施方式的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
10.本技术的上述和/或附加的方面和优点可以从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:
11.图1是本技术某些实施方式的控制方法的流程示意图;
12.图2是本技术某些实施方式的控制方法的架构示意图;
13.图3是本技术某些实施方式的控制方法的流程示意图;
14.图4是本技术某些实施方式的控制方法的流程示意图;
15.图5是本技术某些实施方式的控制方法的架构示意图;
16.图6是本技术某些实施方式的控制装置的模块示意图;
17.图7是本技术某些实施方式的计算机设备的平面示意图;及
18.图8是本技术某些实施方式的非易失性计算机可读存储介质与处理器的交互示意图。
具体实施方式
19.下面详细描述本技术的实施方式,实施方式的示例在附图中示出,其中,相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本技术的实施方式,而不能理解为对本技术的实施方式的限制。
20.下面首先对本技术出现的名词进行解释:
21.flink:是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能。目前flink在计算资源的管理上采用的是内部自动申请自动释放的方式。但是数据流量往往存在波峰波谷的情况,计算资源不能跟随流量变化而变化。初始设置的资源量容易过多或太少,从而造成资源浪费或者资源不足而导致作业延时。
22.云原生:是基于分布部署和统一运管的分布式云,以容器、微服务等技术为基础建立的一套云技术产品体系。
23.kubernetes(k8s):是一个用于自动化部署、扩展和管理容器化应用的开源容器编排器技术。k8s使部署和管理微服务架构应用程序变得很简单。它通过在集群之上形成一个抽象层来实现这一点,允许开发团队平滑地部署应用程序。
24.请参阅图1,本技术实施方式的控制方法包括:
25.步骤011:获取当前并行的任务的不同指标信息。
26.具体地,本技术会通过云监控平台获取flink集群上报的当前并行的任务的不同的指标信息,指标信息可包括当前并行的任务数量、平均cpu使用率、平均内存使用率、当前时刻等,通过实时获取flink集群上报的各种指标信息,能够方便后续根据指标信息进行诊断,以确定是否需要扩容或缩容。
27.步骤012:根据指标信息和预设的伸缩策略确定目标并行数量。
28.具体地,在接收到指标信息后,由于指标信息一般较多,为了方便后续的诊断,需要先对接收到的指标信息进行分类(如根据指标信息的标签信息进行分类),从而形成不同类别的指标信息。然后可获取预设类别的指标信息,如获取当前并行的任务数量、平均cpu
使用率、平均内存使用率、当前时刻等,通过预设类别的指标信息,来扩容或缩容,并确定扩容或缩容后的目标并行数量。
29.可选地,可根据平均cpu(central processing unit,中央处理器)使用率和预设cpu使用率的差值确定目标并行数量;和/或根据平均内存使用率和预设内存使用率确定目标并行数量;和/或在当前时刻为预设时刻的情况下,确定目标并行数量为与预设时刻对应的预设并行数量。
30.例如,预设cpu使用率一般包括上限和下限,根据平均cpu使用率和预设cpu使用率的差值确定目标并行数量时,若平均cpu使用率大于预设cpu使用率的上限(如80%),可以理解,cpu使用率过高容易出现异常,导致任务的执行效率不增反降,此时需要将平均cpu使用率降低下来。为了降低平均cpu使用率,需要进行扩容,以扩大资源用量,从而增加了当前并行的任务的数量,增加后的当前并行的任务的数量(即目标并行数量)可根据平均cpu使用率和预设cpu使用率的上限的差值来确定,如差值越大,则目标并行数量越大。当前并行的任务的数量增加后,可降低单个任务的cpu使用率,从而降低所有任务的平均cpu使用率,以使得平均cpu使用率降低到预设cpu使用率的上限之下,保证平均cpu使用率不会过高的同时,每个任务均具有足够cpu资源来进行计算,提高了任务执行效率。或者,根据平均cpu使用率和预设cpu使用率的差值确定目标并行数量时,若平均cpu使用率小于预设cpu使用率的下限(如30%),可以理解,cpu使用率过低使得任务分配的资源大量浪费,此时需要将平均cpu使用率提高上去。为了提高平均cpu使用率,需要进行缩容,以减小资源用量,从而减少了当前并行的任务的数量,减少后的当前并行的任务的数量(即目标并行数量)可根据预设cpu使用率的下限和平均cpu使用率的差值来确定,如差值越大,则目标并行数量越小。当前并行的任务的数量减少后,可提高单个任务的cpu使用率,从而提高所有任务的平均cpu使用率,以使得平均cpu使用率提高到预设cpu使用率的下限之上,保证平均cpu使用率不会过低,防止资源浪费。
31.例如,预设内存使用率一般包括上限和下限,根据平均内存使用率和预设内存使用率的差值确定目标并行数量时,若平均内存使用率大于预设内存使用率的上限(如90%),可以理解,内存使用率过高容易出现异常,导致任务的执行效率不增反降,此时需要将平均内存使用率降低下来。为了降低平均内存使用率,需要进行扩容,以扩大资源用量,从而增加了当前并行的任务的数量,增加后的当前并行的任务的数量(即目标并行数量)可根据平均内存使用率和预设内存使用率的上限的差值来确定,如差值越大,则目标并行数量越大。当前并行的任务的数量增加后,可降低单个任务的内存使用率,从而降低所有任务的平均内存使用率,以使得平均内存使用率降低到预设内存使用率的上限之下,保证平均内存使用率不会过高的同时,每个任务均具有足够内存资源来进行计算,提高了任务执行效率。或者,根据平均内存使用率和预设内存使用率的差值确定目标并行数量时,若平均内存使用率小于预设内存使用率的下限(如20%),可以理解,内存使用率过低使得任务分配的资源大量浪费,此时需要将平均内存使用率提高上去。为了提高平均内存使用率,需要进行缩容,以减小资源用量,从而减少了当前并行的任务的数量,减少后的当前并行的任务的数量(即目标并行数量)可根据预设内存使用率的下限和平均内存使用率的差值来确定,如差值越大,则目标并行数量越小。当前并行的任务的数量减少后,可提高单个任务的内存使用率,从而提高所有任务的平均内存使用率,以使得平均内存使用率提高到预设内存使用
率的下限之上,以保证平均内存使用率不会过低,防止资源浪费。
32.又例如,基于一些任务在特定的场景下,任务在不同时段使用的资源的变化是存在规律的,因此,可周期性地进行扩容或缩容。例如,任务在奇数小时内的资源使用量较小,在偶数小时内的资源使用量较大,因此,可每隔一小时进行一次扩容或缩容,在当前时刻为预设时刻(如以第一次扩容的时刻为12点,则每个整点均为预设时刻)的情况下,可首先根据预设时刻确定预设并行数量,如在预设时刻为偶数的整点的情况下,预设并行数量为16,在预设时刻为奇数的整点的情况下,预设并行数量为12,然后根据与预设时刻对应的预设并行数量来确定目标并行数量,从而使得当前运行的任务的数量周期性变化。
33.步骤013:根据目标并行数量调度资源,以调整当前并行的任务的数量。
34.具体地,在确定目标并行数量后,即可根据目标并行数量调度资源,如当前并行的任务的数量为10,目标并行数量为16,则需要再调度能够运行6个任务的资源(如6个预定规格的cpu资源和内存资源)。从而重新部署16个任务以分别使用16份资源,如将原本的10个任务所需执行的计算任务进一步拆分,以作为16个任务来分别由16份资源进行执行。如此,通过监控指标信息实现资源的弹性伸缩,防止资源浪费的同时保证了任务执行效率。
35.本技术实现弹性伸缩的架构如图2所示,其中,flink集群实时上报各种指标信息到云监控平台22,云监控平台22转发指标信息到指标信息诊断模块23,由指标信息诊断模块23先对指标信息进行分类后,再基于指标信息诊断模块23预设的伸缩策略和指标信息诊断是否需要进行扩容或缩容,及确定扩容或缩容后的目标并行数量,然后转发给后端的控制平台24,然后由控制平台24再次获取指标信息诊断模块23预设的伸缩策略和指标信息并再次进行诊断,从而确定最终要进行调整的目标并行数量并保存在数据库中。此外,为了保证资源调整后,重新部署任务时能够从任务中断的断点处恢复处理,在重新部署资源及任务,以调整当前并行的任务数量之前,需要保证已经任务已经计算的部分先保存下来。因此,可在保存当前并行的任务的信息后,重新部署资源及任务,以调整当前并行的任务数量,从而使得重新部署任务时能够根据已经保存的任务信息恢复处理,无需对任务以及计算的部分重复计算,提高了任务执行效率。
36.其中,flink集群21一般会每隔预设时长,对当前并行的任务的信息自动进行保存,因此,可判断当前时刻和上一次保存的时刻的时间差,并结合预设时长确定需要等待的时长,从而在等待的时长后(此时当前并行的任务的信息正好进行保存完成),重新部署资源及任务,以调整当前并行的任务数量,从而利用flink集群21自身的保存机制,防止对任务已计算的部分重复计算,提高了任务执行效率。当然,控制平台24可在重新部署资源及任务,以调整当前并行的任务数量之前,直接通知flink集群21立刻保存当前并行的任务的信息,从而无需等待flink集群21自动保存,在避免对任务已经计算的部分重复计算的前提下,提高了任务部署的效率。
37.此外,在重新部署任务时,可将任务部署在保存了该任务的信息的服务器上,从而使得服务器从本地就可以获取到任务的信息,而无需通过数据传输从其他服务器中获取任务的信息,进一步提高的任务部署的效率。
38.本技术的控制方法通过监控当前并行的任务的不同指标信息,如通过监控任务实际使用的数据流量来计算各种指标信息,以确定任务实时使用的资源,并且基于指标信息和预设伸缩策略来确定是否需要扩容(扩大资源用量以增加当前可并行的任务数量)或缩
容(缩小资源用量以减少当前可并行的任务数量),并确定扩容或缩容后的目标并行数量,最后根据目标并行数量来实时调度资源,以调整当前并行的任务的数量,从而使得调度的资源始终与当前需要执行的任务所需的资源相匹配,防止资源浪费的同时,最大化地保证了任务的执行效率。
39.请参阅图3,可选地,每个任务存在最大资源量和最小资源量,任务实际使用的资源量能够在最大资源量和最小资源量之间波动,控制方法还包括:
40.步骤014:根据指标信息,确定任务使用的实际资源量;
41.步骤015:在实际资源量位于最大资源量和最小资源量之间的情况下,根据实际资源量执行任务。
42.具体地,在为每个任务分配资源时,会为任务设置最大资源量和最小资源量,如最小资源量为最大资源量的40%,在获取到指标信息时,可获取到每个任务当前的指标信息,如当前的cpu使用率、内存使用率等,根据每个任务当前的指标信息,即可确定任务实际使用的资源量,若实际使用的资源量位于预先配置好的最大资源量和最小资源量之间,则可根据实际资源量执行任务,相较于始终以最大资源量执行任务,会造成资源浪费而言,通过设置每个任务实际可使用的资源量范围(即最小资源量至最大资源量),并使得任务实际使用的资源量在资源量范围内波动,可防止资源浪费。
43.请参阅图4,可选地,控制方法还包括:
44.步骤016:基于预设的容器编排算法,为每个任务建立任务容器并建立管理所有任务的作业容器。
45.步骤013:根据目标并行数量调度资源,以调整当前并行的任务的数量,包括:
46.步骤0131:根据目标并行数量调整任务容器的数量;
47.步骤0132:基于调整后的任务容器的数量向作业容器申请资源;
48.步骤0133:监听资源对应的任务并行数量;
49.步骤0134:在任务并行数量与调整后的任务容器的数量匹配的情况下,重新部署所有任务,以调整当前并行的任务的数量。
50.具体地,请结合图2和图5,在flink集群21中,通过作业管理器jm主动管理每个任务(如图2中的tm1、tm2等),每个任务的资源由每个任务部署的服务器提供,每个任务部署的服务器等可通过心跳机制维持与作业管理器jm的通信连接,如每个任务每分钟发送一个心跳信号来连接作业管理器jm,因此,作业管理器jm需要每隔一分钟才能够感知到任务的变化,如任务数量的变化,任务实际使用的资源等。难以在任务发生变化后,快速响应。
51.本技术利用k8s架构的容器机制,基于预设的容器编排算法,为flink集群21的每个任务建立任务容器(如图5中的任务容器1为图2中的tm1的任务容器,任务容器2为图2中的tm2的任务容器),并为管理所有任务的作业管理器jm建立作业容器25,通过控制任务容器的数量,可调整当前并行的任务的数量。如此,可将flink集群21内部的控制逻辑转换到外部的k8s架构中进行控制。
52.在根据目标并行数量调整任务容器的数量后,任务容器的数量变为目标并行数量,此时任务容器会基于调整后的数量,向作业容器25申请资源,相较于作业控制器jm主动根据心跳机制获取任务的数量而言,在任务容器的数量变化后由任务容器主动向作业容器25进行资源申请,响应速度显然更快。作业容器25接收到基于调整后的任务容器的数量的
资源申请后,会进行资源调度,可以理解,调度的资源并不是立刻就能确定的,因此,需要实时监控当前调度的资源,以确定该资源能够支持的任务并行数量,在任务并行数量与调整后的任务容器的数量匹配(如任务并行数量大于或等于调整后的任务容器的数量)的情况下,即表示资源调度完成,此时即可根据调度好的资源重新部署所有任务,以调整当前并行的任务的数量,使得当前并行的任务的数量大于或等于目标并行数量,从而实现资源的弹性伸缩。
53.本技术将flink集群21的控制转换到k8s架构中进行控制的架构如图5所示,主控制器26在获取到目标并行数量后,即可根据目标并行数量,调整任务副本的数量,其中,主控制器还可以与k8s的客户端27连接,通过接收k8s的客户端27的输入来进行资源的调整。任务副本基于调整后的数量向作业副本25申请资源,作业副本25包括作业控制器251、资源管理器252和资源监视器253,作业控制器251用于根据需要申请的任务副本的数量申请资源,资源管理器252用于管理已申请的资源,资源监视器253则用于监视已申请的资源的变化。在资源监视器253根据监视到的已申请的资源,能够计算得到对应的任务并行数量,在任务并行数量和调整后的任务容器的数量匹配的情况下,作业控制器25即可根据已申请的资源,来重新部署任务,从而调整的当前并行的任务的数量,如根据目标并行数量调度资源后,最终使得调整后当前并行的任务的数量达到目标并行数量。如此,通过任务副本主动申请资源,实现资源的快速调度,并通过资源监视器253实时监视已申请的资源,无需等待为任务提供资源的服务器通信超时,即可实时感知资源的变化,然后在资源调度完成后,立刻执行任务的部署,快速地实现资源的弹性伸缩。
54.可选地,每个任务容器可包括一个或多个可用槽,任务容器的可用槽的数量即表示任务容器能够同时并行的线程的数量。任务并行数量与调整后的任务容器的数量匹配可以是:任务并行数量等于调整后的任务容器的数量*每个任务容器包含的可用槽的数量。
55.为了方便管理人员对资源的管理,资源监视器253监视的已申请的资源信息、当前资源能够支持的任务并行数量均可作为资源用量信息实时显示,如在全球广域网(world wide web,web)前端28进行显示。
56.目前,flink的历史服务器用于查看作业的历史的运行情况。可以在相应的flink集群21关闭之后查询已完成作业的统计信息。历史服务器其实主要应用在批处理的任务上,需要查询批任务的运行状态,以及相应的运行日志。由于批任务任务量较大,所以需要一个高效的历史服务器用于此类的查询需求。
57.本技术将每个任务运行后的信息存储其他高性能存储设备中,如预设数据库如mysql数据库,管理人员在查询时,可从预设数据库进行高效的查询。且资源的调度信息也可以生成运行日志,同样存储到预设数据库中,不仅方便后台管理人员查询,而且还能够开放给云平台,以使得用户在云平台快速查询资源调度的运行日志。
58.本技术基于k8s实现资源的弹性伸缩的架构能够实现云原生的一键部署,并自动计算出每个任务的初始资源信息,还可通过资源管理器实现已申请的资源的管理,从而方便资源监视器实时监控已申请的资源的变化,有利于实现资源的快速调度,快速实现资源的弹性伸缩。
59.为便于更好的实施本技术实施方式的控制方法,本技术实施方式还提供一种控制装置10。请参阅图6,该控制装置10可以包括:
60.获取模块11,用于获取当前并行的任务的不同指标信息;
61.第一确定模块12,用于根据指标信息和预设的伸缩策略确定目标并行数量;及
62.调整模块13,用于根据目标并行数量调整当前并行的任务的数量。
63.第一确定模块12具体用于:
64.根据平均cpu使用率和预设cpu使用率的差值确定目标并行数量;和/或
65.根据平均内存使用率和预设内存使用率确定目标并行数量;和/或
66.在当前时刻为预设时刻的情况下,确定目标并行数量为与预设时刻对应的预设并行数量。
67.控制装置10还包括:
68.第二确定模块14,用于根据指标信息,确定任务使用的实际资源量;
69.执行模块15,用于在实际资源量位于最大资源量和最小资源量之间的情况下,根据实际资源量执行任务。
70.控制装置10还包括:
71.建立模块16,用于基于预设的容器编排算法,为每个任务建立任务容器并建立管理所有任务的作业容器;
72.调整模块13具体用于:
73.根据目标并行数量调整任务容器的数量;
74.基于调整后的任务容器的数量向作业容器申请资源;
75.监听资源对应的任务并行数量;
76.在任务并行数量与调整后的任务容器的数量匹配的情况下,重新部署所有任务,以调整当前并行的任务的数量。
77.控制装置10还包括:
78.显示模块17,用于根据任务并行数量显示资源用量信息。
79.调整模块13具体还用于在保存每个任务的信息的服务器重新部署每个任务。
80.调整模块13具体还用于在保存当前并行的任务的信息后,根据目标并行数量调度资源,以调整当前并行的任务的数量。
81.控制装置10还包括:
82.保存模块18,用于记录资源每一次调度的信息,以生成运行日志,并保存运行日志在预设的数据库。
83.上述控制装置10中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各个模块可以以硬件形式内嵌于或独立于计算机设备中的处理器20中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器20调用执行上述各个模块对应的操作。
84.请参阅图7,本技术实施方式的计算机设备100包括处理器20。处理器20用于执行上述任意一种实施方式的控制方法,为了简洁,在此不再赘述。
85.计算机设备100可以是移动终端、服务器(如云服务器)、平板电脑、台式电脑等。
86.请参阅图8,本技术实施方式还提供了一种计算机可读存储介质300,其上存储有计算机程序310,计算机程序310被处理器20执行的情况下,实现上述任意一种实施方式的控制方法的步骤,为了简洁,在此不再赘述。
87.可以理解,计算机程序310包括计算机程序代码。计算机程序代码可以为源代码形
式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、以及软件分发介质等。
88.在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”或“一些示例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。
89.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施方式所属技术领域的技术人员所理解。
90.尽管上面已经示出和描述了本技术的实施方式,可以理解的是,上述实施方式是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施方式进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1