掌桥专利:专业的专利平台
掌桥专利
首页

资源分配方法、装置、设备及介质

文献发布时间:2023-06-19 11:02:01


资源分配方法、装置、设备及介质

技术领域

本发明涉及计算机技术领域,特别是涉及一种资源分配方法、装置、设备及介质。

背景技术

随着计算机网络技术的发展,实际中需要为一些应用软件的开发等提供对应的运行资源。以神经网络构建为例,为支持神经网络的构建,会利用设备集群为神经网络的构建提供硬件资源,例如,提供显卡资源。一般而言,这些设备集群可以统称为云资源。

相关技术中,会按照一定的分配规则从云资源中划分出部分资源给设备集群中的用户,如此,用户可以利用划分给自己所登录设备的资源进行相关地的软件开发。例如,按照用户等级划分资源,等级高的用户划分较多的资源,等级低的用户划分较少的资源。然而,采用此种资源划分方式时,不可避免地,会存在资源多分或少分的情况,当资源多分时,便会存在资源的浪费和空占,而资源少分时,又会导致无法支撑起所需的执行环境。

因而,采用相关技术中的资源分配方式存在资源分配不合理、资源利用率不高的技术问题。

发明内容

鉴于上述问题,提出了本发明实施例的一种资源分配方法、装置、设备及介质,以便克服上述问题或者至少部分地解决上述问题。

为了解决上述问题,本发明的第一方面,公开了一种资源分配方法,所述方法应用于第一设备,所述方法包括:

利用本地的资源创建代码编写容器,并通过所述代码编写容器编写目标代码;

利用本地的资源创建代理容器,并通过所述代理容器接收所述代码编写容器发送的资源分配请求,所述资源分配请求用于请求执行所述目标代码所需的目标资源;

通过所述代理容器向资源管理服务器申请所述目标资源;

所述第一设备通过所述代理容器向所述第一代码执行容器发送代码执行请求,所述代码执行请求用于指示通过所述第一代码执行容器执行所述目标代码,所述第一代码执行容器由提供所述目标资源的第二设备利用所述目标资源创建。

可选地,所述方法还包括:

利用本地的资源创建第二代码执行容器;

通过所述代码编写容器向所述第二代码执行容器发送代码执行请求,所述代码执行请求用于请求执行所述目标代码;

通过所述第二代码执行容器执行所述目标代码。

可选地,所述方法还包括:

通过所述代理容器接收所述第一代码执行容器执行所述目标代码后生成的代码执行结果;

通过本地的信息输出组件输出所述代码执行结果。

可选地,所述方法还包括:

通过所述代码编写容器将所述目标代码挂载到存储盘中,所述存储盘供所述代码编写容器和代码执行容器共享,所述代码执行容器用于执行所述目标代码;

其中,所述第一设备通过所述代码编写容器发送的代码执行请求携带所述目标代码在所述存储盘中的存储地址,以使所述代码执行容器根据所述存储地址从所述存储盘中读取所述目标代码,进而执行所述目标代码。

可选地,在通过所述代码编写容器编写目标代码之后,所述方法还包括:

通过所述代码编写容器获得用户配置的代码执行方式;

利用本地的资源创建代理容器,包括:

在所述代码执行方式为远程执行的情况下,利用本地的资源创建代理容器,以通过所述代理容器向资源管理服务器申请所述目标资源,以基于所述目标资源得到所述第一代码执行容器,并通过所述第一代码执行容器执行所述目标代码;

利用本地的资源创建第二代码执行容器,包括:

在所述代码执行方式为本地执行的情况下,利用本地的资源创建第二代码执行容器,并通过所述第二代码执行容器执行所述目标代码。

本申请实施例的第二方面,提供一种资源分配方法,所述方法应用于第二设备,所述方法包括:

接收资源管理服务器发送的资源调度指令,所述资源调度指令由所述资源管理服务器在接收到第一设备通过代理容器发送的资源分配请求时生成,所述资源分配请求是由所述第一设备上的代码编写容器在检测到目标代码编写完成后生成的;其中,所述代理容器和所述代码编写容器均是由所述第一设备利用本地的资源创建的;

根据所述资源调度指令,利用本地的目标资源创建第一代码执行容器;

在接收到所述第一设备通过所述代理容器发送的代码执行请求时,通过所述第一代码执行容器执行所述目标代码。

可选地,通过所述第一代码执行容器执行所述目标代码,包括:

从所述代码编写容器所挂载的存储盘中获取所述目标代码;其中,所述存储盘供所述代码编写容器和所述第一代码执行容器共享;

通过所述第一代码执行容器执行所述目标代码。

可选地,所述方法还包括:

获取所述第一代码执行容器执行所述目标代码后生成的代码执行结果;

将所述代码执行结果发送给所述代理容器,以使所述第一设备通过所述第一设备本地的信息输出组件输出所述代码执行结果。

本申请实施例的第三方面,提供一种资源分配装置,所述装置部署于第一设备,包括:

创建模块,用于利用本地的资源创建的代码编写容器和代理容器;所述代码编写容器用于编写目标代码;所述代理容器用于接收所述代码编写容器发送的资源分配请求,所述资源分配请求用于请求执行所述目标代码所需的目标资源;

资源申请模块,用于通过所述代理容器向资源管理服务器申请所述目标资源;

代码执行模块,用于通过所述代理容器向所述第一代码执行容器发送代码执行请求,所述代码执行请求用于指示第二设备通过所述第一代码执行容器执行所述目标代码,所述第一代码执行容器由提供所述目标资源的第二设备利用所述目标资源创建。

本申请实施例的第四方面,提供一种资源分配装置,所述装置部署于第二设备,包括:

资源调度接收模块,用于接收资源管理服务器发送的资源调度指令,所述资源调度指令由所述资源管理服务器在接收到第一设备通过代理容器发送的资源分配请求时生成,所述资源分配请求是由所述第一设备上的代码编写容器在检测到目标代码编写完成后生成的;其中,所述代理容器和所述代码编写容器均是由所述第一设备利用本地的资源创建的;

容器创建模块,用于根据所述资源调度指令,利用本地的目标资源创建第一代码执行容器;

代码执行模块,用于在接收到所述第一设备通过所述代理容器发送的代码执行请求时,通过所述第一代码执行容器执行所述目标代码。

本申请实施例的第五方面,提供一种资源分配系统,应用于设备集群,所述设备集群至少包括第一设备和第二设备,所述系统包括:

所述第一设备包括:利用本地的资源创建的代码编写容器和代理容器;所述第二设备用于提供执行所述目标代码所需的目标资源,包括:利用所述目标资源创建的第一代码执行容器;

其中,所述代码编写容器用于:供用户编写目标代码,接收所述代码编写容器发送的资源分配请求,向资源管理服务器申请执行所述目标代码所需的目标资源;

所述代理容器用于:向所述第一代码执行容器发送代码执行请求,所述代码执行请求用于请求执行所述目标代码;

所述第一代码执行容器用于:执行所述目标代码。

可选地,所述第一设备还包括:利用本地的资源创建第二代码执行容器;

其中,所述代码编写容器用于向所述第二代码执行容器发送代码执行请求,所述代码执行请求用于请求执行所述目标代码;

所述第二代码执行容器用于执行所述目标代码。

可选地,所述第一设备还包括:信息输出组件;

所述代理容器用于接收所述第一代码执行容器执行所述目标代码后生成的代码执行结果;

所述信息输出组件用于输出所述代码执行结果。

可选地,所述系统还包括:存储盘,所述存储盘供所述代码编写容器和代码执行容器共享,所述代码执行容器用于执行所述目标代码;

所述代码编写容器用于将所述目标代码挂载到所述存储盘中;

其中,所述第一设备通过所述代码编写容器发送的代码执行请求携带所述目标代码在所述存储盘中的存储地址,以使所述代码执行容器根据所述存储地址从所述存储盘中读取所述目标代码,进而执行所述目标代码。

本发明实施例还公开了一种电子设备,包括:包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现如第一方面实施例或第二方面实施例所述的资源分配方法。

本发明实施例还公开了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明第一方面实施例或第二方面实施例所述的资源分配方法。

本发明实施例包括以下优点:

在本发明实施例中,设备集群中的第一设备可以执行以下内容:利用本地的资源创建代码编写容器,并通过代码编写容器编写目标代码,利用本地的资源创建代理容器,并通过所述代理容器接收代码编写容器发送的资源分配请求,之后,通过代理容器向资源管理服务器申请所述目标资源。如此,提供目标资源的第二设备可以利用目标资源创建第一代码执行容器;接着,第一设备通过代理容器向第一代码执行容器发送代码执行请求,以使第二设备通过第一代码执行容器执行目标代码。

由于在本申请实施例中,第一设备可以利用本地的资源创建代码编写容器,并通过代码编写容器编写目标代码,在需要执行目标代码时,可以通过代理容器向资源管理服务器申请执行目标代码所需的目标资源,进而通过目标资源所在的第二设备创建第一代码执行容器以执行该目标代码。如此,编写代码所需的资源可以来源于本地资源,而在执行代码时,可以向资源管理服务器动态申请执行代码所需的目标资源。这样,一方面,执行代码所需的目标资源可以无需固定给用户,从而在分配给用户之前,该目标资源可以分配给其他用户使用,避免了在代码编辑阶段和代码执行阶段的资源均是固定对应于用户的资源时,资源被空占的问题。另一方面,由于是在执行代码时,向资源管理服务器动态申请执行代码所需的目标资源,这样,目标资源便是适配执行代码时所需的资源,避免了提前指定代码执行资源时,导致的执行资源不够或过多的问题,从而充分提高了资源利用率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中的一种资源分配方法的实施环境示意图;

图2是本发明实施例中的一种资源分配方法的步骤流程图;

图3是本发明实施中从第一设备侧示出的资源分配方法的总体流程示意图;

图4是本发明实施例中的又一种资源分配方法的步骤流程图;

图5是本发明实施中的一种资源分配系统的结构框图;

图6是本发明实施中的又一种资源分配系统的结构框图;

图7是本发明实施中的一种资源分配装置的结构框图;

图8是本发明实施中的又一种资源分配装置的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

相关技术中的资源分配方式如下:对于开机申请设备集群中的资源的用户,会从设备集群中划分出固定的资源以专用于该用户进行相关应用软件的开发构建。其中,神经网络构建或软件开发一般包括两个阶段,分别为代码编辑阶段和代码执行阶段,采用相关技术中的资源分配方式时,在代码编辑阶段和代码执行阶段的资源均是固定对应于用户的。

然而,采用这一方式时,用户在编写代码,还没有用到的执行编码时所需的资源也需要为运行代码做准备,这样,便使得这些等候运行代码的资源被空占,降低了对设备集群中的资源的利用率。

有鉴于此,本申请人提出了以下技术构思:从本地资源中为编写代码分配所需的资源,在编写完代码需要执行代码时,向资源管理服务器动态申请执行代码所需的目标资源,这样,执行代码所需的目标资源无需固定给用户,从而在分配给用户之前,该目标资源可以分配给其他用户使用,避免了在代码编辑阶段和代码执行阶段,目标资源被空占的问题。

参照图1所示,示出了本申请实施例的实施环境示意图,如图1所示,可以包括设备集群,设备集群中包括资源管理服务器和多个设备。其中,多个设备可以是指具有显卡资源的智能设备,这些多个设备共同构成设备集群,该设备集群可以称为云资源,资源管理服务器可以用于对云资源中的资源进行调配。

本实施例中,用户可以通过设备集群中的一个设备进行代码编写和运行时,该被用户实际使用的设备可以称为第一设备,例如,如图1中,用户使用设备4,则设备4可以称为第一设备。其中,在进行代码编写和运行时,设备集群中的其他设备上的资源也可以用于支持用户在第一设备编写好的代码的运行,该其他设备便可以是第二设备,例如,使用了设备1的资源,则设备1为第二设备。如此,便涉及将设备集群中的资源分配给用户的问题,为提高设备集群的资源利用率,本申请实施例提出了一种资源分配方法。

参照图2所示,示出了本申请的一种资源分配方法的步骤流程示意图,具体应用于第一设备,可以包括以下步骤:

步骤S201:利用本地的资源创建代码编写容器,并通过所述代码编写容器编写目标代码。

本实施例中,执行资源分配方法的第一设备可以是指用户当前所使用的设备,实际中,第一设备可以是具有虚拟机(Virtual Machine)的设备,虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。这样,当用户使用第一设备进行代码编码和代码执行时,可以在第一设备的虚拟机中完成。

具体实施时,第一设备可以提供用户访问虚拟机的IDE(Integrated DevelopmentEnvironment,集成开发环境)入口,其中,该IDE入口可以为JupyterLab。这样,当用户使用第一设备的虚拟机进行代码编写时,可以通过通过JupyterLab实现。

其中,在用户使用第一设备的虚拟机进行代码编写时,其虚拟机的实现方式是容器,本实施例中,可以通过代码编写容器实现代码编写,其中,容器所需的资源可以来源于第一设备,即利用第一设备本地的资源创建代码编写容器。其中,第一设备本地的资源可以是CPU资源或显卡资源,具体而言,可以根据代码编写所对应的业务确定具体适用哪一资源。例如,当业务所需资源较多时,可以将本地的显卡资源作为虚拟机的资源分配给用户,或当业务所需资源较少时,可以将本地的CPU资源作为虚拟机的资源分配给用户。

其中,在利用本地的资源创建代码编写容器后,便可以利用该代码编写容器编写目标代码。具体而言,代码编写容器可以理解为是供用户编写目标代码的一个计算机环境,用户可以在代码编写容器提供的环境中,可以理解为是视图界面中编写目标代码。

步骤S202:利用本地的资源创建代理容器,并通过所述代理容器接收所述代码编写容器发送的资源分配请求,所述资源分配请求用于请求执行所述目标代码所需的目标资源。

本实施例中,在目标代码编写完成后,便可以执行目标代码。其中,执行目标代码所需的资源可以由第一设备动态获取,具体地,第一设备可以利用本地的资源创建代理容器,该代理容器与代码编写容器通信,以接收代码编写容器发送的资源分配请求。即,代码编写容器在检测到用户完成目标代码的编写时,可以向代理容器发送资源分配请求,从而请求执行目标代码所需的目标资源。

其中,目标资源可以是来源于第一设备本地的资源,也可以是来源于设备集群中其他设备上的资源,具体可以依据执行目标代码所需的资源的大小确定。

步骤S203:通过所述代理容器向资源管理服务器申请所述目标资源。

本实施例中,资源管理服务器可以位于设备集群中,该资源管理服务器可以用于对设备集群中各个设备的资源进行调度。如此,代理容器可以向资源管理服务器申请目标资源,具体地,代理容器可以向资源管理服务器发送资源请求,该资源请求可以携带所需资源的大小或所需资源的配置。如此,资源管理服务器可以根据目标资源的大小或配置,从设备集群中调度到目标资源。

其中,该目标资源可以是显卡资源或内存资源。

步骤S204:通过所述代理容器向所述第一代码执行容器发送代码执行请求,所述代码执行请求用于指示第二设备通过所述第一代码执行容器执行所述目标代码,所述第一代码执行容器由提供所述目标资源的第二设备利用所述目标资源创建。

本实施例中,在目标资源为第二设备上的资源时,资源管理服务器对目标资源的调度可以是以下方式的调度:向第二设备发送资源调度请求,以使第二设备利用目标资源创建第一代码执行容器,该资源调度请求中可以携带目标代码。

其中,第二设备为与第一设备不同的设备,第二设备利用目标资源创建第一代码执行容器可以理解为是:第二设备在目标资源提供的软硬件环境中创建一个用于执行代码的第一代码执行容器,例如,将第一代码执行容器设置在第二设备的显卡资源中,这样,便是利用显卡资源供代码执行,即执行目标代码时均是在显卡资源中执行,该第一代码执行容器可以理解为是执行代码的进程环境。

本实施例中,当资源管理服务器调度到目标资源,且第二设备创建了第一代码执行容器后,资源管理服务器可以向代理容器返回目标资源的详情信息,如此,代理容器便可以根据目标资源的详情信息向第一代码执行容器发送代码执行请求,第一代码执行容器便可以执行资源调度请求中携带的目标代码。

采用本申请实施例的技术方案,第一设备可以利用本地的资源创建代码编写容器,并通过代码编写容器编写目标代码,在需要执行目标代码时,再通过代理容器动态地向资源管理服务器申请执行目标代码所需的目标资源,进而通过目标资源所在的第二设备创建第一代码执行容器以执行该目标代码。如此,编写代码所需的资源可以来源于本地资源,而在执行代码时,可以向资源管理服务器动态申请执行代码所需的目标资源。这样,一方面,执行代码所需的目标资源可以无需固定给用户,从而在分配给用户之前,该目标资源可以分配给其他用户使用,避免了在代码编辑阶段和代码执行阶段的资源均是固定于用户的资源时,资源被空占的问题。另一方面,由于是在执行代码时,向资源管理服务器动态申请执行代码所需的目标资源,这样,目标资源便是适配执行代码时所需的资源,避免了提前指定代码执行资源时,导致的执行资源不够或过多的问题,从而充分提高了资源利用率。

在一种实施例中,参照图3所示,示出了以第一设备为视角的执行代码编码和代码执行的过程示意图,如图3所示,第一设备在编写代码时,可以将编写的代码存储到挂载的存储盘中,在执行目标代码时,便可以从存储盘中读取目标代码以便执行目标代码。其中,可以采用第一设备的本地资源所创建的第二代码执行容器执行目标代码,也可以用第二设备的资源所创建的第一代码执行容器执行目标代码。其中,目标代码的执行结果也可以通过信息输出组件进行输出,

下面,结合图3,首先对本申请的第一设备如何支持代码编写进行详细说明:

具体地,在一种示例中,第一设备可以通过代码编写容器将目标代码挂载到存储盘中,该存储盘可以供代码编写容器和代码执行容器共享,所述代码执行容器用于执行所述目标代码;

其中,所述第一设备通过所述代码编写容器发送的代码执行请求携带所述目标代码在所述存储盘中的存储地址,以使所述代码执行容器根据所述存储地址从所述存储盘中读取所述目标代码,进而执行所述目标代码。

本实施例中,存储盘可以挂载到代码编写容器,其中,挂载到代码编写容器的存储盘可以包括数据盘、rootfs盘,也可以仅为rootfs盘和数据盘中的一者,具体可以根据代码编写需求进行确定。

其中,数据盘、rootfs盘均为网络存储形式,如此同一个存储盘可以供多个容器共享,本实施例中,存储盘可以供代码编写容器和代码执行容器共享,该代码执行容器具体是指用户执行目标代码的容器,如图3所示,该代码执行容器具体可以是第一代码执行容器或第一设备本地的第二代码执行容器。其中,第一设备本地的第二代码执行容器的创建过程和条件在后续实施例中阐述。

其中,存储盘供代码编写容器和代码执行容器共享可以是指:代码编写容器可以将编写的代码存储到存储盘,代码执行容器可以从存储盘中读取编写的代码。

相应的,在目标代码执行阶段,第二设备通过代理容器所发送的代码执行请求中可以包括目标代码在存储盘中的存储地址,这样,代码执行容器便可以根据存储地址从存储盘中读取目标代码,进而执行目标代码。

采用此种实施方式时,由于存储盘可以供代码编写容器和代码执行容器共享,可以保证环境数据的一致性,使得代码编写容器和代码执行容器挂载的存储盘中的数据保持一致。

接着,对本申请实施例的第一设备如何执行代码进行详细说明:

在一种示例中,在执行代码所要用到的资源较少时,也可以用第一设备的资源执行目标代码。具体地,所述第一设备可以利用本地的资源创建第二代码执行容器,并通过所述代码编写容器向所述第二代码执行容器发送代码执行请求,所述代码执行请求用于请求执行所述目标代码;如此,第一设备可以通过第二代码执行容器执行目标代码。

其中,第一设备本地的资源可以是指第一设备的虚拟机的资源,可以是CPU资源或显卡资源,若第一设备利用本地的资源创建第二代码执行容器时,则可以不用向资源管理服务器申请目标资源,如此,第二代码执行容器是运行在本地的容器。此种情况下,第一设备可以通过代码编写容器向第二代码执行容器发送代码执行请求,其中,代码执行请求中可以用于请求第二代码执行容器执行目标代码。

采用此种方式时,也可以利用本地的资源执行目标代码。

在又一种示例中,如图3所示,在第一设备通过代码编写容器编写目标代码之后,第一设备可以通过代码编写容器获得用户配置的代码执行方式,如此,可以根据用户配置的代码执行方式,选择利用本地的资源还是利用远端的资源执行目标代码,以实现目标资源的灵活配置。

在一种具体的实现方式中,第一设备可以通过IDE接口向用户提供可选的代码执行方式,进而第一设备可以根据用户所选择的代码执行方式,向资源管理服务器申请目标资源或者利用本地的资源创建第二代码执行容器。

例如,提供如下3种代码执行方式:显卡x1、显卡x2、显卡x4,不同的资源配置方式可以申请到不同的资源,例如,用户选择显卡x1的代码执行方式,则第一设备可以利用本地的资源创建第二代码执行容器,若用户选择显卡x2、显卡x4的代码执行方式,可以第一设备可以利用代理容器向资源管理服务器申请目标资源,即向设备集群中的其他设备请求目标资源。

其中,在代码执行方式为远程执行的情况下,第一设备可以利用本地的资源创建代理容器,并通过代理容器向资源管理服务器申请所述目标资源,以基于所述目标资源得到所述第一代码执行容器,并通过所述第一代码执行容器执行所述目标代码。

其中,在代码执行方式为本地执行的情况下,第一设备可以利用本地的资源创建第二代码执行容器,并通过所述第二代码执行容器执行所述目标代码。

其中,利用本地的资源创建第二代码执行容器,并通过第二代码执行容器执行目标代码的过程可以参见上述实施例所述,在此不再赘述。相应地,通过代理容器向资源管理服务器申请目标资源,通过第一代码执行容器执行目标代码的过程可以参见上述步骤S203-步骤S206所述,在此不再赘述。

采用此种实施方式时,第一设备的代理容器相当于是第一设备申请远程的目标资源的一种代理服务,用于在远程的目标资源所创建的第一执行代码容器和第一设备之间进行信息中转。这样,可以为执行目标代码配置合适的资源,避免提前指定代码执行资源时,导致的执行资源不够或过多的问题,从而充分提高了资源利用率。

本实施例中,如图3所示,在第一代码执行容器执行完目标代码后,第一设备可以通过代理容器接收第一代码执行容器执行目标代码后生成的代码执行结果,并通过本地的信息输出组件输出所述代码执行结果。

如图3所示,其中,信息输出组件与第二代码执行容器和代理容器进行通信。在目标代码由远端的目标资源所创建的第一代码执行容器执行时,第一代码执行容器可以将执行目标代码的执行结果反馈给代理容器,并由代理容器将执行结果发送给信息输出组件,从而由信息输出组件输出代码执行结果。

相应地,在目标代码由第一设备本地的资源所创建的第二代码执行容器执行时,第二代码执行容器也可以将执行目标代码的执行结果反馈给信息输出组件,进而由信息输出组件输出代码执行结果。

采用此种实施方式时,可以通过代理容器将远程的代码执行结果反馈到本地,从而模拟出在本地(即第一设备)动态调配计算资源的效果。

基于相同的发明构思,本申请实施例还提出了一种资源分配系统,该资源分配系统可以应用于设备集群,该设备集群至少包括第一设备和第二设备。

基于相同的发明构思,本申请实施例还提出了一种资源分配方法,参照图4所示,示出又一种资源分配方法的步骤流程图,如图4所示,可以应用于设备集群中的第二设备,具体可以包括以下步骤:

步骤S401:接收资源管理服务器发送的资源调度指令。

其中,所述资源调度指令由所述资源管理服务器在接收到第一设备通过代理容器发送的资源分配请求时生成,所述资源分配请求是由所述第一设备上的代码编写容器在检测到目标代码编写完成后生成的。

其中,所述代理容器和所述代码编写容器均是由所述第一设备利用本地的资源创建的。

本实施例中,代理容器和代码编写容器可以由第一设备利用本地的资源创建,具体的,通过代码编写容器发送资源分配请求,以及通过代理容器接收代码编写容器发送的资源分配请求,并通过代理容器向资源管理服务器申请所述目标资源的过程可以参见上述实施例的步骤S201至步骤S203所述,在此不再赘述。

其中,在资源管理服务器根据代理容器发送的资源分配请求时,可以从设备集群中调度适合的目标资源,并向目标资源所在的第二设备发送资源调度指令,则第二设备可以接收资源管理服务器发送的资源调度指令。

步骤S402:根据所述资源调度指令,利用本地的目标资源创建第一代码执行容器。

本实施例中,第二设备可以根据资源管理服务器发送的资源调度指令,利用本地的目标资源创建第一代码执行容器,其中,目标资源可以是CPU资源或显卡资源。第二设备利用目标资源创建第一代码执行容器可以理解为是:第二设备在目标资源提供的软硬件环境中创建一个用于执行代码的第一代码执行容器,例如,将第一代码执行容器设置在第二设备的显卡资源中,这样,便是利用显卡资源供代码执行,即执行目标代码时均是在显卡资源中执行,该第一代码执行容器可以理解为是执行代码的进程环境。

步骤S403:在接收到所述第一设备通过所述代理容器发送的代码执行请求时,通过所述第一代码执行容器执行所述目标代码。

本实施例中,第二设备可以接收第一设备的代理人容器所发送的代码执行请求,进而第二设备可以通过已创建的第一代码执行容器执行所述目标代码。

其中,在一种实施例中,在通过所述第一代码执行容器执行所述目标代码时,可以从代码编写容器所挂载的存储盘中获取所述目标代码;进而,通过所述第一代码执行容器执行所述目标代码。

其中,所述存储盘供所述代码编写容器和所述第一代码执行容器共享。

在本实施例中,第二设备所接收的代码执行请求中可以包括存储盘的地址,如此,第二设备可以根据存储盘的地址,从存储盘中获取已编写好的目标代码。进而,启动第一代码容器执行目标代码。

如上述步骤S201所述,目标代码可以由用户在代码编写容器中编辑并存储到存储盘中。

在一种实施例中,在第一代码执行容器执行完目标代码后,第二设备可以将第一代码执行容器执行目标代码的代码执行结果反馈给代理容器,进而第一设备可以通过第一设备本地的信息输出组件输出代码执行结果,以便用户查看。

采用本申请实施例的技术方案,第二设备可以根据资源管理服务器的资源调度,利用本地的目标资源创建用于执行目标代码的第一代码执行容器,进而可以远程执行第一设备所编写的目标代码。而目标代码的创建由第一设备利用本地的资源创建的代码编写容器完成,且资源调度请求是由第一设备在编写完目标代码时,由第一设备上的代理容器所请求的。如此,编写代码所需的资源可以来源于第一设备的本地资源,而在执行代码时,可以由第二设备利用本地的目标资源远程执行。这样,一方面,执行代码所需的目标资源可以无需固定给用户,从而在分配给用户之前,该目标资源可以分配给其他用户使用,避免了在代码编辑阶段和代码执行阶段的资源均是固定于用户的资源时,资源被空占的问题。另一方面,由于是在执行代码时,向资源管理服务器动态申请执行代码所需的目标资源,这样,目标资源便是适配执行代码时所需的资源,避免了提前指定代码执行资源时,导致的执行资源不够或过多的问题,从而充分提高了资源利用率。

参照图5所示,示出了一种资源分配系统的框架示意图,如图5所示,该系统具体可以包括位于第一设备的代码编写容器和代理容器、位于第二设备的第一代码执行容器。

其中,第二设备用于提供执行目标代码所需的目标资源。

其中,代码编写容器可以用于:供用户编写目标代码;

其中,代理容器可以用于:用于接收所述代码编写容器发送的资源分配请求,向资源管理服务器申请执行所述目标代码所需的目标资源,并用于向所述第一代码执行容器发送代码执行请求,所述代码执行请求用于请求执行所述目标代码;

其中,第一代码执行容器可以用于:执行所述目标代码。

其中,本实施例提供的资源分配系统还可以包括为用户提供的IDE接口,在用户通过IDE接口使用第一设备进行代码编写时,可以通过代码编写容器提供的编写环境完成代码编写,进而在代码编写完成后,代理容器可以向资源管理服务器申请执行目标代码所需的目标资源,接着,目标资源所在的第二设备可以创建供运行目标代码的第一代码执行容器,该第一代码执行容器为目标代码的执行提供运行环境。

采用本实施例提供的资源分配系统可以提供本地资源供代码编写,并在执行代码阶段动态申请所需目标资源,而避免在用户开始使用第一设备时便调配固定资源所导致的资源被空占,以及资源不够或过多的问题,从而提高了设备集群的资源利用率。

参照图6所示,更详细地示出了一种资源分配系统的框架示意图,如图6所示,该系统包括位于第一设备的代码编写容器和代理容器、位于第二设备的第一代码执行容器外,还可以包括位于第一设备的第二代码执行容器和信息输出组件。

其中,代码编写容器分别与代理容器以及第二代码执行容器通信,代理容器与第一代码执行容器通信,信息输出组件同时与第二代码执行容器和代理容器通信。

此种情况下,代码编写容器用于向所述第二代码执行容器发送代码执行请求,所述代码执行请求用于请求执行所述目标代码;所述第二代码执行容器用于执行所述目标代码。

采用此种方式时,代码编写容器可以根据执行目标代码所需的资源的大小或根据用户对执行代码所需的代码执行方式,确定申请远程资源还是本地资源,实现了资源的动态调配。具体地,若申请远程资源,则代码编写容器通过代理容器申请第二设备上的目标资源,若申请本地资源,则代码编写容器向第二代码执行容器发送代码执行请求,从而第二代码执行容器执行目标代码。

如图6所示,该系统还可以包括位于第一设备的信息输出组件,此种情况下,代理容器还可以用于接收第一代码执行容器执行目标代码后生成的代码执行结果;信息输出组件用于输出所述代码执行结果。

具体地,在目标代码由第一设备本地的资源所创建的第二代码执行容器执行时,信息输出组件还可以接收并输出第二代码执行容器执行目标代码后生成的代码执行结果。

如图6所示,该系统还可以包括存储盘。

其中,存储盘可以被代码编写容器和代码执行容器共享,代码执行容器用于执行所述目标代码;在本实施例中,该代码执行容器可以为第一代码执行容器或第二代码执行容器。

其中,代码编写容器用于将所述目标代码挂载到所述存储盘中;

其中,第一设备可以通过所述代码编写容器发送的代码执行请求携带所述目标代码在所述存储盘中的存储地址,以使所述代码执行容器根据所述存储地址从所述存储盘中读取所述目标代码,进而执行所述目标代码。

