CN119668885B - 一种开发文件的运行方法、装置、设备及存储介质 - Google Patents
一种开发文件的运行方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN119668885B CN119668885B CN202510185238.4A CN202510185238A CN119668885B CN 119668885 B CN119668885 B CN 119668885B CN 202510185238 A CN202510185238 A CN 202510185238A CN 119668885 B CN119668885 B CN 119668885B
- Authority
- CN
- China
- Prior art keywords
- resource
- file
- kernel
- identifier
- environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种开发文件的运行方法、装置、设备及存储介质,用于解决文件运行效率较低的问题。该方法至少包括:接收来自客户端的资源关联请求;其中,资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;预配置资源包括:从资源集群中预先分配的可调度资源,以及在可调度资源中预先配置的运行环境池;基于资源标识,调度可调度资源创建内核进程,并将运行环境池中的一个运行环境分配给内核进程;基于文件标识,建立与内核进程之间的通信连接;在接收到针对目标文件的文件运行指令时,基于通信连接调用内核进程运行目标文件,获得并返回文件运行结果。通过资源预设降低了内核进程的启动耗时,从而可以提高文件运行效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种开发文件的运行方法、装置、设备及存储介质。
背景技术
随着科技的不断发展,越来越多的客户端可以指示服务端运行开发文件,以获得文件运行结果。例如,在Jupyter Notebook浏览器中可以创建和编辑包含代码、文本、公式、图表等多种内容的开发文件,这些文件以ipynb(IPython Notebook)格式保存。从而,Jupyter Notebook浏览器可以指示Jupyter Notebook服务器运行这些开发文件,以实现数据探索、数据分析、机器学习实验等。
相关技术中,以Jupyter Notebook服务器为例,开发文件的运行方法通常是:
在接收到针对一个ipynb文件的文件打开指令时,Jupyter Notebook服务器基于ipynb文件,生成用于运行ipynb文件的内核进程的运行环境规格和运行资源需求量;Jupyter Notebook服务器基于运行环境规格和运行资源需求量向YARN集群发送资源请求,YARN集群接收到资源请求后,按照运行资源需求量调度资源创建内核进程,以及按照运行环境规格为内核进程配置运行环境;Jupyter Notebook服务器为ipynb文件建立与内核进程之间的通信连接。
在接收到针对这个ipynb文件的文件运行指令时,Jupyter Notebook服务器基于这个ipynb文件对应的通信连接,调用内核进程运行ipynb文件,获得文件运行结果。
然而,相关技术下,每次打开一个开发文件之后,都需要先经过一系列的资源准备过程,才可以启动或重启一个内核进程,进而才可以在服务端与内核进程之间的通信连接建立完成后运行这个开发文件,那么由于内核进程的启动或重启过程耗时较长,使得开发文件的文件运行效率较低,无法满足当下高效的开发需求。
发明内容
本申请实施例提供了一种开发文件的运行方法、装置、设备及存储介质,用于解决开发文件的文件运行效率较低的问题。
第一方面,提供一种开发文件的运行方法,应用于服务端,包括:
接收来自客户端的资源关联请求;其中,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:从资源集群中预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
基于所述资源标识,调度所述可调度资源创建内核进程,并将所述运行环境池中的一个运行环境分配给所述内核进程;
基于所述文件标识,建立与所述内核进程之间的通信连接;
在接收到针对所述目标文件的文件运行指令时,基于所述通信连接调用所述内核进程运行所述目标文件,获得并返回文件运行结果。
第二方面,提供一种开发文件的运行方法,应用于资源集群,包括:
接收来自服务端的资源调度请求;其中,所述资源调度请求是所述服务端基于接收的来自客户端的资源关联请求生成的,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
基于所述资源调度请求携带的资源标识所指示的可调度资源创建内核进程,并将所述资源标识所指示的运行环境池中的一个运行环境分配给所述内核进程;
在所述内核进程接收到携带所述目标文件的文件内容的进程调用请求时,基于所述文件内容运行所述目标文件,获得并返回文件运行结果;其中,所述进程调用请求是所述服务端基于所述文件标识建立与所述内核进程之间的通信连接之后,且在接收到针对所述目标文件的文件运行指令时生成的,并基于所述通信连接向所述内核进程发送的。
第三方面,提供一种开发文件的运行装置,应用于服务端,包括:
收发模块:用于接收来自客户端的资源关联请求;其中,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:从资源集群中预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
处理模块:用于基于所述资源标识,调度所述可调度资源创建内核进程,并将所述运行环境池中的一个运行环境分配给所述内核进程;
所述处理模块还用于:基于所述文件标识,建立与所述内核进程之间的通信连接;
所述收发模块还用于:在接收到针对所述目标文件的文件运行指令时,基于所述通信连接调用所述内核进程运行所述目标文件,获得并返回文件运行结果。
可选的,所述收发模块还用于:
在所述接收来自客户端的资源关联请求之前,接收来自客户端的资源创建指令;其中,所述资源创建指令携带有:资源集群的集群标识、可调度标识和至少一种运行环境规格;
基于所述集群标识、所述可调度标识和所述至少一种运行环境规格,向所述资源集群发送资源配置指令,以使所述资源集群基于所述资源配置指令携带的所述可调度标识分配可调度资源,并基于所述资源配置指令携带的所述至少一种运行环境规格,在所述可调度资源中配置运行环境池,以及返回资源配置结果;
所述处理模块还用于:基于接收的资源配置结果,确定所述预配置资源的资源标识。
可选的,所述资源集群中部署有数据处理框架,则所述处理模块具体用于:
获取由第一开发语言编写的数据处理策略;其中,所述数据处理策略指示:启动一个内核服务,所述内核服务用于创建和调用内核进程;
基于所述数据处理框架为所述第一开发语言提供的任务提交格式,融合所述数据处理策略、所述可调度标识和至少一种运行环境规格,获得数据处理任务;
基于所述集群标识,将所述数据处理任务提交到所述资源集群,以使所述数据处理框架调度在所述资源集群中按照所述可调度标识分配的可调度资源,启动一个内核服务,并按照所述至少一种运行环境规格在所述可调度资源中为所述内核服务配置运行环境池。
可选的,所述收发模块具体用于:接收资源配置结果;其中,所述资源配置结果包括所述内核服务的网络地址;
所述处理模块具体用于:对所述网络地址进行编码,获得所述预配置资源的资源标识。
可选的,所述内核服务关联有依赖安装位置,所述依赖安装位置上安装有多种依赖环境;
则为所述内核服务配置的运行环境池中的每个运行环境是基于从所述多种依赖环境中继承的至少一种依赖环境配置的。
可选的,所述收发模块还用于:
接收针对所述运行环境池的依赖新增指令;其中,所述依赖新增指令携带有一种依赖环境的安装包标识;
基于所述内核服务的网络地址,向所述内核服务发送携带有所述安装包标识的依赖安装请求,以使所述内核服务基于所述安装包标识从依赖环境源中下载所述一种依赖环境的环境安装包,并基于所述环境安装包将所述一种依赖环境安装在所述内核服务关联的依赖安装位置。
可选的,所述处理模块具体用于:
基于所述资源标识,调度所述可调度资源执行以下操作:
采用主进程启动一个内核服务;其中,所述内核服务用于创建和调用内核进程;
调用所述内核服务,采用子进程执行:创建内核进程,并基于所述运行环境池包含的各运行环境各自的环境状态,从所述运行环境池中选取环境状态为空闲状态的一个运行环境分配给所述内核进程。
可选的,所述资源集群中部署有数据处理框架,所述内核进程是由所述数据处理框架在所述资源集群中启动的内核服务创建的;
则所述处理模块具体用于:
建立所述文件标识和所述资源标识之间的关联关系;
在接收到所述内核服务上报的所述内核服务的网络地址时,建立所述资源标识与所述网络地址之间的映射关系;
基于所述关联关系、所述映射关系和所述内核服务为所述内核进程分配的进程标识,建立与所述内核进程之间的通信连接。
可选的,所述收发模块还用于:
接收来自所述客户端的协作关联请求;其中,所述协作关联请求携带有:针对所述目标文件的运行过程进行运行调试的协作文件的协作标识,以及所述资源标识;
所述处理模块还用于:
基于所述资源标识,调度所述可调度资源创建协作进程,并将所述运行环境池中除了所述一个运行环境以外的其他运行环境分配给所述协作进程;
基于所述协作标识,建立与所述协作进程之间的协作连接;
在接收到针对所述协同文件的协作运行指令时,基于所述协作连接调用所述协作进程运行所述协同文件,获得并返回协作运行结果。
第四方面,提供一种开发文件的运行装置,应用于资源集群,包括:
收发模块:用于接收来自服务端的资源调度请求;其中,所述资源调度请求是所述服务端基于接收的来自客户端的资源关联请求生成的,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
处理模块:用于基于所述资源调度请求携带的资源标识所指示的可调度资源创建内核进程,并将所述资源标识所指示的运行环境池中的一个运行环境分配给所述内核进程;
所述处理模块还用于:在所述内核进程接收到携带所述目标文件的文件内容的进程调用请求时,基于所述文件内容运行所述目标文件,获得并返回文件运行结果;其中,所述进程调用请求是所述服务端基于所述文件标识建立与所述内核进程之间的通信连接之后,且在接收到针对所述目标文件的文件运行指令时生成的,并基于所述通信连接向所述内核进程发送的。
可选的,所述收发模块还用于:
在所述接收来自服务端的资源调度请求之前,接收来自所述服务端的资源配置指令;其中,所述资源配置指令是所述服务端基于接收的来自客户端的资源创建指令携带的资源集群的集群标识、可调度标识和至少一种运行环境规格生成的;
所述处理模块还用于:
基于所述资源配置指令携带的所述可调度标识分配可调度资源;
基于所述资源配置指令携带的所述至少一种运行环境规格,在所述可调度资源中配置运行环境池。
可选的,所述资源集群中部署有数据处理框架,所述内核进程是由所述数据处理框架在所述资源集群中启动的内核服务创建的;所述内核服务关联有依赖安装位置,所述依赖安装位置上安装有多种依赖环境;
则所述处理模块具体用于:
针对所述至少一种运行环境规格,分别执行以下操作:
基于一种运行环境规格,从所述多种依赖环境中继承的至少一种依赖环境,建立基础环境;
按照预设数量,在所述可调度资源中为所述内核服务配置多个所述基础环境;
将配置的多个基础环境作为多个运行环境加入运行环境池。
可选的,所述处理模块还用于:
采用所述内核服务接收针对所述运行环境池的依赖安装请求;其中,所述依赖安装请求是所述服务端基于接收的针对所述运行环境池的依赖新增指令生成的,所述依赖新增指令携带有一种依赖环境的安装包标识;
采用所述内核服务基于所述依赖安装请求携带的安装包标识,从预设的依赖环境源中下载所述一种依赖环境的环境安装包;
基于下载的所述环境安装包,将所述一种依赖环境安装在所述内核服务关联的依赖安装位置。
可选的,所述资源集群中部署有数据处理框架,所述内核进程是采用所述数据处理框架在所述资源集群创建的;
则所述处理模块还用于:
建立采用第三开发语言调用由所述数据处理框架使用的第二编程语言编写的功能函数的调用通道;其中,所述第三开发语言与所述第二编程语言不同;
则所述处理模块具体用于:
采用所述内核进程,基于所述调用通道指示所述数据处理框架按照所述文件内容运行所述目标文件,获得文件运行结果。
第五方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面或第二方面所述的方法。
第六方面,提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如第一方面或第二方面所述的方法,包括:
接收来自客户端的资源关联请求;其中,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:从资源集群中预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
基于所述资源标识,调度所述可调度资源创建内核进程,并将所述运行环境池中的一个运行环境分配给所述内核进程;
基于所述文件标识,建立与所述内核进程之间的通信连接;
在接收到针对所述目标文件的文件运行指令时,基于所述通信连接调用所述内核进程运行所述目标文件,获得并返回文件运行结果。
第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面或第二方面所述的方法。
本申请实施例中,在资源集群中预先配置有预配置资源,实现了资源预热,在接收到携带有目标文件的文件标识和预配置资源的资源标识的资源关联请求时,可以直接基于该预配置资源启动或重启内核进程,不需要在选定了目标文件之后,再经历一系列的资源准备工作,大大降低了启动或重启内核进程的耗时,那么在接收到针对目标文件的文件运行指令时,可以高效地基于与内核进程之间的通信连接调用内核进程运行目标文件,获得并返回文件运行结果,有效地提高了文件运行效率。
进一步的,预配置资源中包含有在可调度资源中预先配置的运行环境池,在创建了内核进程之后,可以为内核进程分配一个运行环境,使得内核进程可以在独立的运行环境中运行目标文件,避免出现运行干扰而造成运行结果出错的情况,提高文件运行准确性。
进一步的,预配置资源作为常驻资源,在预配置资源中的运行环境池包含多个运行环境的情况下,可以基于预配置资源,为多个文件各自启动或重启一个内核进程,即可以在可调度资源中同时启动或重启能够独立运行的多个内核进程,在保证文件运行准确性的前提下,大大降低了隔离多个内核进程时产生的不必要的资源占用,提高了文件运行效率。
附图说明
图1A为本申请实施例提供的开发文件的运行方法的一种应用场景示意图;
图1B为相关技术中的开发文件的运行方法的一种原理示意图;
图1C为本申请实施例提供的开发文件的运行方法的一种应用领域示意图;
图2为本申请实施例提供的开发文件的运行方法的一种流程示意图一;
图3A为本申请实施例提供的开发文件的运行方法的一种原理示意图一;
图3B为本申请实施例提供的开发文件的运行方法的一种原理示意图二;
图4A为本申请实施例提供的开发文件的运行方法的一种流程示意图二;
图4B为本申请实施例提供的开发文件的运行方法的一种原理示意图三;
图4C为本申请实施例提供的开发文件的运行方法的一种原理示意图四;
图5A为本申请实施例提供的开发文件的运行方法的一种原理示意图五;
图5B为本申请实施例提供的开发文件的运行方法的一种流程示意图二;
图5C为本申请实施例提供的开发文件的运行方法的一种原理示意图六;
图6为本申请实施例提供的开发文件的运行方法的一种流程示意图三;
图7A为本申请实施例提供的开发文件的运行方法的一种交互示意图;
图7B为本申请实施例提供的开发文件的运行方法的一种原理示意图七;
图8A为本申请实施例提供的开发文件的运行装置的一种结构示意图一;
图8B为本申请实施例提供的开发文件的运行装置的一种结构示意图二;
图9为本申请实施例提供的开发文件的运行装置的一种结构示意图三。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
下面对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)Jupyter Notebook:
Jupyter Notebook是一个Web应用程序,可以创建和共享包含实时代码、方程式、可视化和叙述性文本的文档。Jupyter Notebook本质是一个交互式计算环境,主要用于执行数据清理、数据分析、机器学习等众多数据科学领域的任务。
(2)企业网关Enterprise Gateway:
Enterprise Gateway是一个在企业级环境中使用的网关组件,可以用于连接对象、数据分析工具和后端计算资源等,Enterprise Gateway能够协调对象、数据分析工具和后端计算资源等工具与企业级环境中的计算资源,使得数据处理任务能够高效地执行。
(3)内核进程:
内核进程是一个运行在后台的进程,用于执行前端输入的代码,以IPythonKernel为例,是Python代码的 “执行引擎”,在Jupyter Notebook浏览器的一个代码单元格中输入一条Python语句(如print("Hello,World!"))时,IPython Kernel就可以执行这条Python语句,并将执行结果返回给Jupyter Notebook浏览器显示。
(4)Pyenv:
Pyenv是一个用于管理 Python版本的工具,可以在一个系统中安装、切换和使用多个不同版本的Python,实现各种Python版本之间的切换。
(5)Spark框架和Spark Context:
Spark框架是一个快速、通用、可扩展的分布式数据处理框架,主要用于大规模数据处理和分析。Spark框架提供了高效、灵活的计算模型,能够处理各种类型的数据,包括结构化数据(如数据库中的表格数据)、半结构化数据(如XML文件、JSON文件)和非结构化数据(如文本、图像、视频)。
Spark Context是Spark框架中的一个核心组件,负责协调和管理所有与Spark框架相关的资源和操作。
(6)Java Gateway和JVM Gateway:
Java Gateway是指在Java语言相关开发环境中,作为一种连接不同Java组件、系统或者在Java程序与外部系统之间进行交互的通道,主要侧重于Java语言技术范畴内的连接和通信功能。
JVM Gateway是与Java虚拟机(JVM)相关的连接功能。JVM Gateway是一个桥梁,用于在JVM环境和其他外部环境(可能是其他语言编写的程序、不同的计算框架或者外部服务等)之间进行交互。
(7)Monkey Patch:
Monkey Patch是一种在运行时动态修改类或模块的技术,允许在不修改原始代码的基础上,对已有的类、函数或对象的行为进行修改或扩展。
应当说明的是,本申请实施例中,涉及到收发请求、调度资源等数据操作,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
下面对本申请实施例提供的开发文件的运行方法的应用领域进行简单介绍。
随着科技的不断发展,越来越多的客户端可以指示服务端运行开发文件,以获得文件运行结果。例如,在Jupyter Notebook浏览器中可以创建和编辑包含代码、文本、公式、图表等多种内容的开发文件,这些文件以ipynb(IPython Notebook)格式保存。从而,Jupyter Notebook浏览器可以指示Jupyter Notebook服务器运行这些开发文件,以实现数据探索、数据分析、机器学习实验等。
请参考图1A,在Jupyter Notebook浏览器中呈现有名为“XXXXXX/xxxxxxxx/xxxxx.ipynb”的开发文件,在该开发文件的“In[1]”单元格中,可以输入代码“pringt(‘Hello world!’)”。Jupyter Notebook浏览器可以指示Jupyter Notebook服务器运行该开发文件,获得文件运行结果“Hello world!”,并呈现该文件运行结果。
相关技术中,以Jupyter Notebook服务器为例,请参考图1B,开发文件的运行方法通常是:
在接收到针对一个ipynb文件的文件打开指令时,Jupyter Notebook服务器基于ipynb文件,生成用于运行ipynb文件的内核进程的运行环境规格和运行资源需求量;Jupyter Notebook服务器基于运行环境规格和运行资源需求量向YARN集群发送资源请求,YARN集群接收到资源请求后,按照运行资源需求量调度资源创建内核进程,以及按照运行环境规格为内核进程配置运行环境;YARN集群在Jupyter Notebook服务器中注册该内核进程,以为ipynb文件建立与内核进程之间的通信连接。
在接收到针对这个ipynb文件的文件运行指令时,Jupyter Notebook服务器基于这个ipynb文件对应的通信连接,调用内核进程运行ipynb文件,获得文件运行结果。
然而,相关技术下,每次打开一个开发文件之后,都需要先经过一系列的资源准备过程,才可以启动或重启一个内核进程,进而才可以在服务端与内核进程之间的通信连接建立完成后运行这个开发文件,那么由于内核进程的启动或重启过程耗时较长,使得开发文件的文件运行效率较低,无法满足当下高效的开发需求。
为了解决开发文件的文件运行效率较低的问题,本申请提出一种开发文件的运行方法。该方法应用于服务端,该方法中,接收来自客户端的资源关联请求。所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:从资源集群中预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池。基于所述资源标识,调度所述可调度资源创建内核进程,并将所述运行环境池中的一个运行环境分配给所述内核进程。基于所述文件标识,建立与所述内核进程之间的通信连接。在接收到针对所述目标文件的文件运行指令时,基于所述通信连接调用所述内核进程运行所述目标文件,获得并返回文件运行结果。
本申请实施例中,在资源集群中预先配置有预配置资源,实现了资源预热,在接收到携带有目标文件的文件标识和预配置资源的资源标识的资源关联请求时,可以直接基于该预配置资源启动或重启内核进程,不需要在选定了目标文件之后,再经历一系列的资源准备工作,大大降低了启动或重启内核进程的耗时,那么在接收到针对目标文件的文件运行指令时,可以高效地基于与内核进程之间的通信连接调用内核进程运行目标文件,获得并返回文件运行结果,有效地提高了文件运行效率。
进一步的,预配置资源中包含有在可调度资源中预先配置的运行环境池,在创建了内核进程之后,可以为内核进程分配一个运行环境,使得内核进程可以在独立的运行环境中运行目标文件,避免出现运行干扰而造成运行结果出错的情况,提高文件运行准确性。
进一步的,预配置资源作为常驻资源,在预配置资源中的运行环境池包含多个运行环境的情况下,可以基于预配置资源,为多个文件各自启动或重启一个内核进程,即可以在可调度资源中同时启动或重启能够独立运行的多个内核进程,在保证文件运行准确性的前提下,大大降低了隔离多个内核进程时产生的不必要的资源占用,提高了文件运行效率。
下面对本申请提供的开发文件的运行方法的应用场景进行说明。
请参考图1C,为本申请提供的开发文件的运行方法的一种应用场景示意图。该应用场景中包括客户端101、服务端102和资源集群103;客户端101和服务端102之间可以通信,服务端102和资源集群103之间可以通信;通信方式可以是采用有线通信技术进行通信,例如,通过连接网线或串口线进行通信;也可以是采用无线通信技术进行通信,例如,通过蓝牙或无线保真(wireless fidelity,WIFI)等技术进行通信,具体不做限制。
客户端101泛指可以编写文件、发送请求或接收文件运行结果等的设备,例如包括,终端设备、终端设备可以访问的第三方应用程序或终端设备可以访问的网页等。服务端102泛指可以接收请求、调度资源运行文件等的设备,例如包括,终端设备或服务器等。资源集群103泛指包含多种资源等的设备集群,例如包括,终端设备或服务器等。
终端设备包括但不限于手机、电脑、智能医疗设备、智能家电、车载终端或飞行器等。服务器包括但不限于云服务器、本地服务器或关联的第三方服务器等。客户端101、服务端102和资源集群103均可以采用云计算,以减少本地计算资源的占用;同样也可以采用云存储,以减少本地存储资源的占用。
客户端101响应于针对目标文件和预配置资源触发的关联操作,向服务端102发送资源关联请求,资源关联请求用于关联目标文件和预配置资源。
服务端102接收客户端101发送的资源关联请求,服务端102基于资源集群103中的预配置资源为目标文件启动内核进程。客户端101响应于针对目标文件触发的运行操作,向服务端102发送文件运行指令。服务端102接收文件运行指令,服务端102调用资源集群103中为目标文件启动的内核进程,运行目标文件,获得文件运行结果。
服务端102向客户端101发送文件运行结果,客户端101接收文件运行结果,并呈现文件运行结果。
下面基于图1C,站在服务端的角度,对本申请实施例提供的开发文件的运行方法进行具体介绍。请参考图2,为本申请实施例提供的开发文件的运行方法的一种流程示意图。
S201,接收来自客户端的资源关联请求。
客户端可以用于创建开发文件或打开已创建的开发文件,还可以用于在开发文件中采用选定的开发语言编写文件内容等。开发文件为采用开发语言编写的、且通过运行能够执行一种功能的文件。
客户端中还可以呈现有至少一个预配置资源各自的资源标识。预配置资源包括:从资源集群中预先分配的可调度资源,以及在可调度资源中预先配置的运行环境池。可调度资源可以是分布式的资源集群中部署在一个地理范围内的资源;也可以是资源集群中一定量的资源;也可以是资源集群中划分在同一资源组的资源等,具体不做限制。
资源集群可以提供多种资源,包括计算资源、存储资源、控制节点、执行节点等。资源集群可以是yarn集群、mesos集群、kubernetes集群、slurm集群等,具体不做限制,本申请实施例中,以yarn集群为例进行介绍。
运行环境池包含至少一个运行环境,运行环境可以包括已安装的至少一种语言版本的开发语言,如Pyenv;还可以包括运行文件所需的依赖环境,依赖环境例如是前端样式、功能函数、已开发的功能模块等,具体不做限制。
资源标识用于唯一表征一个预配置资源,资源标识可以包括预配置资源的编号、名称、资源集群的资源类型、可调度资源的名称、运行环境池中的各运行环境各自的名称等信息中的至少一种。
资源关联请求可以携带有目标文件的文件标识和预配置资源的资源标识。目标文件的文件标识可以唯一表征目标文件,文件标识可以包括目标文件的名称、编号、在客户端或服务端中的存储位置等信息中的至少一个种。资源关联请求可以用于指示将目标文件与预配置资源关联,从而可以基于预配置资源启动一个内核进程来运行目标文件。
请参考图3A,客户端呈现有多个文件各自的文件标识,包括文件标识_1、文件标识_2、……和文件标识_N。客户端还呈现有多个预配置资源的资源标识,包括资源标识_1、资源标识_2、……和资源标识_M。响应于针对文件标识_1和资源标识_M触发的关联操作,生成资源关联请求。客户端向服务端发送资源关联请求。
请参考图3B,客户端呈现有多个文件各自的文件标识,包括文件标识_1、文件标识_2、文件标识_3、文件标识_4、文件标识_5、文件标识_6、文件标识_7和文件标识_8。响应于针对文件标识_1触发的文件打开操作,生成文件开启指令。客户端向服务端发送文件开启指令,服务端基于文件开启指令携带的文件类型,获取文件类型对应的模板内容。服务端将模板内容返回给客户端,客户端接收并呈现模板内容。
客户端响应于针对目标文件的资源关联按键触发的选中操作,呈现包含多个预配置资源的资源标识的弹窗。多个预配置资源的资源标识包括资源标识_1、资源标识_2和资源标识_3。响应于针对资源标识_3触发的确认选中操作生成资源关联请求,客户端向服务端发送资源关联请求。
作为一种实施例,预配置资源可以是按照客户端的指示预先配置好的,从而可以针对个性化场景配置相应的预配置资源;也可以是按照预设配置策略预先自动化配置的,从而可以通过统一的标准实现高效地配置过程等,具体不做限制。通过预配置资源实现资源预热,使得启动或重启一个内核进程的过程中,可以直接使用预配置资源,而不再需要进行一系列的资源准备,能够有效地提高采用内核进行运行文件时的文件运行效率。
下面对按照客户端的指示创建预配置资源的过程进行具体介绍,请参考图4A。
S401,接收来自客户端的资源创建指令。
资源创建指令携带有资源集群的集群标识、可调度标识和至少一种运行环境规格。集群标识用于唯一表征资源集群,集群标识可以是资源集群的名称、编号等,如yarn用于表征yarn集群。可调度标识用于指示资源集群中可以划分至一个预配置资源中的资源,如控制节点、执行节点、cpu性能和存储空间等资源,可调度标识可以是可调度资源的名称、编号、资源量等,具体不做限制。运行环境规格可以包括开发语言的版本、数据处理框架的框架名称、依赖环境的名称等中的至少一种,运行环境规格指示了运行具备一种处理能力的内核进程所需要的依赖环境。
请参考图4B,客户端呈现有预配置资源列表页面,其中呈现有用于创建预配置资源的新建资源按键,还呈现有已创建的多个预配置资源,并分别呈现有各预配置资源的是否运行的状态、创建时间和可执行的操作等。在创建预配置资源时,在预配置资源列表页面之上可以覆盖显示预配置资源的创建页面,在创建页面中可以输入预配置资源的资源名称(如pyspark)、资源描述(对预配置资源的简介)等,还可以自选区预配置资源所属资源集群的资源类型(如yarn)、运行环境规格(如spark3.3+python3.6)、可调度标识(如XXXX子集群)、可调度资源量包含的控制节点(如Driver)和执行节点(如Executor)各自对应的节点数量和资源量(如核数量和存储资源量)等。
S402,基于集群标识、可调度标识和至少一种运行环境规格,向资源集群发送资源配置指令。
接收到资源创建指令之后,可以基于资源创建指令携带的资源标识,确定资源集群,并基于可调度标识和至少一种运行环境规格生成资源配置指令。服务端向资源集群发送资源配置指令,资源集群接收服务端发送的资源配置指令。资源集群基于资源配置指令携带的可调度标识分配可调度资源,并基于资源配置指令携带的至少一种运行环境规格,在可调度资源中配置运行环境池,以及返回资源配置结果。资源配置结果可以指示是否配置成功,也可以指示预配置资源的调度地址,通过调度地址可以连接到预配置资源,从而可以调度预配置资源中的可调度资源,以及可以使用运行环境启动或重启内核进程等。
作为一种实施例,向资源集群发送资源配置指令的方法可以有多种,例如,基于网络协议融合可调度标识和至少一种运行环境规格,将生成的报文作为资源配置指令,基于资源集群中的收发节点的互联网协议(Internet Protocol,IP)地址或端口(Port)地址,向该收发节点发送资源配置指令。
又例如,在资源集群中部署有数据处理框架时,也可以基于数据处理框架提供的任务提交功能,来发送资源配置指令,下面进行具体介绍。
数据处理框架用于提供高性能的数据处理能力,例如Spark框架、Hadoop框架、Flink框架、Storm框架等,具体不做限制,本申请实施例中,以Spark框架为例进行介绍。
获取由第一开发语言编写的数据处理策略,数据处理策略指示启动一个内核服务,内核服务用于创建和调用内核进程。第一开发语言与数据处理框架使用的第二开发语言可以相同,也可以不同。
内核服务可以是具备基于一个预配置资源进行数据处理的能力的计算引擎。该内核服务可以基于一个预配置资源创建和调用一个内核进程,也可以基于一个预配置资源创建和调用多个内核进程,从而内核服务可以灵活控制预配置资源的使用情况,实现多个内核进程共享预配置资源,提高资源利用率。
基于数据处理框架为第一开发语言提供的任务提交格式,融合数据处理策略、可调度标识和至少一种运行环境规格,获得数据处理任务。融合方式有多种,例如按照指定格式编排、在预设模板中填写,或以键值对的形式设置在一个变量中等。以数据处理框架能够识别的形式为任务形式,那么可以将数据处理策略、可调度标识和至少一种运行环境规格转换为数据处理框架能够识别的任务形式,从而,可以借助数据处理框架具备的高性能的数据处理能力,启动一个内核服务来创建和调用内核进程,无论数据处理策略采用什么开发语言编写,都可以借助数据处理框架在资源集群中执行其中的数据处理逻辑。
基于集群标识,将数据处理任务提交到资源集群,以使资源集群采用数据处理框架调度按照可调度标识分配的可调度资源,启动一个内核服务,并按照至少一种运行环境规格在可调度资源中为内核服务配置运行环境池。
请参考图4C,以服务端为Jupyter Notebook服务器,资源集群为yarn集群,数据处理框架为Spark框架为例,Jupyter Notebook服务器获取预存的java程序,即数据处理策略,以及接收客户端发送的资源创建指令;Jupyter Notebook服务器基于Spark框架提供的Spark submit任务提交格式,对这个java程序、资源创建指令携带的可调度标识和至少一种运行环境规格进行封装和处理等,获得Spark任务。
将Spark任务提交到资源创建指令携带的集群标识指示的yarn集群,在yarn集群中,以Java entrypoint功能组件作为Java程序的入口点,按照这个java程序创建SparkContext作为Spark Application的入口和核心控制节点,负责与集群建立连接、资源分配和管理、任务调度等底层功能,SparkContext会构建DAGScheduler和TaskScheduler等Spark框架中的功能组件,用于后续的任务调度和执行。
在SparkContext创建完成后,可以基于可调度标识在Spark Application中拉起内核服务,内核服务启动后可以将自身ip:port作为网络地址上报给Jupyter Notebook服务器,以建立Jupyter Notebook服务器与内核服务之间的通信通道。内核服务启动后还可以基于至少一种运行环境规格为内核服务配置运行环境池,完成预配置资源的创建。
S403,基于接收的资源配置结果,确定预配置资源的资源标识。
在资源配置结果指示配置成功时,生成预配置资源的资源标识;资源配置结果指示配置失败时,生成预配置资源的重配置提示,以指示重新配置该预配置资源。
在资源集群中部署有数据处理框架时,内核进程可以是由数据处理框架基于数据处理策略启动的内核服务创建的,那么在配置成功时接收的资源配置结果还可以包括内核服务的网络地址(包括IP地址或端口地址等),该网络地址连接到预配置资源,因此可以作为前文介绍的调度地址。在确定预配置资源的资源标识时,可以对该网络地址进行编码,将编码后的网络地址作为预配置资源的资源标识,在唯一表征预配置资源的同时,还可以以编码后的网络地址的形式记录资源标识与网络地址之间的映射关系,在连接预配置资源时,可以通过对资源标识进行解码获得预配置资源的网络地址,减少存储资源不必要的占用情况,有助于提高存储资源利用率。在确定预配置资源的资源标识时,也可以以预配置资源的创建序号作为资源标识,以简化资源标识的确定过程,那么为了连接预配置资源,可以存储资源标识与网络地址之间的映射关系。
请参考图5A,以服务端为Jupyter Notebook服务器,资源集群为yarn集群,数据处理框架为Spark框架,服务端为Jupyter Notebook服务器与yarn集群通过企业级网关(如Enterprise Gateway)进行通信为例,Jupyter Notebook服务器通过内核服务上报的网络地址,可以向内核服务发送进程启动指令,以启动内核进程A;还可以向内核服务发送进程重启指令,以重启内核进程B;还可以向内核服务发送进程中断指令,以暂停内核进程C中的运行过程;还可以向内核服务发送进程结束指令,以关闭内核进程D。
作为一种实施例,在资源集群中部署有数据处理框架时,内核服务可以关联有依赖安装位置,依赖安装位置用于安装多种依赖环境,内核服务可以对依赖安装位置上安装的各种依赖环境进行更新、删除,也可以在依赖安装位置上安装新的依赖环境,从而可以实现对运行环境池的统一管理。
依赖安装位置上安装的各种依赖环境可以构成内核服务启动的内核进程的基础的、通用的运行环境,为内核服务配置的运行环境池中的每个运行环境是基于从多种依赖环境中继承的至少一种依赖环境配置的,因此运行环境池中的各运行环境共享依赖安装位置上安装的部分软件包和库。依赖安装位置上安装的各种依赖环境不会在内核进程关闭时删除或卸载等,内核进程重启时可以继续继承其中的依赖环境。
例如,依赖安装位置可以安装有一些常用的数据分析库,如NumPy、Pandas、Matplotlib等,这些数据分析库是在很多数据处理和分析过程中都会用到的,因此,为内核服务配置的运行环境池中的运行环境可以继承这些基础的依赖环境,而不需要重新安装。
因此,一个内核服务创建的多个内核进程可以以统一的多种依赖环境为基础,避免由于安装的依赖环境的版本不同或种类不同等,而造成多个内核进程无法协作运行文件的情况,提高文件运行稳定性。
在运行环境分配给内核进程之后,也可以在该运行环境中单独安装其他依赖环境,实现个性化的运行环境,例如采用内核进程接收客户端发送的依赖安装包,内核进程基于接收的依赖安装包,在其运行环境中安装相应的其他依赖环境。在内核进程的运行环境中单独安装其他依赖环境会在内核进程关闭后删除或卸载,在内核进程重启时需要重新安装,使得一些不常用的依赖环境不会一直占用依赖安装位置上的资源,能够提高资源利用率。
请参考图5B,继续以资源集群为yarn集群,数据处理框架为Spark框架为例,可以从依赖安装位置(如记为compute Pyenv)继承依赖环境,在后台为内核服务维护运行环境池(如运行环境为Pyenv),那么内核服务可以在运行环境池中保留指定数量的处于空闲状态的运行环境,如5个Pyenv,分别为Pyenv_1、Pyenv_2、Pyenv_3、Pyenv_4和Pyenv_5在运行环境池中的空闲状态的运行环境的数量未达到指定数量时,可以基于至少一种运行环境规格,在可调度资源中创建新的运行环境,当存在一个内核进程被销毁时,将该内核进程使用的运行环境归还到运行环境池中。
作为一种实施例,在对依赖安装位置上安装的各种依赖环境进行更新时,以对依赖安装位置进行依赖新增为例,接收针对运行环境池的依赖新增指令,依赖新增指令可以来自客户端、后台或其他组件等,具体不做限制。依赖新增指令携带有一种依赖环境的安装包标识。基于内核服务的网络地址,向内核服务发送携带有安装包标识的依赖安装请求,以使内核服务基于安装包标识从依赖环境源中下载这种依赖环境的环境安装包,并基于环境安装包将一种依赖环境安装在内核服务关联的依赖安装位置。
请参考图5C,内核服务使用pip install命令从Python Package Index(PyPI)或其他指定源下载环境安装包,并基于下载的环境安装包将依赖环境安装在内核服务关联的依赖安装位置。如果要安装一个名为numpy的依赖环境,那么可以执行pip install numpy命令,实现该依赖环境的安装。
在依赖安装位置上的各种依赖环境更新之后,可以将更新后的各种依赖环境进行打包,以Python开发环境为例,这个包可能包含了Python解释器和已安装的各种依赖环境,以及各种依赖环境各自的配置信息。打包的形式可以是一个压缩文件或某种特定的格式,如tar.gz文件格式,以便在分布式环境中进行传输和部署。打包后可以按照数据处理框架在资源集群中的数据传输方式,例如采用JVM Gateway调用数据处理框架提供的sparkcontext功能组件编写的sc.add(·)方法,作为在资源集群中的数据传输方式,将包分发给可调度资源,如分发给可调度资源中的各执行节点(如包括执行节点_1、执行节点_2、……执行节点_N),以使执行节点可以通过继承包中的各种依赖环境的方式维护运行环境池,使得通过内核服务启动的内核进程都可以使用相同的依赖环境,实现内核服务级别的依赖环境共享,简化了为每个内核进程单独安装依赖环境的过程,提高了文件运行的效率和一致性。
S202,基于资源标识,调度可调度资源创建内核进程,并将运行环境池中的一个运行环境分配给内核进程。
通过资源关联请求携带的资源标识可以连接到相应的预配置资源,从而可以调度预配置资源中的可调度资源来创建内核进程,以及从在可调度资源中配置的运行环境池中,选取一个运行环境分配给该内核进程,完成内核进程的启动或重启。
在从运行环境池中选取一个运行环境时,可以按照各运行环境的配置顺序,选取一个运行环境;也可以基于各运行环境各自的环境状态,选取环境状态为空闲状态的运行环境;也可以按照各运行环境各自的环境优先级,选取环境优先级大于预设优先级的运行环境,运行环境处于空闲状态的时长越长则环境优先级越高,或者运行环境包含的依赖环境越多则环境优先级越高等,具体不做限制。
作为一种实施例,在创建内核进程,以及分配运行环境时,可以基于资源标识,调度可调度资源执行以下操作:
采用主进程启动一个内核服务,内核服务用于创建和调用内核进程。调用内核服务,采用子进程(如subprocess)执行:创建内核进程,并基于运行环境池包含的各运行环境各自的环境状态,从运行环境池中选取环境状态为空闲状态的一个运行环境分配给内核进程。
由于子进程拥有独立的内存空间和运行空间,与主进程及其他子进程相互隔离,因此,内核进程在子进程中启动或重启时,不会受到其他内核进程或主进程中运行的内核服务的干扰,内核进程内部的运行状态、变量和资源分配等都相对于其他内核进程来说是独立的,避免了因共享依赖环境和共享可调度资源而导致的运行冲突和错误等异常情况,提高了文件运行稳定性。
进一步的,子进程在创建时可以被赋予特定的权限和安全上下文,限制其对资源集群中的特定资源和敏感数据的访问权限,从而可以有效防止内核进程中运行的代码因漏洞等而产生获取资源集群中的特定资源和敏感数据的异常行为,保证了文件运行时的数据安全性。
S203,基于文件标识,建立与内核进程之间的通信连接。
基于文件标识,可以为目标文件建立服务端与内核进程之间的通信连接,从而可以通过通信连接指示内核进程运行目标文件。通信连接用于向内核进程发送数据,以及从内核进程接收数据等。例如,通信连接包括前文介绍的预配置资源的调度地址,以及内核进程的进程标识等;又例如,通信连接包括前文介绍的内核服务的网络地址(例如包括IP地址或端口地址等),以及内核进程的进程标识等,具体不做限制。
作为一种实施例,在资源集群中部署有数据处理框架,内核进程是由数据处理框架在资源集群中启动的内核服务创建的情况下,可以通过建立文件标识和资源标识之间的关联关系,将目标文件与预配置资源关联;进一步的,在接收到内核服务上报的内核服务的网络地址时,可以建立资源标识与网络地址之间的映射关系,实现在服务端注册内核服务;也可以进一步建立网络地址与内核服务为内核进程分配的进程标识之间的映射关系,实现在服务端注册内核进程等。基于关联关系、映射关系和内核服务为内核进程分配的进程标识建立的与内核进程之间的通信连接,可以将目标文件与内核进程连接,使得目标文件中的文件内容,可以直接发送至内核进程中运行,提高文件运行效率。
服务端和资源集群之间还可以设置有企业级网关(如Enterprise Gateway),那么,可以建立企业级网关与内核进程之间的通信连接,有助于实现高效地文件运行。
S204,在接收到针对目标文件的文件运行指令时,基于通信连接调用内核进程运行目标文件,获得并返回文件运行结果。
在将目标文件与预配置资源关联,并在关联过程中启动了内核进程之后,如果收到针对目标文件的文件运行指令,那么可以基于与内核进程之间的通信连接调用内核进程运行目标文件,获得并返回文件运行结果。
文件运行指令可以在响应于针对客户端触发的文件运行操作时生成的,也可以是在定时检测目标文件的文件内容时,确定文件内容符合运行格式时生成的等,具体不做限制。其中,运行格式表征文件内容中,不存在语法错误、不存在无法调用的函数调用关系等。
作为一种实施例,由于一个预配置资源关联了多个文件时,预配置资源中相应的启动了多个内核进程,因此多个内核进程在使用可调度资源运行各自接收到的文件时,可能会存在资源调度冲突或资源竞争等异常情况,因此,采用第三开发语言,预先建立由第二编程语言编写的功能函数的调用通道,从而可以在第三开发语言的层面上,创建由第二编程语言编写的功能函数对应的由第三开发语言编写的功能调用函数,每个功能调用函数可以作为采用第三开发语言调用由第二编程语言编写的功能函数的调用通道。第三开发语言可以与第一开发语言相同,也可以不同;第三开发语言与第二编程语言不同。
在第三开发语言的层面上,对各功能调用函数可以进行统一的管理、配置和限制等,使得通过各功能调用函数调用由第二编程语言编写的功能函数时,不会出现资源调度冲突或资源竞争等异常情况,实现由第二编程语言编写的功能函数在多个内核进程中共享的效果,有效保证了文件运行的稳定性。
在资源集群中部署有使用第二开发语言的数据处理框架时,内核进程是采用数据处理框架在资源集群创建的,如果资源集群中设置有采用第三开发语言调用由所述数据处理框架使用的第二编程语言编写的功能函数的调用通道,那么基于通信连接向内核进程发送目标文件包含的文件内容之后,内核进程采用调用通道指示数据处理框架按照文件内容运行目标文件,获得文件运行结果。
例如,数据处理框架为Spark框架时,Spark框架使用的第二开发语言为Python,Spark框架可以以Spark应用在资源集群中划分出预配置资源。由于Spark应用只能初始化一次Spark Context等,在整个Spark应用中负责可调度资源的资源申请、资源分配和资源管理等工作,因此,基于一个预配置资源启动多个内核进程时,多个内核进程之间无法共享和使用Spark Context。
第三开发语言可以是Java,在Java层面创建Spark Context,可以更好地对预配置资源进行统一管理和分配。通过Java Gateway在Java层面创建Spark Context,获得调用功能函数,调用功能函数调用Spark Context进行数据处理。在Java代码中可以集中设置Spark Context的各种参数,如应用程序名称、运行模式、资源分配等,而不需要在不同的地方分别进行配置,从而提高了配置的一致性和可维护性。
当在Java层面创建好Spark Context,即获得调用功能函数后,内核进程可以通过JVM Gateway来访问调用功能函数,达到调用Spark Context的目的。这样,内核进程就能够获取到Spark集群的资源信息、提交任务、获取计算结果等。
作为一种实施例,在Java层面创建的Spark Context,可以通过Monkey Patch进行一些修改和包装,使得在Python中使用该Spark Context的方式与在原始的Java或Scala环境中的使用方式保持一致。即使底层是通过Java Gateway和JVM Gateway来实现与Spark集群的交互,但在Python环境中可以像在纯Python环境中使用Spark一样,大大降低了调用通道的使用门槛,提高了开发效率。
例如,在Python中直接按照SparkContext的调用方法,去调用Java层面创建的SparkContext,如调用创建分布式数据集(Resilient Distributed Dataset,RDD)的方法、调用执行结构化查询语言(Structured Query Language,SQL)查询的方法等,这些方法在底层可以是通过调用通道,如Java Gateway和JVM Gateway转发到Java层面的SparkContext来执行的。
作为一种实施例,在多个文件协作运行的场景下,可以在一个预配置资源中启动多个内核进程,每个内核进程运行一个文件,从而,多个文件可以基于一个预配置资源运行,从而多个文件可以在不产生资源干扰或资源竞争,以及不出现代码混乱等异常情况的前提下协作运行。
以调试场景为例,接收来自客户端的协作关联请求,协作关联请求携带有针对目标文件的运行过程进行运行调试的协作文件的协作标识,以及预配置资源的资源标识。基于资源标识,调度可调度资源创建一个内核进程作为协作进程,并将运行环境池中除了运行目标文件的运行环境以外的其他运行环境分配给协作进程。基于协作标识,建立与协作进程之间的协作连接。在接收到针对协同文件的协作运行指令时,基于协作连接调用协作进程运行协同文件,获得并返回协作运行结果。
目标文件和协作文件可以各自运行在独立的运行环境中,不需要将目标文件和协作文件关联在同一个内核进程中,避免出现代码上下文混乱的情况,提高文件运行稳定性。
基于相同的发明构思,站在资源集群的角度,对本申请实施例提供的开发文件的运行方法进行具体介绍。请参考图6,为本申请实施例提供的开发文件的运行方法的一种流程示意图。
S601,接收来自服务端的资源调度请求。
资源调度请求是服务端基于接收的来自客户端的资源关联请求生成的。资源关联请求携带有目标文件的文件标识和预配置资源的资源标识。预配置资源包括预先分配的可调度资源,以及在可调度资源中预先配置的运行环境池,具体可以参考前文介绍,在此不再赘述。
作为一种实施例,在接收来自服务端的资源调度请求之前,接收来自服务端的资源配置指令。资源配置指令是服务端基于接收的来自客户端的资源创建指令携带的资源集群的集群标识、可调度标识和至少一种运行环境规格生成的。基于资源配置指令携带的可调度标识分配可调度资源。基于资源配置指令携带的至少一种运行环境规格,在可调度资源中配置运行环境池,具体可以参考前文介绍,在此不再赘述。
作为一种实施例,资源集群中部署有数据处理框架,内核进程是由数据处理框架在资源集群中启动的内核服务创建的。内核服务关联有依赖安装位置,依赖安装位置上安装有多种依赖环境,具体可以参考前文介绍,在此不再赘述。针对至少一种运行环境规格,分别执行以下操作:
基于一种运行环境规格,从多种依赖环境中继承的至少一种依赖环境,建立基础环境。按照预设数量,在可调度资源中为内核服务配置多个基础环境。将多个基础环境作为多个运行环境加入运行环境池。多个基础环境中包含相同的依赖环境,后台维护运行环境池,运行环境池中处于空闲状态的运行环境的数量可以保持在预设数量,避免出现运行环境池全部被占用的情况,提高文件运行稳定性。
作为一种实施例,采用内核服务接收针对运行环境池的依赖安装请求。依赖安装请求是服务端基于接收的针对运行环境池的依赖新增指令生成的,依赖新增指令携带有一种依赖环境的安装包标识。采用内核服务基于依赖安装请求携带的安装包标识,从预设的依赖环境源中下载一种依赖环境的环境安装包。基于下载的环境安装包,将一种依赖环境安装在内核服务关联的依赖安装位置,具体可以参考前文介绍,在此不再赘述。
S602,基于资源调度请求携带的资源标识所指示的可调度资源创建内核进程,并将资源标识所指示的运行环境池中的一个运行环境分配给内核进程,具体可以参考前文介绍,在此不再赘述。
S603,在内核进程接收到携带目标文件的文件内容的进程调用请求时,基于文件内容运行目标文件,获得并返回文件运行结果。
进程调用请求是服务端基于文件标识建立与内核进程之间的通信连接之后,且在接收到针对目标文件的文件运行指令时生成的,并基于通信连接向内核进程发送的,具体可以参考前文介绍,在此不再赘述。
作为一种实施例,资源集群中部署有数据处理框架,内核进程是采用数据处理框架在资源集群创建的。建立采用第三开发语言调用由数据处理框架使用的第二编程语言编写的功能函数的调用通道。第三开发语言与第二编程语言不同。采用内核进程,基于调用通道指示数据处理框架按照文件内容运行目标文件,获得文件运行结果,具体可以参考前文介绍,在此不再赘述。
下面以服务端为Jupyter Notebook服务器,资源集群为yarn集群,数据处理框架为Spark框架,Jupyter Notebook服务器与yarn集群通过企业级网关(DataLab EnterpriseGateway)进行通信,客户端与yarn集群也通过该企业级网关(DEG)进行通信为例,对本申请实施例提供的开发文件的运行方法进行示例介绍,请参考图7A和图7B。
S701,响应于针对客户端触发的资源创建操作,生成资源创建指令。
资源创建操作包括输入资源集群的集群标识的操作,还包括输入可调度标识的操作,以及包括输入至少一种运行环境规格的操作等,那么资源创建指令可以携带有yarn集群的集群标识、指定某一资源池的可调度标识和Spark3.3版本结合Python3.6的运行环境规格等。
客户端向Jupyter Notebook服务器发送资源创建指令,Jupyter Notebook服务器通过企业级网关(DEG)接收到资源创建指令。
S702,企业级网关(DEG)获取记录有数据处理策略的java程序,并以Spark框架的任务提交格式,融合数据处理策略、可调度标识和至少一种运行环境规格,获得Spark任务,向yarn集群提交Spark任务。
S703,在yarn集群中,基于Spark任务指示的数据处理策略,在Spark任务指示的可调度资源中,采用java Gateway在java层面创建Spark Context,基于Spark Context拉起内核服务(Kernel Operator)。
S704,yarn集群向企业级网关(DEG)发送内核服务的网络地址,Jupyter Notebook服务器通过企业级网关(DEG)接收yarn集群发送的内核服务的网络地址,并建立一个资源标识和网络地址之间的映射关系。
S705,响应于针对目标文件与一个预配置资源的资源标识触发的资源关联操作,生成资源关联请求。例如,先客户端响应于针对目标文件的文件开启操作后,在客户端呈现目标文件的文件内容;再在文件内容中,响应于与一个预配置资源的资源标识触发的资源关联操作,生成资源关联请求。
客户端向Jupyter Notebook服务器发送资源关联请求,Jupyter Notebook服务器通过企业级网关(DEG)接收资源关联请求。
S706,Jupyter Notebook服务器通过企业级网关(DEG)基于映射关系,确定一个资源标识对应的网络地址,并基于网络地址向yarn集群中运行的内核服务发送进程启动指令。
S707,内核服务在预配置资源包含的可调度资源中创建一个内核进程,并从关联的运行环境池中,为内核进程分配一个运行环境A,完成启动内核进程A。
S708,内核进程通过JVM Gateway获取采用java Gateway在java层面创建的SparkContext、Spark Session等功能函数,完成建立Jupyter Notebook服务器与内核进程之间的通信连接。
S709,在接收到针对目标文件的文件运行指令A时,基于通信连接调用内核进程运行目标文件,获得并返回文件运行结果。
S709A:客户端响应于针对目标文件触发的文件运行操作,生成文件运行指令A;客户端通过企业级网关(DEG)向Jupyter Notebook服务器发送文件运行指令A。
S709B:Jupyter Notebook服务器通过通信连接向yarn集群启动的内核进程A发送目标文件,以指示yarn集群调用内核进程A运行目标文件。
S709C:yarn集群通过通信连接接收到目标文件后,调用内核进程A运行目标文件,获得文件运行结果。
S709D:yarn集群通过通信连接向Jupyter Notebook服务器返回文件运行结果,Jupyter Notebook服务器接收yarn集群通过通信连接发送的文件运行结果。
S709E:Jupyter Notebook服务器向客户端返回接收到的文件运行结果,客户端接收Jupyter Notebook服务器发送的文件运行结果。
针对协作文件,重复上述过程,内核服务在预配置资源包含的可调度资源中创建一个内核进程,并从关联的运行环境池中,为内核进程分配一个运行环境B,完成启动内核进程B。在接收到针对协作文件的文件运行指令B时,基于通信连接调用内核进程运行目标文件,获得并返回文件运行结果。
本申请实施例中,通过预配置资源常驻的方式,缩短内核进程的启动时间,相较于传统的开发文件的运行方法得到的至少1分钟的启动内核进程的效果来说,本申请实施例能够在2秒钟完成内核进程的启动,大大缩短了内核进程的启动过程。
进一步的,以一个预配置资源启动一个spark application,可以在同一个sparkapplication中拉起多个内核进程,避免了一个内核进程独占spark application导致的资源浪费的情况。进一步的,以一个预配置资源为单位进行统一的依赖包管理,让新增的依赖环境能够在分布式运算中生效,并且内核进程的重启不会导致spark application级别的依赖环境丢失等,提高了文件运行稳定性。
基于同一发明构思,本申请实施例提供一种开发文件的运行装置,能够站在服务端的角度,实现前述的开发文件的运行方法对应的功能。请参考图8A,该装置包括收发模块81和处理模块82,其中:
收发模块81:用于接收来自客户端的资源关联请求;其中,资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;预配置资源包括:从资源集群中预先分配的可调度资源,以及在可调度资源中预先配置的运行环境池;
处理模块82:用于基于资源标识,调度可调度资源创建内核进程,并将运行环境池中的一个运行环境分配给内核进程;
处理模块82还用于:基于文件标识,建立与内核进程之间的通信连接;
收发模块81还用于:在接收到针对目标文件的文件运行指令时,基于通信连接调用内核进程运行目标文件,获得并返回文件运行结果。
在一种可能的实施例中,收发模块81还用于:
在接收来自客户端的资源关联请求之前,接收来自客户端的资源创建指令;其中,资源创建指令携带有:资源集群的集群标识、可调度标识和至少一种运行环境规格;
基于集群标识、可调度标识和至少一种运行环境规格,向资源集群发送资源配置指令,以使资源集群基于资源配置指令携带的可调度标识分配可调度资源,并基于资源配置指令携带的至少一种运行环境规格,在可调度资源中配置运行环境池,以及返回资源配置结果;
处理模块82还用于:基于接收的资源配置结果,确定预配置资源的资源标识。
在一种可能的实施例中,资源集群中部署有数据处理框架,则处理模块82具体用于:
获取由第一开发语言编写的数据处理策略;其中,数据处理策略指示:启动一个内核服务,内核服务用于创建和调用内核进程;
基于数据处理框架为第一开发语言提供的任务提交格式,融合数据处理策略、可调度标识和至少一种运行环境规格,获得数据处理任务;
基于集群标识,将数据处理任务提交到资源集群,以使数据处理框架调度在资源集群中按照可调度标识分配的可调度资源,启动一个内核服务,并按照至少一种运行环境规格在可调度资源中为内核服务配置运行环境池。
在一种可能的实施例中,收发模块81具体用于:接收资源配置结果;其中,资源配置结果包括内核服务的网络地址;
处理模块82具体用于:对网络地址进行编码,获得预配置资源的资源标识。
在一种可能的实施例中,内核服务关联有依赖安装位置,依赖安装位置上安装有多种依赖环境;
则为内核服务配置的运行环境池中的每个运行环境是基于从多种依赖环境中继承的至少一种依赖环境配置的。
在一种可能的实施例中,收发模块81还用于:
接收针对运行环境池的依赖新增指令;其中,依赖新增指令携带有一种依赖环境的安装包标识;
基于内核服务的网络地址,向内核服务发送携带有安装包标识的依赖安装请求,以使内核服务基于安装包标识从依赖环境源中下载一种依赖环境的环境安装包,并基于环境安装包将一种依赖环境安装在内核服务关联的依赖安装位置。
在一种可能的实施例中,处理模块82具体用于:
基于资源标识,调度可调度资源执行以下操作:
采用主进程启动一个内核服务;其中,内核服务用于创建和调用内核进程;
调用内核服务,采用子进程执行:创建内核进程,并基于运行环境池包含的各运行环境各自的环境状态,从运行环境池中选取环境状态为空闲状态的一个运行环境分配给内核进程。
在一种可能的实施例中,资源集群中部署有数据处理框架,内核进程是由数据处理框架在资源集群中启动的内核服务创建的;
则处理模块82具体用于:
建立文件标识和资源标识之间的关联关系;
在接收到内核服务上报的内核服务的网络地址时,建立资源标识与网络地址之间的映射关系;
基于关联关系、映射关系和内核服务为内核进程分配的进程标识,建立与内核进程之间的通信连接。
在一种可能的实施例中,收发模块81还用于:
接收来自客户端的协作关联请求;其中,协作关联请求携带有:针对目标文件的运行过程进行运行调试的协作文件的协作标识,以及资源标识;
处理模块82还用于:
基于资源标识,调度可调度资源创建协作进程,并将运行环境池中除了一个运行环境以外的其他运行环境分配给协作进程;
基于协作标识,建立与协作进程之间的协作连接;
在接收到针对协同文件的协作运行指令时,基于协作连接调用协作进程运行协同文件,获得并返回协作运行结果。
基于同一发明构思,本申请实施例提供一种开发文件的运行装置,能够站在资源集群的角度,实现前述的开发文件的运行方法对应的功能。请参考图8B,该装置包括收发模块801和处理模块802,其中:
收发模块801:用于接收来自服务端的资源调度请求;其中,资源调度请求是服务端基于接收的来自客户端的资源关联请求生成的,资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;预配置资源包括:预先分配的可调度资源,以及在可调度资源中预先配置的运行环境池;
处理模块802:用于基于资源调度请求携带的资源标识所指示的可调度资源创建内核进程,并将资源标识所指示的运行环境池中的一个运行环境分配给内核进程;
处理模块802还用于:在内核进程接收到携带目标文件的文件内容的进程调用请求时,基于文件内容运行目标文件,获得并返回文件运行结果;其中,进程调用请求是服务端基于文件标识建立与内核进程之间的通信连接之后,且在接收到针对目标文件的文件运行指令时生成的,并基于通信连接向内核进程发送的。
在一种可能的实施例中,收发模块801还用于:
在接收来自服务端的资源调度请求之前,接收来自服务端的资源配置指令;其中,资源配置指令是服务端基于接收的来自客户端的资源创建指令携带的资源集群的集群标识、可调度标识和至少一种运行环境规格生成的;
处理模块802还用于:
基于资源配置指令携带的可调度标识分配可调度资源;
基于资源配置指令携带的至少一种运行环境规格,在可调度资源中配置运行环境池。
在一种可能的实施例中,资源集群中部署有数据处理框架,内核进程是由数据处理框架在资源集群中启动的内核服务创建的;内核服务关联有依赖安装位置,依赖安装位置上安装有多种依赖环境;
则处理模块802具体用于:
针对至少一种运行环境规格,分别执行以下操作:
基于一种运行环境规格,从多种依赖环境中继承的至少一种依赖环境,建立基础环境;
按照预设数量,在可调度资源中为内核服务配置多个基础环境;
将多个基础环境作为多个运行环境加入运行环境池。
在一种可能的实施例中,处理模块802还用于:
采用内核服务接收针对运行环境池的依赖安装请求;其中,依赖安装请求是服务端基于接收的针对运行环境池的依赖新增指令生成的,依赖新增指令携带有一种依赖环境的安装包标识;
采用内核服务基于依赖安装请求携带的安装包标识,从预设的依赖环境源中下载一种依赖环境的环境安装包;
基于下载的环境安装包,将一种依赖环境安装在内核服务关联的依赖安装位置。
在一种可能的实施例中,资源集群中部署有数据处理框架,内核进程是采用数据处理框架在资源集群创建的;
则处理模块802还用于:
建立采用第三开发语言调用由数据处理框架使用的第二编程语言编写的功能函数的调用通道;其中,第三开发语言与第二编程语言不同;
则处理模块802具体用于:
采用内核进程,基于调用通道指示数据处理框架按照文件内容运行目标文件,获得文件运行结果。
请参照图9,是本申请实施例提供的一种计算机设备900,该计算机设备900例如可以为图1C中的客户端102或服务端101。数据存储程序的当前版本和历史版本以及数据存储程序对应的应用软件可以安装在计算机设备900上,该计算机设备900包括处理器980以及存储器920。在一些实施例中,该计算机设备900可以包括显示单元940,显示单元940包括显示面板941,用于显示由用户交互操作界面等。
在一种可能的实施例中,可以采用液晶显示器(Liquid Crystal Display,LCD)或有机发光二极管OLED(Organic Light-Emitting Diode)等形式来配置显示面板941。
处理器980用于读取计算机程序,然后执行计算机程序定义的方法,例如处理器980读取数据存储程序或文件等,从而在该计算机设备900上运行数据存储程序,在显示单元940上显示对应的界面。处理器980可以包括一个或多个通用处理器,还可包括一个或多个DSP(Digital Signal Processor,数字信号处理器),用于执行相关操作,以实现本申请实施例所提供的技术方案。
存储器920一般包括内存和外存,内存可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。外存可以为硬盘、光盘、USB盘、软盘或磁带机等。存储器920用于存储计算机程序和其他数据,该计算机程序包括各客户端对应的应用程序等,其他数据可包括操作系统或应用程序被运行后产生的数据,该数据包括系统数据(例如操作系统的配置参数)和用户数据。本申请实施例中计算机程序存储在存储器920中,处理器980执行存储器920中的计算机程序,实现前文图论述的任意的一种方法。
作为一种实施例,存储器920预先存储有预配置资源,预配置资源包括:从资源集群中预先分配的可调度资源,以及在可调度资源中预先配置的运行环境池。
处理器980接收到来自客户端的资源关联请求时,基于资源关联请求携带的资源标识,调度资源标识对应的预配置资源中的可调度资源创建内核进程,以及将在可调度资源中预先配置的运行环境池中的一个运行环境分配给内核进程;处理器980基于文件标识,建立与内核进程之间的通信连接;处理器980在接收到针对目标文件的文件运行指令时,基于通信连接调用内核进程运行目标文件,获得并返回文件运行结果。
上述显示单元940用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及产生与计算机设备900的用户设置以及功能控制有关的信号输入等。具体地,本申请实施例中,该显示单元940可以包括显示面板941。显示面板941例如触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在显示面板941上或在显示面板941的操作),并根据预先设定的程式驱动相应的连接装置。
在一种可能的实施例中,显示面板941可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测玩家的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器980,并能接收处理器980发来的命令并加以执行。
其中,显示面板941可以采用电阻式、电容式、红外线以及表面声波等多种类型实现。除了显示单元940,在一些实施例中,计算机设备900还可以包括输入单元930,输入单元930可以包括图像输入设备931和其他输入设备932,其中其他输入设备可以但不限于包括物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
作为一种实施例,显示单元940可以呈现文件运行结果和触发操作等,从而,处理器980可以基于接收到的指令或请求进行开发文件的运行,以实现文件运行或运行调试等过程。
除以上之外,计算机设备900还可以包括用于给其他模块供电的电源990、音频电路960、近场通信模块970和RF电路910。计算机设备900还可以包括一个或多个传感器950,例如加速度传感器、光传感器、压力传感器等。音频电路960具体包括扬声器961和麦克风962等,例如计算机设备900可以通过麦克风962采集用户的声音,进行相应的操作等。
作为一种实施例,处理器980的数量可以是一个或多个,处理器980和存储器920可以是耦合设置,也可以是相对独立设置。
作为一种实施例,图9中的处理器980可以用于实现如图8A中的收发模块81和处理模块82的功能,还可以用于实现如图8B中的收发模块801和处理模块802的功能。
作为一种实施例,图9中的处理器980可以用于实现前文论述的服务器或终端设备对应的功能。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过计算机程序来完成,前述的计算机程序可以存储于一计算机可读取存储介质中,该计算机程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,例如,通过计算机程序产品体现,该计算机程序产品存储在一个存储介质中,包括计算机程序用以使得一台计算机设备执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (19)
1.一种开发文件的运行方法,其特征在于,应用于服务端,包括:
接收来自客户端的资源关联请求;其中,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:从资源集群中预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
基于所述资源标识,调度所述可调度资源创建内核进程,并将所述运行环境池中的一个运行环境分配给所述内核进程,以启动所述内核进程;
基于所述文件标识,建立与所述内核进程之间的通信连接;
在接收到针对所述目标文件的文件运行指令时,基于所述通信连接调用所述内核进程运行所述目标文件,获得并返回文件运行结果。
2.根据权利要求1所述的方法,其特征在于,在所述接收来自客户端的资源关联请求之前,还包括:
接收来自客户端的资源创建指令;其中,所述资源创建指令携带有:资源集群的集群标识、可调度标识和至少一种运行环境规格;
基于所述集群标识、所述可调度标识和所述至少一种运行环境规格,向所述资源集群发送资源配置指令,以使所述资源集群基于所述资源配置指令携带的所述可调度标识分配可调度资源,并基于所述资源配置指令携带的所述至少一种运行环境规格,在所述可调度资源中配置运行环境池,以及返回资源配置结果;
基于接收的资源配置结果,确定所述预配置资源的资源标识。
3.根据权利要求2所述的方法,其特征在于,所述资源集群中部署有数据处理框架,则所述基于所述集群标识,向所述资源集群发送资源配置指令,包括:
获取由第一开发语言编写的数据处理策略;其中,所述数据处理策略指示:启动一个内核服务,所述内核服务用于创建和调用内核进程;
基于所述数据处理框架为所述第一开发语言提供的任务提交格式,融合所述数据处理策略、所述可调度标识和至少一种运行环境规格,获得数据处理任务;
基于所述集群标识,将所述数据处理任务提交到所述资源集群,以使所述资源集群采用所述数据处理框架按照所述可调度标识分配的可调度资源,启动一个内核服务,并按照所述至少一种运行环境规格在所述可调度资源中为所述内核服务配置运行环境池。
4.根据权利要求3所述的方法,其特征在于,所述基于接收的资源配置结果,确定所述预配置资源的资源标识,包括:
接收资源配置结果;其中,所述资源配置结果包括所述内核服务的网络地址;
对所述网络地址进行编码,获得所述预配置资源的资源标识。
5.根据权利要求3所述的方法,其特征在于,所述内核服务关联有依赖安装位置,所述依赖安装位置上安装有多种依赖环境;
则为所述内核服务配置的运行环境池中的每个运行环境是基于从所述多种依赖环境中继承的至少一种依赖环境配置的。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收针对所述运行环境池的依赖新增指令;其中,所述依赖新增指令携带有一种依赖环境的安装包标识;
基于所述内核服务的网络地址,向所述内核服务发送携带有所述安装包标识的依赖安装请求,以使所述内核服务基于所述安装包标识从依赖环境源中下载所述一种依赖环境的环境安装包,并基于所述环境安装包将所述一种依赖环境安装在所述内核服务关联的依赖安装位置。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述基于所述资源标识,调度所述可调度资源创建内核进程,并将所述运行环境池中的一个运行环境分配给所述内核进程,包括:
基于所述资源标识,调度所述可调度资源执行以下操作:
采用主进程启动一个内核服务;其中,所述内核服务用于创建和调用内核进程;
调用所述内核服务,采用子进程执行:创建内核进程,并基于所述运行环境池包含的各运行环境各自的环境状态,从所述运行环境池中选取环境状态为空闲状态的一个运行环境分配给所述内核进程。
8.根据权利要求1~6任一项所述的方法,其特征在于,所述资源集群中部署有数据处理框架,所述内核进程是由所述数据处理框架在所述资源集群中启动的内核服务创建的;
则所述基于所述文件标识,建立与所述内核进程之间的通信连接,包括:
建立所述文件标识和所述资源标识之间的关联关系;
在接收到所述内核服务上报的所述内核服务的网络地址时,建立所述资源标识与所述网络地址之间的映射关系;
基于所述关联关系、所述映射关系和所述内核服务为所述内核进程分配的进程标识,建立与所述内核进程之间的通信连接。
9.根据权利要求1~6任一项所述的方法,其特征在于,所述方法还包括:
接收来自所述客户端的协作关联请求;其中,所述协作关联请求携带有:针对所述目标文件的运行过程进行运行调试的协作文件的协作标识,以及所述资源标识;
基于所述资源标识,调度所述可调度资源创建协作进程,并将所述运行环境池中除了所述一个运行环境以外的其他运行环境分配给所述协作进程;
基于所述协作标识,建立与所述协作进程之间的协作连接;
在接收到针对所述协作文件的协作运行指令时,基于所述协作连接调用所述协作进程运行所述协作文件,获得并返回协作运行结果。
10.一种开发文件的运行方法,其特征在于,应用于资源集群,包括:
接收来自服务端的资源调度请求;其中,所述资源调度请求是所述服务端基于接收的来自客户端的资源关联请求生成的,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
基于所述资源调度请求携带的资源标识所指示的可调度资源创建内核进程,并将所述资源标识所指示的运行环境池中的一个运行环境分配给所述内核进程,以启动所述内核进程;
在所述内核进程接收到携带所述目标文件的文件内容的进程调用请求时,基于所述文件内容运行所述目标文件,获得并返回文件运行结果;其中,所述进程调用请求是所述服务端基于所述文件标识建立与所述内核进程之间的通信连接之后,且在接收到针对所述目标文件的文件运行指令时生成的,并基于所述通信连接向所述内核进程发送的。
11.根据权利要求10所述的方法,其特征在于,在所述接收来自服务端的资源调度请求之前,还包括:
接收来自所述服务端的资源配置指令;其中,所述资源配置指令是所述服务端基于接收的来自客户端的资源创建指令携带的资源集群的集群标识、可调度标识和至少一种运行环境规格生成的;
基于所述资源配置指令携带的所述可调度标识分配可调度资源;
基于所述资源配置指令携带的所述至少一种运行环境规格,在所述可调度资源中配置运行环境池。
12.根据权利要求11所述的方法,其特征在于,所述资源集群中部署有数据处理框架,所述内核进程是由所述数据处理框架在所述资源集群中启动的内核服务创建的;所述内核服务关联有依赖安装位置,所述依赖安装位置上安装有多种依赖环境;
则所述基于所述资源配置指令携带的所述至少一种运行环境规格,在所述可调度资源中配置运行环境池,包括:
针对所述至少一种运行环境规格,分别执行以下操作:
基于一种运行环境规格,从所述多种依赖环境中继承的至少一种依赖环境,建立基础环境;
按照预设数量,在所述可调度资源中为所述内核服务配置多个所述基础环境;
将配置的多个基础环境作为多个运行环境加入运行环境池。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
采用所述内核服务接收针对所述运行环境池的依赖安装请求;其中,所述依赖安装请求是所述服务端基于接收的针对所述运行环境池的依赖新增指令生成的,所述依赖新增指令携带有一种依赖环境的安装包标识;
采用所述内核服务基于所述依赖安装请求携带的安装包标识,从预设的依赖环境源中下载所述一种依赖环境的环境安装包;
基于下载的所述环境安装包,将所述一种依赖环境安装在所述内核服务关联的依赖安装位置。
14.根据权利要求10~13任一项所述的方法,其特征在于,所述资源集群中部署有数据处理框架,所述内核进程是采用所述数据处理框架在所述资源集群创建的;则所述方法还包括:
建立采用第三开发语言调用由所述数据处理框架使用的第二编程语言编写的功能函数的调用通道;其中,所述第三开发语言与所述第二编程语言不同;
则所述基于所述文件内容运行所述目标文件,获得文件运行结果,包括:
采用所述内核进程,基于所述调用通道指示所述数据处理框架按照所述文件内容运行所述目标文件,获得文件运行结果。
15.一种开发文件的运行装置,其特征在于,应用于服务端,包括:
收发模块:用于接收来自客户端的资源关联请求;其中,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:从资源集群中预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
处理模块:用于基于所述资源标识,调度所述可调度资源创建内核进程,并将所述运行环境池中的一个运行环境分配给所述内核进程,以启动所述内核进程;
所述处理模块还用于:基于所述文件标识,建立与所述内核进程之间的通信连接;
所述收发模块还用于:在接收到针对所述目标文件的文件运行指令时,基于所述通信连接调用所述内核进程运行所述目标文件,获得并返回文件运行结果。
16.一种开发文件的运行装置,其特征在于,应用于资源集群,包括:
收发模块:用于接收来自服务端的资源调度请求;其中,所述资源调度请求是所述服务端基于接收的来自客户端的资源关联请求生成的,所述资源关联请求携带有:目标文件的文件标识和预配置资源的资源标识;所述预配置资源包括:预先分配的可调度资源,以及在所述可调度资源中预先配置的运行环境池;
处理模块:用于基于所述资源调度请求携带的资源标识所指示的可调度资源创建内核进程,并将所述资源标识所指示的运行环境池中的一个运行环境分配给所述内核进程,以启动所述内核进程;
所述处理模块还用于:在所述内核进程接收到携带所述目标文件的文件内容的进程调用请求时,基于所述文件内容运行所述目标文件,获得并返回文件运行结果;其中,所述进程调用请求是所述服务端基于所述文件标识建立与所述内核进程之间的通信连接之后,且在接收到针对所述目标文件的文件运行指令时生成的,并基于所述通信连接向所述内核进程发送的。
17.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1~14中任一项所述的方法。
18.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如权利要求1~14中任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1~14中任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510185238.4A CN119668885B (zh) | 2025-02-19 | 2025-02-19 | 一种开发文件的运行方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510185238.4A CN119668885B (zh) | 2025-02-19 | 2025-02-19 | 一种开发文件的运行方法、装置、设备及存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN119668885A CN119668885A (zh) | 2025-03-21 |
| CN119668885B true CN119668885B (zh) | 2025-06-17 |
Family
ID=94982744
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202510185238.4A Active CN119668885B (zh) | 2025-02-19 | 2025-02-19 | 一种开发文件的运行方法、装置、设备及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN119668885B (zh) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113179308A (zh) * | 2021-04-23 | 2021-07-27 | 上海商汤智能科技有限公司 | 服务请求处理方法、装置、电子设备及存储介质 |
| CN118519781A (zh) * | 2024-06-26 | 2024-08-20 | 中国建设银行股份有限公司 | 资源分配方法、装置、设备、存储介质和程序产品 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116954724A (zh) * | 2022-04-13 | 2023-10-27 | 深圳Tcl数字技术有限公司 | 启动操作系统的方法、装置、存储介质及电子设备 |
| CN116166337A (zh) * | 2023-02-20 | 2023-05-26 | 蔚来汽车科技(安徽)有限公司 | 应用程序启动方法、启动系统、存储介质及智能终端 |
| CN118779089A (zh) * | 2023-03-29 | 2024-10-15 | 财付通支付科技有限公司 | 资源管理方法、装置、设备和可读存储介质 |
| CN116661878A (zh) * | 2023-05-12 | 2023-08-29 | 亿咖通(湖北)技术有限公司 | 一种系统启动方法、装置、电子设备及存储介质 |
| CN118467299A (zh) * | 2024-05-28 | 2024-08-09 | 京东城市(北京)数字科技有限公司 | 一种进程管理方法及装置 |
-
2025
- 2025-02-19 CN CN202510185238.4A patent/CN119668885B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113179308A (zh) * | 2021-04-23 | 2021-07-27 | 上海商汤智能科技有限公司 | 服务请求处理方法、装置、电子设备及存储介质 |
| CN118519781A (zh) * | 2024-06-26 | 2024-08-20 | 中国建设银行股份有限公司 | 资源分配方法、装置、设备、存储介质和程序产品 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN119668885A (zh) | 2025-03-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6935496B2 (ja) | メッセージングプロトコル通信の管理 | |
| CN110413288B (zh) | 应用部署方法、装置、服务器及存储介质 | |
| CN111279314B (zh) | 利用微服务容器在多租户api网关中提供租户隔离 | |
| CN109104467B (zh) | 开发环境构建方法、装置以及平台系统和存储介质 | |
| US10956242B1 (en) | Automating the migration of web service implementations to a service provider system | |
| US8918448B2 (en) | Application component decomposition and deployment | |
| CN112214330A (zh) | 集群中主节点的部署方法、装置及计算机可读存储介质 | |
| WO2022037612A1 (zh) | 提供应用构建服务的方法及应用构建平台、应用部署方法和系统 | |
| CN109729121A (zh) | 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 | |
| CN113691575A (zh) | 通信方法、装置及系统 | |
| WO2020001162A1 (zh) | 容器管理方法、装置和设备 | |
| CN112424749B (zh) | 内存占用有限情况下的按需代码执行 | |
| WO2024174753A1 (zh) | 定制化容器引擎、方法、宿主机及介质 | |
| CN105103125B (zh) | 时钟中断信号的获取方法和nfv装置 | |
| CN112243016B (zh) | 一种中间件平台、终端设备、5g人工智能云处理系统及处理方法 | |
| CN111008254A (zh) | 一种对象创建方法、装置、计算机设备和存储介质 | |
| CN112527377B (zh) | 应用程序生成处理方法、装置、计算机设备和存储介质 | |
| CN114996750A (zh) | 数据共享方法以及装置 | |
| CN119668885B (zh) | 一种开发文件的运行方法、装置、设备及存储介质 | |
| JP5209058B2 (ja) | ソフトウェア・コンポーネントを作成するための方法 | |
| WO2024174737A1 (zh) | 一种容器内进程优先级设置方法及装置 | |
| US12124859B2 (en) | Hybrid multi-tenant framework for reconfiguring software components | |
| US10979439B1 (en) | Identity management for coordinated devices in a networked environment | |
| CN108809715A (zh) | 一种部署管理平台的方法及装置 | |
| JP2021184235A5 (zh) |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |