CN114721659A - 函数服务处理方法、装置及电子设备 - Google Patents

函数服务处理方法、装置及电子设备 Download PDF

Info

Publication number
CN114721659A
CN114721659A CN202210267570.1A CN202210267570A CN114721659A CN 114721659 A CN114721659 A CN 114721659A CN 202210267570 A CN202210267570 A CN 202210267570A CN 114721659 A CN114721659 A CN 114721659A
Authority
CN
China
Prior art keywords
service
function service
file
development environment
container
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.)
Pending
Application number
CN202210267570.1A
Other languages
English (en)
Inventor
叶胜程
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202210267570.1A priority Critical patent/CN114721659A/zh
Publication of CN114721659A publication Critical patent/CN114721659A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本说明书一个或多个实施例提供一种函数服务处理方法、装置及电子设备,该方法包括:响应于从用于存储镜像的仓库中获取到与集成开发环境对应的第一镜像,基于所述第一镜像创建第一容器;其中,所述第一容器用于运行所述集成开发环境;获取与待构建的函数服务对应的源代码,并获取用于构建与所述函数服务对应的第二镜像的配置文件;基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件;基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中。

Description

函数服务处理方法、装置及电子设备
技术领域
本说明书一个或多个实施例涉及云计算技术领域,尤其涉及一种函数服务处理方法、装置及电子设备。
背景技术
云计算技术的核心是服务化技术。随着云计算技术的持续发展,从最初的基础设施服务化(即IaaS,Infrastructure as a Service,基础设施即服务)技术、平台服务化(即PaaS,Platform as a Service,平台即服务)技术、软件服务化(即SaaS,Software as aService,软件即服务)技术,陆续演化出更多类型的服务化技术,其中一个类型的服务化技术为FaaS技术。
FaaS是Functions as a Service(功能即服务)的缩写,可以广义地理解为功能服务化,也可以解释为函数服务化。使用FaaS时只需要关注代码逻辑,而无需关注服务器资源,因此FaaS也跟Serverless(Serverless computing,无服务器计算)密切相关。无服务器计算提供一种软件系统架构,不需要部署、配置或管理服务器资源,运行代码所需要的服务器资源均由云端平台来提供。
随着FaaS技术的应用越来越广泛,如何便捷地开发基于FaaS技术的服务,使用户在使用该服务时也能享受到无服务器计算带来的便利,也就成为了亟待解决的问题。
发明内容
本说明书提出一种函数服务处理方法,所述方法包括:
响应于从用于存储镜像的仓库中获取到与集成开发环境对应的第一镜像,基于所述第一镜像创建第一容器;其中,所述第一容器用于运行所述集成开发环境;
获取与待构建的函数服务对应的源代码,并获取用于构建与所述函数服务对应的第二镜像的配置文件;
基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件;
基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中。
可选地,所述获取与待构建的函数服务对应的源代码,包括:
通过与所述集成开发环境对应的用户界面,向用户输出与所述函数服务的服务类型对应的代码框架;
获取所述用户填充至所述代码框架中的代码,并基于所述代码和所述代码框架生成与所述函数服务对应的源代码。
可选地,所述获取用于构建与所述函数服务对应的第二镜像的配置文件,包括:
生成与所述函数服务的服务类型对应的配置文件。
可选地,所述基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件,包括:
基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的目标文件;
获取与所述函数服务对应的依赖文件,并将所述目标文件和所述依赖文件确定为与所述函数服务对应的服务文件。
可选地,所述基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中,包括:
如果编译成功,基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中;
所述方法还包括:
如果编译失败,通过与所述集成开发环境对应的用户界面,向用户输出编译失败的提示消息。
可选地,所述方法还包括:
响应于从所述仓库中获取到所述第二镜像,基于所述第二镜像创建第二容器,以对所述函数服务进行部署,并生成对应的部署日志;其中,所述第二容器用于运行所述函数服务;
将预设的服务参数输入至所述函数服务中进行计算,以对所述函数服务进行测试,并生成对应的测试日志;
将所述部署日志和所述测试日志向用户进行可视化展示。
可选地,所述镜像为Docker镜像;所述容器为Docker容器;所述配置文件为Dockerfile文件。
可选地,所述集成开发环境包括基于web的集成开发环境。
本说明书还提出一种函数服务处理装置,所述装置包括:
创建模块,用于响应于从用于存储镜像的仓库中获取到与集成开发环境对应的第一镜像,基于所述第一镜像创建第一容器;其中,所述第一容器用于运行所述集成开发环境;
获取模块,用于获取与待构建的函数服务对应的源代码,并获取用于构建与所述函数服务对应的第二镜像的配置文件;
生成模块,用于基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件;
构建模块,用于基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中。
可选地,所述获取模块具体用于:
通过与所述集成开发环境对应的用户界面,向用户输出与所述函数服务的服务类型对应的代码框架;
获取所述用户填充至所述代码框架中的代码,并基于所述代码和所述代码框架生成与所述函数服务对应的源代码。
可选地,所述获取模块具体用于:
生成与所述函数服务的服务类型对应的配置文件。
可选地,所述生成模块具体用于:
基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的目标文件;
获取与所述函数服务对应的依赖文件,并将所述目标文件和所述依赖文件确定为与所述函数服务对应的服务文件。
可选地,所述构建模块具体用于:
如果编译成功,基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中;
所述装置还包括:
提示模块,用于在编译失败时,通过与所述集成开发环境对应的用户界面,向用户输出编译失败的提示消息。
可选地,所述装置还包括:
部署模块,用于响应于从所述仓库中获取到所述第二镜像,基于所述第二镜像创建第二容器,以对所述函数服务进行部署,并生成对应的部署日志;其中,所述第二容器中运行了所述函数服务;
测试模块,用于将预设的服务参数输入至所述函数服务中进行计算,以对所述函数服务进行测试,并生成对应的测试日志;
展示模块,用于将所述部署日志和所述测试日志向用户进行可视化展示。
可选地,所述镜像为Docker镜像;所述容器为Docker容器;所述配置文件为Dockerfile文件。
可选地,所述集成开发环境包括基于web的集成开发环境。
本说明书还提出一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
本说明书还提出一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
在上述技术方案中,首先,可以预先将与集成开发环境对应的镜像下载到主机中,后续可以通过以容器的方式运行的该集成开发环境,来构建与函数服务对应的镜像。采用这种方式,可以在编码阶段,为用户提供无需在设备上自主安装和更新的集成开发环境;并且,可以在构建阶段,提升该集成开发环境的启动速率和编译效率,从而提升与函数服务对应的镜像的构建速度。
其次,可以在上述集成开发环境中预先设置与待构建的函数服务的服务类型对应的代码框架。采用这种方式,可以在编码阶段,减少用户需要编写的代码量,从而减少函数服务的开发成本。
再次,以容器的方式运行的集成开发环境可以是基于web的集成开发环境,因此可以在编码阶段,由该集成开发环境内置的插件为用户提供额外的多种功能。
最后,在对所构建的函数服务进行部署时,可以预先将与该函数服务对应的镜像下载到主机中,后续可以对以容器的方式运行的该函数服务进行测试,并将与该函数服务对应的部署日志和测试日志向用户进行可视化展示。采用这种方式,可以在部署阶段,减少等待获取与函数服务对应的镜像所耗费的时间,并且可以使用户了解该函数服务的部署过程,根据测试结果对该函数服务进行相应的调整。
附图说明
图1是本说明书一示例性实施例示出的一种Docker软件架构的示意图。
图2是本说明书一示例性实施例示出的一种函数服务处理系统的架构示意图。
图3是本说明书一示例性实施例示出的一种函数服务处理方法的示意图。
图4是本说明书一示例性实施例示出的另一种函数服务处理方法的流程图。
图5是本说明书一示例性实施例示出的一种函数服务处理装置所在电子设备的硬件结构图。
图6是本说明书一示例性实施例示出的一种函数服务处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
在实际应用中,对于FaaS(Functions as a Service,功能即服务)而言,FaaS技术是一种可以实现无服务器计算的技术。使用FaaS时只需要关注代码逻辑,而无需关注服务器资源,因此FaaS也跟Serverless(Serverless computing,无服务器计算)密切相关。无服务器计算提供一种软件系统架构,不需要部署、配置或管理服务器资源,运行代码所需要的服务器资源均由云端平台来提供。
也即,FaaS技术允许用户以功能的形式来构建、运行和管理应用程序,而无需维护自己的软件系统架构。
对于应用程序而言,应用程序的运行通常依赖于底层的操作系统和相关环境。为了提高应用程序的部署效率,减轻用户在部署应用程序时的工作量,通常会遇到需要关注应用程序本身,而复用底层的操作系统和相关环境的问题,例如:在一台设备上安装了操作系统和相关环境,并将应用程序成功部署在该设备上后,如果需要将该应用程序移植到另一台设备上,则希望无需在这另一台设备上也安装该操作系统和该相关环境。在这种情况下,容器技术应运而生。
容器技术是一种内核轻量级的操作系统层虚拟化技术。相关技术中,常用的容器技术通常包括Docker、Kubernetes、CoreOS等。以Docker为例,Docker是一个开源的应用容器引擎,使得可以将应用程序本身的文件和与该应用程序对应的依赖文件打包到一个可移植的镜像中,并将该镜像发布至任何运行Linux操作系统或Windows操作系统的设备上,以实现虚拟化。
对于容器而言,容器是一个相对独立的运行环境。容器完全采用沙箱(Sandbox,也成为了沙盒)机制,相互之间不会有任何接口。此外,在容器内,应尽量减少对外界的影响,例如:针对容器进行资源控制,即主机不能使用容器中的所有资源。
容器包含一个完整的运行环境。除了应用程序本身包含的应用文件之外,运行应用程序所需要的依赖文件等都可以被打包到镜像中。通过打包应用程序本身及其依赖项,底层的操作系统和相关环境可以被抽象出来。
容器有一个独立的文件系统。因为容器使用系统资源,所以不需要在独立的文件系统中有内核相关的代码或工具。只要镜像中的文件集合可用,基于该镜像创建的容器就可以运行。
基于此,用户可以编写用于实现特定功能的代码,并基于这些代码生成应用程序。该应用程序可以在完全由平台管理的容器中运行。其中,该平台通常位于云端。在这种情况下,该应用程序即可被视为FaaS服务(下面称为函数服务)。
下面以Docker为例,对容器技术中的软件架构进行说明。请参考图1,图1是本说明书一示例性实施例示出的一种Docker软件架构的示意图。
如图1所示,Docker客户端(Client)通过命令行工具或其他工具,使用Docker SDK与Docker守护进程(Daemon)通信;
Docker主机(Host)是一个物理或虚拟的设备,用于运行Docker守护进程和Docker容器;
Docker镜像(Images)是用于创建Docker容器的模板;
Docker容器(Container)是独立运行的一个或一组应用程序,是Docker镜像运行时的实体;
Docker仓库(Registry)用于存储Docker镜像。
Docker采用C/S(Client/Sever,客户端-服务器)架构。具体地,可以将Docker客户端视为C/S架构中的客户端,并将Docker主机视为C/S架构中的服务器。在这种情况下,用户可以在Docker客户端中输入Docker的各种命令,而这些命令则会被发送给运行在Docker主机上的Docker守护进程。Docker守护进程负责根据这些命令,实现Docker的各种功能。
除了通过Docker客户端的命令行接口,Docker还提供了与Docker守护进程进行通信的其他方式,例如:通过远程API(Remote API)。用户可以与自定义的应用程序(例如:以C++或Java等编程语言编写的应用程序)进行交互,而这些应用程序则可以通过调用远程API与Docker守护进程进行通信。
请参考图2,图2是本说明书一示例性实施例示出的一种函数服务处理系统的架构示意图。
如图2所示,该系统可以包括网络10、服务器11、若干电子设备,如手机12、手机13和手机14等。
服务器11可以为包含一独立主机的物理服务器,或者该服务器11可以为主机集群承载的虚拟服务器、云服务器等。手机12-14只是用户可以使用的一种类型的电子设备。实际上,用户显然还可以使用诸如下述类型的电子设备:平板设备、笔记本电脑、掌上电脑(PDAs,Personal Digital Assistants)、可穿戴设备(如智能眼镜、智能手表等)等,本说明书一个或多个实施例并不对此进行限制。网络10可以包括多种类型的有线或无线网络。
以Docker为例,Docker客户端或用户自定义的应用程序可以部署在手机12-手机14上,与作为Docker主机的服务器11进行通信。或者,Docker客户端或用户自定义的应用程序可以直接部署在作为Docker主机的服务器11上。
请参考图3,图3是本说明书一示例性实施例示出的一种函数服务处理方法的流程图。
上述函数服务处理方法可以应用于如图2所示的服务器11;服务器11可以作为容器技术中的主机,例如:Docker主机。该函数服务处理方法可以实现与函数服务对应的镜像的构建,包括以下步骤:
步骤301,响应于从用于存储镜像的仓库中获取到与集成开发环境对应的第一镜像,基于所述第一镜像创建第一容器;其中,所述第一容器用于运行所述集成开发环境。
在实际应用中,用户可以通过集成开发环境(Integrated DevelopmentEnvironment,IDE)开发、编译应用程序。其中,集成开发环境是用于提供开发环境的应用程序,一般包括代码编辑器、编译器和用户界面等工具,集成了代码编写功能、编译功能等的一体化应用程序开发软件。
在本实施例中,为了便于用户使用集成开发环境,可以预先基于该集成开发环境构建镜像(可称为第一镜像),并将构建的该第一镜像存储至用于存储镜像的仓库中。后续,上述主机可以响应于从该仓库中获取到该第一镜像,基于该第一镜像创建容器(可称为第一容器);此时,该第一容器中运行的应用程序即为该集成开发环境。在这种情况下,由于可以以容器的方式运行该集成开发环境,因此,无需由用户在设备上自主安装和更新该集成开发环境,而可以通过容器为该集成开发环境提供其适用的操作系统和相关环境。
在实际应用中,如果上述仓库中存储的镜像的数量较少,则可以直接将该仓库部署在上述主机中,以便于该主机从该仓库中获取镜像。
然而,如果上述仓库中存储的镜像的数量较多,则该仓库需要占用较多的存储资源。为了节省上述主机的存储资源,可以将该仓库部署在独立于该主机的其他设备上。在这种情况下,该主机需要与该仓库所在的设备进行通信,以从该仓库中获取镜像。为了减少在该主机上创建上述第一容器之前,等待上述第一镜像从该仓库所在的设备传输到该主机所耗费的时间,可以由该主机预先从该仓库中获取该第一镜像,并将获取到的该第一镜像存储在本地。
在示出的一种实施方式中,上述集成开发环境可以是基于web的集成开发环境(可称为web-IDE),即web-IDE这一应用程序为web应用程序。
对于容器而言,可以将容器为其中运行的web应用程序提供的端口映射到运行了该容器的主机的端口上。在这种情况下,可以通过浏览器访问所映射的该主机的端口,以访问该web应用程序。例如,假设上述第一容器为上述web-IDE提供的端口为5000,该端口映射为上述主机的端口32796,该主机的IP地址为192.168.239.130,则可以通过在浏览器的地址栏中输入192.168.239.130:32796,来访问该web-IDE。
需要说明的是,上述浏览器可以是由上述主机自身提供的浏览器,也可以是由与该主机进行通信的其他设备提供的浏览器,本说明书对此不作限制。
由于上述web-IDE为web应用程序,因此,可以在该web-IDE中内置插件(例如:浏览器插件),供该web-IDE调用,从而使该web-IDE可以为用户提供更多与应用程序开发相关的功能,例如:LSP、Debug等功能。
步骤302,获取与待构建的函数服务对应的源代码,并获取用于构建与所述函数服务对应的第二镜像的配置文件。
在实际应用中,用户在需要构建用于实现特定功能的函数服务时,可以编写用于这些功能的代码,并基于由用户编写的这些代码生成作为该函数服务的应用程序;此时,这些代码即为与该函数服务对应的源代码。
由于函数服务可以是运行在容器中的应用程序,因此,可以基于与用于构建上述函数服务的镜像对应的配置文件,构建与该函数服务对应的镜像,并将构建的该镜像存储至上述仓库中,从而使后续可以基于从该仓库中获取到的该镜像,创建用于运行该函数服务的容器,以实现该函数服务的运行。
在本实施例中,针对待构建的函数服务,上述主机一方面可以获取与该函数服务对应的源代码,另一方面可以获取用于构建与该函数服务对应的镜像(可称为第二镜像)的配置文件。
具体地,一方面,用户可以通过上述集成开发环境提供的用于编写代码的用户界面,输入与上述函数服务对应的源代码。
另一方面,以Docker为例,上述主机可以是Docker主机,上述镜像可以是Docker镜像,上述容器可以是Docker容器,上述仓库可以是Docker仓库。在这种情况下,上述配置文件可以是Dockerfile文件。其中,Dockerfile文件是用来构建镜像的文本文件,Dockerfile文件中的文本内容通常包含构建镜像所需要的命令和说明。
为了在编写与函数服务对应的源代码的方面为用户提供便利,在示出的一种实施方式中,可以预先设置多个代码框架。
对于任意一个代码框架而言,该代码框架可以与函数服务的一个服务类型对应。由于与属于同一个服务类型的函数服务对应的源代码中,通常可以包含较多重复的代码,因此,可以将这部分重复的代码作为与该服务类型对应的代码框架。
后续,可以通过与上述集成开发环境对应的用户界面,向用户输出与待构建的上述函数服务的服务类型对应的代码框架,使得用户可以在该用户界面中,在该代码框架中填入与该函数服务对应的特定的源代码,例如:函数输入参数、函数判断式等。
上述主机在获取到用户填充至上述代码框架中的代码的情况下,可以进一步基于该用户填入的代码和该代码框架生成与上述函数服务对应的源代码。
同理,在示出的一种实施方式中,可以预先设置多个配置文件。
对于任意一个配置文件而言,该配置文件可以与函数服务的一个服务类型对应。由于用于构建与属于同一个服务类型的函数服务对应的镜像的配置文件通常相同或具有较高的相似性,因此,可以针对该服务类型设置对应的配置文件。
后续,上述主机可以生成与待构建的上述函数服务的服务类型对应的配置文件,并将该配置文件确定为用于构建与该函数服务对应的上述第二镜像的配置文件。
步骤303,基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件。
在实际应用中,以采用C语言的Linux操作系统为例,基于源代码生成应用程序通常需要经历两个主要过程。首先,可以对该源代码进行编译,生成与该应用程序对应的目标文件(Object File,通常为.o文件,即文件扩展名为o);后续,可以将生成的该目标文件与该应用程序对应的静态库文件(通常为.a文件,即文件扩展名为a)进行链接,链接后的目标文件可以被视为可执行文件;由于一个应用程序通常包括多个可执行文件和多个正常运行所必需的动态库文件(通常为.so文件,即文件扩展名为so),因此,可以对这些可执行文件和这些动态库文件进行打包,以生成该应用程序。
在本实施例中,上述主机在获取到与待构建的上述函数服务对应的源代码的情况下,可以基于上述集成开发环境对该源代码进行编译,生成与该函数服务对应的服务文件。其中,与该函数服务对应的服务文件可以包括目标文件、可执行文件、动态库文件等。
在示出的一种实施方式中,在基于上述集成开发环境对与待构建的上述函数服务对应的源代码进行编译后,可以生成与该函数服务对应的目标文件。此外,还可以获取与该函数服务对应的依赖文件。其中,与该函数服务对应的依赖文件可以是C语言下的.so文件,也可以是Java语言下的jar包,本说明书对此不作限制。在这种情况下,可以将与该函数服务对应的目标文件,以及与该函数服务对应的依赖文件,均确定为与该函数服务对应的服务文件。
需要说明的是,上述依赖文件可以存储在上述主机中,也可以存储在与该主机进行通信的其他设备中,并预先下载到该主机中,本说明书对此不作限制。
步骤304:基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中。
在本实施例中,上述主机在由上述集成开发环境通过编译生成了与待构建的上述函数服务对应的服务文件,并获取到了用于构建与该函数服务对应的上述第二镜像的配置文件的情况下,可以进一步基于该服务文件和该配置文件构建该第二镜像,并将构建的该第二镜像存储至上述仓库中。
对于上述第二镜像而言,上述主机可以响应于从该仓库中获取到该第二镜像,基于该第二镜像创建容器;此时,该容器中运行的应用程序即为上述函数服务。在这种情况下,由于可以以容器的方式运行该函数服务,因此,无需由用户在设备上自主安装和更新该函数服务,而可以通过容器为该函数服务提供其适用的操作系统和相关环境,从而可以实现无服务器计算。
在示出的一种实施方式中,如果编译成功,则可以直接基于上述服务文件和上述配置文件构建上述第二镜像,并将构建的该第二镜像存储至上述仓库中。
然而,如果编译失败,则可以向用户输出编译失败的提示消息,以提示用户与上述函数服务对应的源代码可能存在问题,或者编译过程中出现异常。例如,可以通过与上述集成开发环境对应的用户界面,向用户输出编译失败的提示消息。
请参考图4,图4是本说明书一示例性实施例示出的另一种函数服务处理方法的流程图。
上述函数服务处理方法可以应用于如图2所示的服务器11;服务器11可以作为容器技术中的主机,例如:Docker主机。该函数服务处理方法可以在构建了与函数服务对应的镜像之后,实现基于该镜像对该函数服务的部署。
需要说明的是,如图4所示的函数服务处理方法中用于对上述函数服务进行部署的主机,与如图3所示的函数服务处理方法中用于对该函数服务进行构建的主机,可以是同一主机,也可以是不同的主机,本说明书对此不作限制。
上述函数服务处理方法可以包括以下步骤:
步骤401:响应于从所述仓库中获取到所述第二镜像,基于所述第二镜像创建第二容器,以对所述函数服务进行部署,并生成对应的部署日志;其中,所述第二容器用于运行所述函数服务。
在本实施例中,上述主机在构建了与上述函数服务对应的上述第二镜像,并将构建的该第二镜像存储至上述仓库中的情况下,可以进一步响应于从该仓库中获取到该第二镜像,基于该第二镜像创建容器(可称为第二容器),即对该函数服务进行部署;此时,该第二容器中运行的应用程序即为该函数服务。
需要说明的是,为了减少在上述主机上创建上述第二容器之前,等待上述第二镜像从上述仓库所在的设备传输到该主机所耗费的时间,可以由该主机预先从该仓库中获取该第二镜像,并将获取到的该第二镜像存储在本地。
除此之外,上述主机还可以对部署过程中产生的数据进行记录,生成对应的部署日志。
步骤402:将预设的服务参数输入至所述函数服务中进行计算,以对所述函数服务进行测试,并生成对应的测试日志。
在本实施例中,可以将预先设置的服务参数输入上述函数服务,由该函数服务基于输入的这些服务参数进行计算,以对该函数服务进行测试。
除此之外,上述主机还可以对测试过程中产生的数据进行记录,生成对应的测试日志。
步骤403:将所述部署日志和所述测试日志向用户进行可视化展示。
在本实施例中,上述主机可以将上述部署日志和上述测试日志向用户进行可视化展示,从而使用户可以了解上述函数服务的部署过程,并根据测试结果对该函数服务进行相应的调整。
需要说明的是,对于某一函数服务而言,上述仓库中可以存储与该函数服务对应的多个版本的镜像。在这种情况下,可以实现针对该函数服务的多版本控制,即可以同时部署多个版本的该函数服务,还可以通过控制由不同版本的该函数服务处理的流量的大小,使得该函数服务可以平稳升级。
在上述实施例示出的技术方案中,首先,可以预先将与集成开发环境对应的镜像下载到主机中,后续可以通过以容器的方式运行的该集成开发环境,来构建与函数服务对应的镜像。采用这种方式,可以在编码阶段,为用户提供无需在设备上自主安装和更新的集成开发环境;并且,可以在构建阶段,提升该集成开发环境的启动速率和编译效率,从而提升与函数服务对应的镜像的构建速度。
其次,可以在上述集成开发环境中预先设置与待构建的函数服务的服务类型对应的代码框架。采用这种方式,可以在编码阶段,减少用户需要编写的代码量,从而减少函数服务的开发成本。
再次,以容器的方式运行的集成开发环境可以是基于web的集成开发环境,因此可以在编码阶段,由该集成开发环境内置的插件为用户提供额外的多种功能。
最后,在对所构建的函数服务进行部署时,可以预先将与该函数服务对应的镜像下载到主机中,后续可以对以容器的方式运行的该函数服务进行测试,并将与该函数服务对应的部署日志和测试日志向用户进行可视化展示。采用这种方式,可以在部署阶段,减少等待获取与函数服务对应的镜像所耗费的时间,并且可以使用户了解该函数服务的部署过程,根据测试结果对该函数服务进行相应的调整。
与前述函数服务处理方法的实施例相对应,本说明书还提供了函数服务处理装置的实施例。
本说明书函数服务处理装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书函数服务处理装置所在电子设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该函数服务处理的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,图6是本说明书一示例性实施例示出的一种函数服务处理装置的框图。
上述函数服务处理装置可以应用于图5所示的电子设备,该电子设备上部署了容器系统。该函数服务处理装置可以包括:
创建模块601,用于响应于从用于存储镜像的仓库中获取到与集成开发环境对应的第一镜像,基于所述第一镜像创建第一容器;其中,所述第一容器用于运行所述集成开发环境;
获取模块602,用于获取与待构建的函数服务对应的源代码,并获取用于构建与所述函数服务对应的第二镜像的配置文件;
生成模块603,用于基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件;
构建模块604,用于基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中。
可选地,所述获取模块602具体用于:
通过与所述集成开发环境对应的用户界面,向用户输出与所述函数服务的服务类型对应的代码框架;
获取所述用户填充至所述代码框架中的代码,并基于所述代码和所述代码框架生成与所述函数服务对应的源代码。
可选地,所述获取模块602具体用于:
生成与所述函数服务的服务类型对应的配置文件。
可选地,所述生成模块603具体用于:
基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的目标文件;
获取与所述函数服务对应的依赖文件,并将所述目标文件和所述依赖文件确定为与所述函数服务对应的服务文件。
可选地,所述构建模块604具体用于:
如果编译成功,基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中;
所述装置还包括:
提示模块605,用于在编译失败时,通过与所述集成开发环境对应的用户界面,向用户输出编译失败的提示消息。
可选地,所述装置还包括:
部署模块606,用于响应于从所述仓库中获取到所述第二镜像,基于所述第二镜像创建第二容器,以对所述函数服务进行部署,并生成对应的部署日志;其中,所述第二容器中运行了所述函数服务;
测试模块607,用于将预设的服务参数输入至所述函数服务中进行计算,以对所述函数服务进行测试,并生成对应的测试日志;
展示模块608,用于将所述部署日志和所述测试日志向用户进行可视化展示。
可选地,所述镜像为Docker镜像;所述容器为Docker容器;所述配置文件为Dockerfile文件。
可选地,所述集成开发环境包括基于web的集成开发环境。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (12)