存储盘可以包括数据盘和rootfs盘,存储盘可以供代码编写容器和代码执行容器共享。

参照图7所示,示出了本申请实施例的一种资源分配装置的结构示意图,应用于设备集群,所述设备集群至少包括第一设备,所述装置部署于所述第一设备,具体可以包括以下模块:

编码容器创建模块701,用于利用本地的资源创建代码编写容器,并通过所述代码编写容器编写目标代码;

代理容器创建模块702,用于利用本地的资源创建代理容器,并通过所述代理容器接收所述代码编写容器发送的资源分配请求,所述资源分配请求用于请求执行所述目标代码;

资源申请模块703,用于通过所述代理容器向资源管理服务器申请所述目标资源;

代码执行模块704,用于通过所述代理容器向所述第一代码执行容器发送代码执行请求,所述代码执行请求用于指示所述第二设备通过所述第一代码执行容器执行所述目标代码,所述第一代码执行容器由提供所述目标资源的第二设备利用所述目标资源创建。

可选地,所述装置还可以包括以下模块:

第一创建模块,用于利用本地的资源创建第二代码执行容器;

请求执行模块,用于通过所述代码编写容器向所述第二代码执行容器发送代码执行请求,所述代码执行请求用于请求执行所述目标代码;

第一执行模块,用于通过所述第二代码执行容器执行所述目标代码。

可选地,所述装置还可以包括以下模块:

结果接收模块,用于通过所述代理容器接收所述第一代码执行容器执行所述目标代码后生成的代码执行结果;

输出模块,用于通过本地的信息输出组件输出所述代码执行结果。

可选地,所述装置还可以包括以下模块:

挂载模块,用于通过所述代码编写容器将所述目标代码挂载到存储盘中,所述存储盘供所述代码编写容器和代码执行容器共享,所述代码执行容器用于执行所述目标代码;

其中,发送的代码执行请求携带所述目标代码在所述存储盘中的存储地址,以使所述代码执行容器根据所述存储地址从所述存储盘中读取所述目标代码,进而执行所述目标代码。

可选地,所述装置还可以包括以下模块:

执行方式获取模块,用于通过所述代码编写容器获得用户配置的代码执行方式;

所述代理容器创建模块702,利用本地的资源创建代理容器,具体用于:

在所述代码执行方式为远程执行的情况下,利用本地的资源创建代理容器,以通过所述代理容器向资源管理服务器申请所述目标资源,以基于所述目标资源得到述第一代码执行容器,并通过所述第一代码执行容器执行所述目标代码;

所述第一创建模块,具体用于在所述代码执行方式为本地执行的情况下,利用本地的资源创建第二代码执行容器,并通过所述第二代码执行容器执行所述目标代码。

参照图8所示,示出了本申请实施例的一种资源分配装置的结构示意图,应用于设备集群,所述设备集群至少包括第二设备,所述装置部署于所述第二设备,具体可以包括以下模块:

资源调度接收模块801,用于接收资源管理服务器发送的资源调度指令,所述资源调度指令由所述资源管理服务器在接收到第一设备通过代理容器发送的资源分配请求时生成,所述资源分配请求是由所述第一设备上的代码编写容器在检测到目标代码编写完成后生成的;其中,所述代理容器和所述代码编写容器均是由所述第一设备利用本地的资源创建的;

容器创建模块802,用于根据所述资源调度指令,利用本地的目标资源创建第一代码执行容器;

代码执行模块803,用于在接收到所述第一设备通过所述代理容器发送的代码执行请求时,通过所述第一代码执行容器执行所述目标代码。

可选地,所述代码执行模块803,具体可以包括以下单元:

代码获取单元,用于从所述代码编写容器所挂载的存储盘中获取所述目标代码;其中,所述存储盘供所述代码编写容器和所述第一代码执行容器共享;

代码执行单元,用于通过所述第一代码执行容器执行所述目标代码。

可选地,所述装置还可以包括以下模块:

结果获取模块,用于获取所述第一代码执行容器执行所述目标代码后生成的代码执行结果;

结果发送模块,用于将所述代码执行结果发送给所述代理容器,以使所述第一设备通过所述第一设备本地的信息输出组件输出所述代码执行结果。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

本发明实施例还提供了一种电子设备,该电子设备可以用于执行资源分配方法,可以包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器被配置为执行所述的资源分配方法。

本发明实施例还提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明实施例所述的资源分配方法。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种资源分配方法、装置、设备和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 基于动态资源视图的资源分配方法、装置、设备和介质
  • 资源分配方法、资源分配装置、电子设备及存储介质
技术分类

06120112774606