1.一种函数服务处理方法,所述方法包括:
响应于从用于存储镜像的仓库中获取到与集成开发环境对应的第一镜像,基于所述第一镜像创建第一容器;其中,所述第一容器用于运行所述集成开发环境;
获取与待构建的函数服务对应的源代码,并获取用于构建与所述函数服务对应的第二镜像的配置文件;
基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件;
基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中。
2.根据权利要求1所述的方法,所述获取与待构建的函数服务对应的源代码,包括:
通过与所述集成开发环境对应的用户界面,向用户输出与所述函数服务的服务类型对应的代码框架;
获取所述用户填充至所述代码框架中的代码,并基于所述代码和所述代码框架生成与所述函数服务对应的源代码。
3.根据权利要求1所述的方法,所述获取用于构建与所述函数服务对应的第二镜像的配置文件,包括:
生成与所述函数服务的服务类型对应的配置文件。
4.根据权利要求1所述的方法,所述基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件,包括:
基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的目标文件;
获取与所述函数服务对应的依赖文件,并将所述目标文件和所述依赖文件确定为与所述函数服务对应的服务文件。
5.根据权利要求1所述的方法,所述基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中,包括:
如果编译成功,基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中;
所述方法还包括:
如果编译失败,通过与所述集成开发环境对应的用户界面,向用户输出编译失败的提示消息。
6.根据权利要求1所述的方法,所述方法还包括:
响应于从所述仓库中获取到所述第二镜像,基于所述第二镜像创建第二容器,以对所述函数服务进行部署,并生成对应的部署日志;其中,所述第二容器用于运行所述函数服务;
将预设的服务参数输入至所述函数服务中进行计算,以对所述函数服务进行测试,并生成对应的测试日志;
将所述部署日志和所述测试日志向用户进行可视化展示。
7.根据权利要求1所述的方法,所述镜像为Docker镜像;所述容器为Docker容器;所述配置文件为Dockerfile文件。
8.根据权利要求1所述的方法,所述集成开发环境包括基于web的集成开发环境。
9.一种函数服务处理装置,所述装置包括:
创建模块,用于响应于从用于存储镜像的仓库中获取到与集成开发环境对应的第一镜像,基于所述第一镜像创建第一容器;其中,所述第一容器用于运行所述集成开发环境;
获取模块,用于获取与待构建的函数服务对应的源代码,并获取用于构建与所述函数服务对应的第二镜像的配置文件;
生成模块,用于基于所述集成开发环境对所述源代码进行编译,生成与所述函数服务对应的服务文件;
构建模块,用于基于所述服务文件和所述配置文件构建所述第二镜像,并将所述第二镜像存储至所述仓库中。
10.根据权利要求9所述的装置,所述装置还包括:
部署模块,用于响应于从所述仓库中获取到所述第二镜像,基于所述第二镜像创建第二容器,以对所述函数服务进行部署,并生成对应的部署日志;其中,所述第二容器中运行了所述函数服务;
测试模块,用于将预设的服务参数输入至所述函数服务中进行计算,以对所述函数服务进行测试,并生成对应的测试日志;
展示模块,用于将所述部署日志和所述测试日志向用户进行可视化展示。
11.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至8中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至8中任一项所述的方法。
CN202210267570.1A 2022-03-17 2022-03-17 函数服务处理方法、装置及电子设备 Pending CN114721659A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210267570.1A CN114721659A (zh) 2022-03-17 2022-03-17 函数服务处理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210267570.1A CN114721659A (zh) 2022-03-17 2022-03-17 函数服务处理方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN114721659A true CN114721659A (zh) 2022-07-08

Family

ID=82238243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210267570.1A Pending CN114721659A (zh) 2022-03-17 2022-03-17 函数服务处理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN114721659A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115185561A (zh) * 2022-07-20 2022-10-14 杭州雷数科技有限公司 一种基于Serveless Jenkins的CICD系统和实现方法
CN115562690A (zh) * 2022-12-05 2023-01-03 杭州未名信科科技有限公司 基于Docker容器的算法服务处理方法、装置及介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115185561A (zh) * 2022-07-20 2022-10-14 杭州雷数科技有限公司 一种基于Serveless Jenkins的CICD系统和实现方法
CN115562690A (zh) * 2022-12-05 2023-01-03 杭州未名信科科技有限公司 基于Docker容器的算法服务处理方法、装置及介质
CN115562690B (zh) * 2022-12-05 2023-04-18 杭州未名信科科技有限公司 基于Docker容器的算法服务处理方法、装置及介质

Similar Documents

Publication Publication Date Title
US10409654B2 (en) Facilitating event-driven processing using unikernels
WO2018228211A1 (zh) 应用转换方法、装置及设备
CN107491329B (zh) Docker镜像构建方法、设备、存储介质以及电子装置
US11288055B2 (en) Model-based differencing to selectively generate and deploy images in a target computing environment
US9529630B1 (en) Cloud computing platform architecture
KR102077360B1 (ko) 애플리케이션에 대한 중간 언어 코드로부터 네이티브 코드를 생성하는 기법
US20180373551A1 (en) Systems and methods for using dynamic templates to create application containers
CN114721659A (zh) 函数服务处理方法、装置及电子设备
CN104471557B (zh) 动态语言的优化执行
US11816464B1 (en) Cloud computing platform architecture
CN107943485B (zh) 一种补丁编译平台及补丁编译方法
US11068243B2 (en) Application stack builder based on node features
US11061739B2 (en) Dynamic infrastructure management and processing
CN110140108B (zh) 处理兄弟调用
CN112328301B (zh) 维护运行环境一致性的方法、装置、存储介质及电子设备
US11656864B2 (en) Automatic application of software updates to container images based on dependencies
CN112384290A (zh) 软件开发中的可寻址资产
US11301223B2 (en) Artificial intelligence enabled function logic infusion
CN111580804B (zh) 一种软件项目开发的方法和装置
US10579373B2 (en) Seamless extension porting
CN110727423A (zh) 跨平台开发行动应用程序的方法及其系统
US20220398070A1 (en) Method and system for automatically creating instances of containerized servers
CN115248680A (zh) 软件构建方法、系统、设备、介质和程序产品
US20210103553A1 (en) System and method for caching converted files and compiling computer code from the cache
CN114860202A (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