CN114860203A - 项目创建方法、装置、服务器及存储介质 - Google Patents
项目创建方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN114860203A CN114860203A CN202210429463.4A CN202210429463A CN114860203A CN 114860203 A CN114860203 A CN 114860203A CN 202210429463 A CN202210429463 A CN 202210429463A CN 114860203 A CN114860203 A CN 114860203A
- Authority
- CN
- China
- Prior art keywords
- container
- target
- management system
- item
- project
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开关于一种项目创建方法、装置、服务器及存储介质,属于计算机技术领域,该方法包括:向容器管理系统发送容器创建请求,指示容器管理系统创建用于提供项目运行所需的环境资源的容器;响应于在该容器管理系统的目标节点中成功创建目标容器,在容器队列中添加用于指示目标容器在容器管理系统中的位置的元信息;响应于针对第一项目的项目创建请求,基于该容器队列,在该目标节点中创建该第一项目。通过上述技术方案,使用容器队列来缓冲容器创建需求,从而在进行项目开发时,基于该容器队列即可获取已创建的容器来创建项目,大大降低了等待容器创建完成所耗费的时长,有效提升了项目创建的速度,从而提升了项目开发的效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种项目创建方法、装置、服务器及存储介质。
背景技术
容器技术是一种虚拟化技术,通过将运行应用程序所需的运行环境资源(例如库、框架和依赖项等)打包到便于移植的容器中,能够为容器内的应用程序提供独立的、功能全面的运行环境。
目前,一般通过容器管理系统来创建项目开发所需的容器,以基于容器进行项目开发。例如,容器管理系统可以是开源的容器自动化运维平台Kubernetes,Kubernetes接收到容器创建请求,调度其管理的节点,通过节点拉取容器镜像,以完成容器的创建。
但是,上述技术方案中,Kubernetes调度节点、节点拉取容器镜像以及在节点上完成容器创建的耗时很长,并且,会受到网络速度的限制,导致容器创建的速度很慢,从而影响了项目创建的速度。
发明内容
本公开提供一种项目创建方法、装置、服务器及存储介质,能够有效提升项目创建的速度。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种项目创建方法,该方法包括:
向容器管理系统发送容器创建请求,该容器管理系统包括多个用于运行容器的节点,该容器提供项目运行所需的环境资源;
响应于在该容器管理系统的目标节点中成功创建目标容器,将该目标容器的元信息添加至容器队列中,该元信息指示该目标容器在该容器管理系统中的位置;
响应于针对第一项目的项目创建请求,基于该容器队列,在该容器管理系统的目标节点中创建该第一项目。
在一种可能实施方式中,该项目创建方法还包括:
每隔目标时长,检测该容器队列包括的容器数量;
在该容器数量少于目标数量的情况下,向该容器管理系统发送该容器创建请求,该容器创建请求指示该容器管理系统创建新容器。
在一种可能实施方式中,该响应于针对第一项目的项目创建请求,基于该容器队列,在该容器管理系统的目标节点中创建该第一项目包括:
响应于该项目创建请求,从该容器队列中获取该目标容器的元信息;
基于该目标容器的元信息,在运行在该目标节点中的该目标容器中,创建该第一项目。
在一种可能实施方式中,该目标容器的元信息包括该目标节点的网络地址和该目标容器的标识信息;
该基于该目标容器的元信息,在运行在该目标节点中的该目标容器中,创建该第一项目包括:
基于该目标节点的网络地址,访问该容器管理系统中的该目标节点;
基于该目标容器的标识信息,确定在该目标节点中运行的该目标容器;
在该目标容器中创建该第一项目。
在一种可能实施方式中,在该响应于针对第一项目的项目创建请求,基于该容器队列,在该容器管理系统的目标节点中创建该第一项目之后,该方法还包括:
向该容器管理系统发送该容器创建请求,该容器创建请求指示该容器管理系统创建新容器;
响应于在该容器管理系统中成功创建该新容器,将该新容器的元信息添加至该容器队列。
在一种可能实施方式中,该项目创建方法还包括:
响应于在该容器管理系统的目标节点中成功创建目标容器,访问该目标容器;
在访问该目标容器成功的情况下,将该目标容器的元信息添加至容器队列中。
在一种可能实施方式中,该项目创建方法还包括:
在访问该目标容器失败的情况下,向该容器管理系统发送容器删除指令,该容器删除指令用于指示该容器管理系统删除该目标容器;
重新向容器管理系统发送该容器创建请求。
在一种可能实施方式中,该容器队列包括多个子队列,该子队列对应于容器类型。
在一种可能实施方式中,该响应于在该容器管理系统的目标节点中成功创建目标容器,将该目标容器的元信息添加至容器队列中包括:
响应于在该容器管理系统的目标节点中成功创建目标容器,确定该目标容器的容器类型;
从该容器队列的多个子队列中,确定该目标容器的容器类型对应的目标子队列;
将该目标容器的元信息,添加至该目标子队列中。
在一种可能实施方式中,该响应于针对第一项目的项目创建请求,基于该容器队列,在该容器管理系统的目标节点中创建该第一项目包括:
基于该项目创建请求,确定该第一项目对应的目标容器类型;
从该容器队列的多个子队列中,确定该目标容器类型对应的目标子队列,该目标子队列包括多个属于该目标容器类型的容器的元信息;
基于该目标子队列,确定运行在该目标节点中的、属于该目标容器类型的该目标容器,在该目标容器中创建该第一项目。
根据本公开实施例的第二方面,提供一种项目创建装置,该装置包括:
发送单元,被配置为执行向容器管理系统发送容器创建请求,该容器管理系统包括多个用于运行容器的节点,该容器提供运行项目提供所需的环境资源;
添加单元,被配置为执行响应于在该容器管理系统的目标节点中成功创建目标容器,将该目标容器的元信息添加至容器队列中,该元信息指示该目标容器在该容器管理系统中的位置;
创建单元,被配置为执行响应于针对第一项目的项目创建请求,基于该容器队列,在该容器管理系统的目标节点中创建该第一项目。
在一种可能实施方式中,该项目创建装置还包括:
检测单元,被配置为执行每隔目标时长,检测该容器队列包括的容器数量;
该发送单元,还被配置为执行在该容器数量少于目标数量的情况下,向该容器管理系统发送该容器创建请求,该容器创建请求指示该容器管理系统创建新容器。
在一种可能实施方式中,该创建单元包括:
信息获取子单元,被配置为执行响应于该项目创建请求,从该容器队列中获取该目标容器的元信息;
创建子单元,被配置为执行基于该目标容器的元信息,在运行在该目标节点中的该目标容器中,创建该第一项目。
在一种可能实施方式中,该目标容器的元信息包括该目标节点的网络地址和该目标容器的标识信息;该创建子单元被配置为执行:
基于该目标节点的网络地址,访问该容器管理系统中的该目标节点;
基于该目标容器的标识信息,确定在该目标节点中运行的该目标容器;
在该目标容器中创建该第一项目。
在一种可能实施方式中,该项目创建装置还包括:
该发送单元,被配置为执行向该容器管理系统发送该容器创建请求,该容器创建请求指示该容器管理系统创建新容器;
该添加单元,被配置为执行响应于在该容器管理系统中成功创建该新容器,将该新容器的元信息添加至该容器队列。
在一种可能实施方式中,该项目创建装置还包括:
访问单元,被配置为执行响应于在该容器管理系统的目标节点中成功创建目标容器,访问该目标容器;
该添加单元,被配置为执行访问该目标容器成功的情况下,将该目标容器的元信息添加至容器队列中。
在一种可能实施方式中,该项目创建装置还包括:
删除单元,被配置为执行在访问该目标容器失败的情况下,向该容器管理系统发送容器删除指令,该容器删除指令用于指示该容器管理系统删除该目标容器;
该发送单元,被配置为执行重新向容器管理系统发送该容器创建请求。
在一种可能实施方式中,该容器队列包括多个子队列,该子队列对应于容器类型。
在一种可能实施方式中,该添加单元被配置为执行:
响应于在该容器管理系统的目标节点中成功创建目标容器,确定该目标容器的容器类型;
从该容器队列的多个子队列中,确定该目标容器的容器类型对应的目标子队列;
将该目标容器的元信息,添加至该目标子队列中。
在一种可能实施方式中,该创建单元被配置为执行:
基于该项目创建请求,确定该第一项目对应的目标容器类型;
从该容器队列的多个子队列中,确定该目标容器类型对应的目标子队列,该目标子队列包括多个属于该目标容器类型的容器的元信息;
基于该目标子队列,确定运行在该目标节点中的、属于该目标容器类型的该目标容器,在该目标容器中创建该第一项目。
根据本公开实施例的第三方面,提供一种服务器,该服务器包括:
一个或多个处理器;
用于存储该处理器可执行程序代码的存储器;
其中,该处理器被配置为执行该程序代码,以实现上述的项目创建方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质包括:当该计算机可读存储介质中的程序代码由服务器的处理器执行时,使得服务器能够执行上述的项目创建方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,该计算机程序被服务器的处理器执行时实现上述的项目创建方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种项目创建方法的实施环境示意图;
图2是根据一示例性实施例示出的一种项目创建方法的流程图;
图3是根据一示例性实施例示出的一种项目创建方法的流程图;
图4是根据一示例性实施例示出的一种容器队列的示意图;
图5是根据一示例性实施例示出的一种项目创建装置的框图;
图6是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
需要说明的是,本公开所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的容器镜像、代码文件等都是在充分授权的情况下获取的。
图1是本公开实施例提供的一种项目创建方法的实施环境示意图,参见图1,该实施环境中包括:服务器110、终端120、容器管理系统130和容器镜像仓库140。
其中,服务器110通过为终端120提供项目创建所需的(远程)容器,使得终端120能够在Cloud IDE(Cloud Integrated Development Environment,云端集成开发环境)中进行项目开发。服务器110通过向容器管理系统130发送容器创建请求,指示容器管理系统130从容器镜像仓库140拉取容器镜像。容器管理系统130基于拉取的容器镜像,创建项目运行所需的容器。服务器110基于终端120的项目创建请求,能够获取已创建的容器来创建项目。
其中,容器管理系统130包括多个用于运行容器的节点。在一些实施例中,该容器管理系统130包括和多个用于运行容器的工作节点131和用于管理该多个工作节点的控制节点132。在这种示例下,容器管理系统130的控制节点132响应于该服务器110发送的该容器创建请求,调度工作节点131进行容器创建。工作节点131基于控制节点发送的容器创建任务,到容器镜像仓库140中拉取容器镜像,进行容器的创建,并将创建好的容器启动至可访问状态,也即是,将创建好的容器启动至可用于运行项目的状态。
其中,该容器镜像仓库140用于存储多个容器镜像。在一些实施例中,该容器镜像仓库140是公有仓库,在这种示例下,基于容器镜像仓库140的网络地址即可访问该容器镜像仓库140,进一步地,基于容器镜像的名称和描述等信息,能够从容器镜像仓库140中下载所需的容器镜像。在另一些实施例中,该容器镜像仓库140是私有仓库,在这种示例下,需要基于对应的权限信息来访问该容器镜像仓库140,例如,用于访问容器镜像仓库的账号以及账号密码。
其中,容器镜像是一种静态的只读文件,其包含了容器运行所需的基础资源和配置信息,例如,应用程序代码、运行时、库、和环境变量等。在一些实施例中,容器镜像是可执行的软件包,软件包内封装了应用程序代码及其依赖项。
其中,容器是容器镜像的运行实例,容器能够提供项目运行所需的环境资源。在一些实施例中,容器包括一个或一组应用程序及运行该应用程序所需的环境资源,例如,库、框架和依赖项等。多个容器之间是相互隔离的,基于此,不同容器内的不同应用程序拥有独立的、功能全面的运行环境。
其中,服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式文件系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,上述服务器110的数量可以更多或更少,本公开实施例对此不加以限定。当然,服务器110还可以包括其他功能服务器,以便提供更全面且多样化的服务。
其中,终端120可以运行有支持使用项目创建服务的应用程序。终端120可以为智能手机、智能手表、台式电脑、手提电脑、虚拟现实终端、增强现实终端、无线终端和膝上型便携计算机等设备中的至少一种。终端120具有通信功能,可以与服务器110进行通信,以使用服务器110提供的项目创建服务。终端120可以泛指多个终端中的一个,本实施例仅以终端120来举例说明。本领域技术人员可以知晓,上述终端的数量可以更多或更少。
其中,容器管理系统130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式文件系统。
其中,服务器110与终端120、容器管理系统130之间,可以通过有线或无线通信方式进行直接或间接的连接,本公开实施例对此不作限定。
接下来,基于上述项目创建方法的实施环境,对本公开实施例提供的项目创建方法进行介绍。图2是根据一示例性实施例示出的一种项目创建方法的流程图,如图2所示,该方法用于上述服务器110中,包括以下步骤:
在步骤201中,服务器向容器管理系统发送容器创建请求,该容器管理系统包括多个用于运行容器的节点,该容器提供运行项目提供所需的环境资源。
其中,该容器管理系统、节点、容器以及环境资源的定义参见图1对应的描述,在此不作赘述。
在本公开实施例中,服务器通过向容器管理系统发送容器创建请求,指示该容器管理系统创建容器。在一些实施例中,该容器管理系统创建容器,并将创建好的容器启动至可访问状态,也即是,将创建好的容器启动至可用于运行项目的状态,从而为服务器提供能够直接调用的、运行项目所需的环境资源。
在步骤202中,服务器响应于在该容器管理系统的目标节点中成功创建目标容器,将该目标容器的元信息添加至容器队列中,该元信息指示该目标容器在该容器管理系统中的位置。
在本公开实施例中,该目标节点是该容器管理系统中用于运行容器的工作节点(参见图1对应的描述)。该容器管理系统基于该容器创建请求,在该目标节点中创建该目标容器,并将创建好的该目标容器启动至可用于运行项目的状态。
其中,该元信息能够用于描述和检索该目标容器。例如,该目标容器所在的目标节点的网络地址、该目标容器的名称和该目标容器的版本信息。可选地,该元信息还包括该目标容器对应的容器镜像的获取路径。
其中,该容器队列用于存储已创建的容器的元信息。在一些实施例中,该容器队列存储在该服务器的缓存区域,能够由该服务器进行读写。在一些实施例中,该服务器接收到该容器管理系统返回的该目标容器的元信息,将该目标容器的元信息添加至容器队列中。
可以理解地,相较于容器本身的数据量来说,元信息的数据量较少。因此,服务器仅需存储少量的数据,即可精准地确定该目标容器。进一步地,通过在该容器队列中存储已创建的容器的元信息,服务器即可对多个已创建的容器进行高效的管理和调度。
在步骤203中,服务器响应于针对第一项目的项目创建请求,基于该容器队列,在该容器管理系统的目标节点中创建该第一项目。
其中,该第一项目是指:通过在CloudIDE中运行、调整应用程序代码,实现指定的功能。在本公开实施例中,服务器响应于该项目创建请求,为该第一项目提供项目创建所需的容器,使得该第一项目能够在Cloud IDE中创建、运行并实现后续的功能开发。
在本公开实施例中,该容器队列中的元信息能够作为一种索引信息,用于获取容器管理系统中已创建的容器。服务器基于该容器队列中的该元信息,即可快速地将该目标节点中的该目标容器调度给该第一项目,从而在该目标容器中创建该第一项目。
通过上述技术方案,使用容器队列来缓冲容器创建需求,从而在进行项目开发时,基于该容器队列即可获取已创建的容器来创建项目,大大降低了等待容器创建完成所耗费的时长,有效提升了项目创建的速度,从而提升了项目开发的效率。
上述图2所示仅为本公开的基本流程,接下来将基于图1提供的项目创建方法的实施环境,在图2对应的实施例的基础上,通过介绍服务器110、终端120、容器管理系统130和容器镜像仓库140之间的交互过程,来进一步阐述本公开提供的技术方案。图3是根据一示例性实施例示出的一种项目创建方法的流程图,参见图3,该方法包括:
在步骤301中,服务器每隔目标时长,检测容器队列包括的容器数量。
其中,容器队列和容器的定义参考步骤201至步骤203,在此不作赘述。可以理解地,该容器队列中存储的元信息对应于已创建的容器,基于此,该容器队列中的元信息的数量也即是容器数量。
在一些实施例中,该容器队列存储在该服务器的缓存区域,服务器每隔目标时长,从该缓存区域中读取该容器队列中的元信息的数量。
在一些实施例中,该容器队列包括多个子队列,该子队列对应于容器类型。其中,不同容器类型对应不同的容器功能,例如,该容器类型包括但不限于:1、业务容器,用于运行应用程序;2、临时容器(Ephemeral Container),能够用于调试、排查容器的故障,还能够访问其他容器中的进程。3、初始容器(Initial Container),能够用于在运行应用程序之前初始化所需的配置。4、模块化容器(Sidecar Container),能够用于执行各种辅助性任务,例如,测试其他容器的工作状态,下载或拷贝文件。在一些实施例中,不同的子队列对应于不同的目标时长。可选地,服务器能够根据各种容器类型对应的容器使用情况,确定各个子队列设置对应的目标时长。例如,针对使用频率高的业务容器,设置每隔1秒检测业务容器对应的子队列包括的业务容器数量;针对使用频率低于业务容器的临时容器,设置每隔3秒检测该临时容器对应的子队列包括的临时容器数量。
需要说明的是,上述的容器类型仅为示例性的,本公开实施例对容器类型的划分方式不做限定。
在步骤302中,在容器数量少于目标数量的情况下,服务器向容器管理系统发送容器创建请求。
其中,该容器管理系统的定义参考上图1和图2对应内容中的描述,在此不作赘述。
其中,该目标数量可以是该容器队列的长度,例如,容器队列的长度为20,则目标数量为20;还可以根据容器使用情况以及容器队列的长度进行设置,例如,容器队列的长度为20,在容器使用频率高的情况下,设置目标数量为19,在容器使用频率低的情况下,设置目标数量为10。
在一些实施例中,容器队列包括多个子队列,该子队列对应于容器类型。在这种示例下,服务器能够根据各种容器类型对应的容器使用情况以及各个子队列的长度,分别为各个子队列设置对应的目标数量。例如,使用频率高的业务容器对应的子队列的长度为20,可以设置业务容器对应的目标数量为15;使用频率低于业务容器的临时容器对应的子队列的长度为10,可以设置临时容器对应的目标数量为5。
其中,该容器创建请求用于指示该容器管理系统创建新容器。在一些实施例中,该容器创建请求指示创建的新容器为默认类型,在这种示例下,该容器创建请求指示创建的新容器均为默认类型,且具有相同的默认参数。
在另一些实施例中,该容器创建请求基于任一容器类型对应的子队列触发,在这种示例下,该容器创建请求携带容器类型,以指示容器管理系统创建指定类型的、具有指定参数的新容器。
通过上述技术方案,能够及时地发现容器数量不足的问题,从而请求容器管理系统创建新容器,来保证已创建容器的数量充足,从而能够随时为项目提供可用的容器,提升了项目创建服务的可靠性。
进一步地,针对不同容器类型,设置多个子队列,从而能够根据容器类型对应的容器使用情况设置合适的目标时长,进而能够在及时地检测到容器数量不足的同时,节省不必要的资源浪费。
在一些实施例中,服务器能够为多个终端提供项目创建服务,基于此,服务器通过分析该多个终端对应的多个项目的相关信息,能够确定使用频率较高的常用容器类型以及使用频率较高的常用节点,从而在向容器管理系统发送的容器创建请求中,携带该常用容器类型的信息以及该常用节点的信息,以指示容器管理系统在常用节点中创建属于该常用容器类型的新容器。可选地,该常用节点是指:在预设时间段内使用次数超过阈值的节点。其中,使用节点包括:使用节点中的容器运行项目。
在这种示例下,服务器基于多个终端对应的多个项目所在的节点,确定该多个终端使用节点的情况,从而确定常用节点,例如,该多个终端对应有7个项目,节点1中运行有多个终端对应的2个项目,节点2中运行有该多个终端对应的5个项目,则该节点2为常用节点。确定该常用容器类型的过程与上述确定常用节点的过程类似,在此不做赘述。
通过上述技术方案,根据项目运行的情况,在常用节点中创建常用类型的新容器,能够有效满足项目创建的潜在需求,提升项目创建的效率。
在步骤303中,该容器管理系统中的控制节点响应于该容器创建请求,向目标节点发送容器创建任务。
其中,该容器管理系统和控制节点的定义参考上述图1和图2对应内容中的描述,在此不作赘述。
在本公开实施例中,该容器管理系统包括和多个用于运行容器的工作节点和用于管理该多个工作节点的控制节点。在一些实施例中,该控制节点响应于该容器创建请求,从该多个工作节点中,确定能够用于创建容器的该目标节点,从而向该目标节点发送该容器创建任务,以指示该目标节点创建新节点。
在一些实施例中,该容器创建请求携带容器类型,该控制节点基于该容器创建请求,向该目标节点发送针对该容器类型的容器创建任务,以指示该目标节点创建属于该容器类型的新节点。
在步骤304中,该目标节点基于该容器创建任务,从容器镜像仓库中拉取目标容器的容器镜像。
其中,容器镜像仓库、容器镜像以及拉取容器镜像的原理,请参考图1对应的内容,在此不作赘述。
在一些实施例中,该目标节点基于该容器创建任务,按照默认的容器类型和默认的参数,从容器镜像仓库中拉取该目标容器的容器镜像。
在另一些实施例中,该目标节点基于该容器创建任务,按照指定的容器类型和指定的参数,从容器镜像仓库中拉取该目标容器的容器镜像。
在步骤305中,该目标节点基于该目标容器的容器镜像,创建目标容器,向该控制节点返回创建成功信息,该创建成功信息指示在该容器管理系统的目标节点中成功创建该目标容器。
其中,基于容器镜像创建容器的原理,请参考图1对应的内容,在此不作赘述。
在本公开实施例中,该创建成功信息携带该目标容器的元信息。基于此,服务器能够响应于该创建成功信息,获取该目标容器的元信息。
在步骤306中,该控制节点向该服务器返回该创建成功信息。
在步骤307中,响应于该创建成功信息,服务器将该目标容器的元信息添加至容器队列中,该元信息指示该目标容器在该容器管理系统中的位置。
本步骤307的原理、该元信息的定义请参考步骤202,在此不作赘述。
在本公开实施例中,服务器能够响应于该创建成功信息,将该目标容器的元信息添加至容器队列中。
在一些实施例中,该容器队列包括多个子队列,该子队列对应于容器类型。在这种示例下,服务器响应于该创建成功信息,确定该目标容器的容器类型;进而从该容器队列的多个子队列中,确定该目标容器的容器类型对应的目标子队列;从而将该目标容器的元信息,添加至该目标子队列中。
上述技术方案中,用多个子队列分别对应不同的容器类型,能够有效减少容器队列的长度,提升从容器队列中获取元信息的速度,从而进一步提升了项目创建的速度。
在一些实施例中,服务器响应于该创建成功信息,访问该目标容器,在访问该目标容器成功的情况下,将该目标容器的元信息添加至容器队列中。在另一些实施例中,在访问该目标容器失败的情况下,向该容器管理系统发送容器删除指令,该容器删除指令用于指示该容器管理系统删除该目标容器;基于此,服务器重新向容器管理系统发送该容器创建请求,以指示该容器管理系统重新创建该目标容器。
通过上述技术方案,能够避免容器创建成功但无法访问的情况,也即是,容器创建成功但无法启动至可用于运行项目的状态,降低了容器内部运行故障带来的风险,从而提高了容器的可靠性,进而提升了服务器提供的项目创建服务的可靠性。
上述步骤301至步骤307描述了一种容器创建的过程,服务器基于容器队列来指向多个已创建容器,基于此,本公开实施例根据一示例性实施例提供了一种容器队列的示意图,参见图4,服务器401能够基于容器队列402,获取创建好的容器;在容器队列中的容器数量少于队列长度的情况下,指示容器管理系统403创建新容器,将新创建的容器补充到容器队列402中。
在此基础上,服务器能够基于终端的项目创建需求,为其提供已创建的容器,接下来对基于容器队列进行项目创建的过程进行说明。
在步骤308中,服务器响应于针对第一项目的项目创建请求,从该容器队列中获取该目标容器的元信息。
其中,该第一项目参考步骤203,在此不作赘述。
其中,该项目创建请求用于请求服务器为该第一项目分配运行项目所需的环境资源。在一些实施例中,该容器队列包括的多个已创建的容器,均为默认类型且具有默认参数,在这种示例下,该服务器响应于该项目创建请求,从容器队列中获取该目标容器的元信息,以将该目标容器分配给该第一项目使用。
在另一些实施例中,该容器队列包括多个子队列,该子队列对应于容器类型。在这种示例下,该项目创建请求携带该第一项目的项目信息,该项目信息包括该第一项目对应的容器信息,例如,容器的类型、容器的规格参数以及容器的数量等。基于此,服务器基于该项目创建请求,确定该第一项目对应的目标容器类型;进而从该容器队列的多个子队列中,确定该目标容器类型对应的目标子队列,其中,该目标子队列包括多个属于该目标容器类型的容器的元信息。
在又一些实施例中,该容器队列包括多个子队列,该子队列对应于容器类型。其中,各个子队列设置有分配权重,该分配权重基于子队列所对应容器类型的容器使用情况确定。示例性地,服务器每隔一定时长,统计各种类型的容器被使用的次数,按照各种类型的容器被使用的次数在总容器使用次数中的占比,更新各种类型对应的子队列的分配权重。可选地,该分配权重可以基于该使用该服务器的多个终端对应的容器使用情况来确定,还可以根据该项目创建请求的终端对应的容器使用情况来确定,本公开实施例对此不作限定。
在一些实施例中,服务器能够基于终端的项目运行情况,确定任一终端对应的常用节点及其对应的常用容器类型,其中,该终端对应的常用节点是指:该终端在预设时间段内使用次数超过阈值的节点;该终端对应的常用容器类型是指:该终端在预设时间段内使用次数超过阈值的容器对应的容器类型。(参考步骤302中确定常用节点和常用容器类型的过程)。基于此,服务器响应于针对第一项目的项目创建请求,获取该第一项目对应的第一终端的常用节点和常用容器类型,从而优先为该第一项目调度运行在该常用节点中属于该常用容器类型的目标容器。
通过上述技术方案,根据项目运行的情况来分析各个终端对项目创建的潜在需求,从而能够为不同的使用方提供符合其项目创建需求的个性化服务,进一步提升了项目创建的效率。
在步骤309中,服务器基于该目标容器的元信息,在运行在该目标节点中的该目标容器中,创建该第一项目。
在本公开实施例中,该元信息是该目标容器创建时确定的信息,能够用于描述和检索该目标容器。服务器基于该目标容器的元信息,即可连接到该目标容器,从而将该目标容器分配该第一项目使用。可选地,该服务器通过将该目标容器的端口映射为该第一项目的终端对应的端口,完成分配容器的过程。
在一些实施例中,该目标容器的元信息包括该目标节点的网络地址和该目标容器的标识信息。服务器基于该目标节点的网络地址,能够访问该容器管理系统中的该目标节点,从而基于该目标容器的标识信息,确定在该目标节点中运行的该目标容器,进而在该目标容器中创建该第一项目。
在另一些实施例中,该目标节点上运行有多个不同类型的容器,该第一项目对应于目标容器类型的容器。在这种示例下,服务器基于从该目标容器类型对应的目标子队列中确定的该目标容器的元信息,确定运行在该目标节点中的、属于该目标容器类型的该目标容器,从而在该目标容器中创建该第一项目。
在一些实施例中,该项目创建请求携带该第一项目的项目信息,该项目信息包括该第一项目的代码信息,该代码信息指示该第一项目对应的代码文件存储的位置,例如,存放代码文件的项目仓库的网络地址。服务器通过向该目标容器发送该第一项目的项目信息,指示该目标容器将该第一项目对应的代码文件下载至该目标容器中,从而在目标容器中完成该第一项目的创建。
通过上述技术方案,能够快速完成第一项目的创建,无需耗费时间等待容器创建完成,有效提升了项目创建的速度。
进一步地,针对项目进行个性化的容器分配,能够进一步提升项目开发的效率。
在一些实施例中,由于该第一项目的创建占用了该目标容器,因此,为了保持容器队列中的容器数量的充足,服务器向该容器管理系统发送容器创建请求,以指示该容器管理系统创建新容器,该过程包括以下步骤1至步骤2:
在步骤1中,服务器向该容器管理系统发送容器创建请求,该容器创建请求指示该容器管理系统创建新容器。
本步骤发送的容器创建请求与步骤302同理,在此不作赘述。
在步骤2中,服务器响应于在该容器管理系统中成功创建该新容器,将该新容器的元信息添加至该容器队列。
本步骤与步骤307同理,在此不作赘述。
在一些实施例中,若执行完上述步骤1之后,服务器检测到该容器队列中的容器数量少于目标数量,则该服务器等待容器管理系统反馈容器创建结果之后,再次检测该容器队列中的容器数量,例如,该容器管理系统中成功创建新容器,服务器首先将该新容器的元信息添加至该容器队列,再检测该容器队列中的容器数量是否少于目标数量。
通过本公开实施例提供的技术方案,使用容器队列来缓冲容器创建需求,从而在进行项目开发时,基于该容器队列即可获取已创建的容器来创建项目,大大降低了等待容器创建完成所耗费的时长,有效提升了项目创建的速度,从而提升了项目开发的效率。
进一步地,通过设置多个容器类型对应的子队列,能够灵活地为项目创建提供丰富的容器选项,在有效提升项目创建速度的同时,也提升了本公开实施例的项目创建方法面对不同业务场景时的适用性。
图5是根据一示例性实施例示出的一种项目创建装置的框图。参照图5,该装置包括:
发送单元501,被配置为执行向容器管理系统发送容器创建请求,该容器管理系统包括多个用于运行容器的节点,该容器提供运行项目提供所需的环境资源;
添加单元502,被配置为执行响应于在该容器管理系统的目标节点中成功创建目标容器,将该目标容器的元信息添加至容器队列中,该元信息指示该目标容器在该容器管理系统中的位置;
创建单元503,被配置为执行响应于针对第一项目的项目创建请求,基于该容器队列,在该容器管理系统的目标节点中创建该第一项目。
在一种可能实施方式中,该项目创建装置还包括:
检测单元,被配置为执行每隔目标时长,检测该容器队列包括的容器数量;
该发送单元,还被配置为执行在该容器数量少于目标数量的情况下,向该容器管理系统发送该容器创建请求,该容器创建请求指示该容器管理系统创建新容器。
在一种可能实施方式中,该创建单元503包括:
信息获取子单元,被配置为执行响应于该项目创建请求,从该容器队列中获取该目标容器的元信息;
创建子单元,被配置为执行基于该目标容器的元信息,在运行在该目标节点中的该目标容器中,创建该第一项目。
在一种可能实施方式中,该目标容器的元信息包括该目标节点的网络地址和该目标容器的标识信息;该创建子单元被配置为执行:
基于该目标节点的网络地址,访问该容器管理系统中的该目标节点;
基于该目标容器的标识信息,确定在该目标节点中运行的该目标容器;
在该目标容器中创建该第一项目。
在一种可能实施方式中,该项目创建装置还包括:
该发送单元501,被配置为执行向该容器管理系统发送该容器创建请求,该容器创建请求指示该容器管理系统创建新容器;
该添加单元502,被配置为执行响应于在该容器管理系统中成功创建该新容器,将该新容器的元信息添加至该容器队列。
在一种可能实施方式中,该项目创建装置还包括:
访问单元,被配置为执行响应于在该容器管理系统的目标节点中成功创建目标容器,访问该目标容器;
该添加单元502,被配置为执行访问该目标容器成功的情况下,将该目标容器的元信息添加至容器队列中。
在一种可能实施方式中,该项目创建装置还包括:
删除单元,被配置为执行在访问该目标容器失败的情况下,向该容器管理系统发送容器删除指令,该容器删除指令用于指示该容器管理系统删除该目标容器;
该发送单元501,被配置为执行重新向容器管理系统发送该容器创建请求。
在一种可能实施方式中,该容器队列包括多个子队列,该子队列对应于容器类型。
在一种可能实施方式中,该添加单元502被配置为执行:
响应于在该容器管理系统的目标节点中成功创建目标容器,确定该目标容器的容器类型;
从该容器队列的多个子队列中,确定该目标容器的容器类型对应的目标子队列;
将该目标容器的元信息,添加至该目标子队列中。
在一种可能实施方式中,该创建单元503被配置为执行:
基于该项目创建请求,确定该第一项目对应的目标容器类型;
从该容器队列的多个子队列中,确定该目标容器类型对应的目标子队列,该目标子队列包括多个属于该目标容器类型的容器的元信息;
基于该目标子队列,确定运行在该目标节点中的、属于该目标容器类型的该目标容器,在该目标容器中创建该第一项目。
通过本公开实施例提供的技术方案,使用容器队列来缓冲容器创建需求,从而在进行项目开发时,基于该容器队列即可获取已创建的容器来创建项目,大大降低了等待容器创建完成所耗费的时长,有效提升了项目创建的速度,从而提升了项目开发的效率。
需要说明的是:上述实施例提供的项目创建装置在创建项目时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的项目创建装置与项目创建方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是根据一示例性实施例示出的一种服务器的框图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)601和一个或多个的存储器602,其中,该一个或多个存储器602中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器601加载并执行以实现上述各个方法实施例提供的项目创建方法中服务器执行的过程。当然,该服务器600还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器600还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括程序代码的计算机可读存储介质,例如包括程序代码的存储器602,上述程序代码可由服务器600的处理器601执行以完成上述项目创建方法。可选地,计算机可读存储介质可以是只读内存(read-only memory,ROM)、随机存取存储器(random access memory),RAM)、只读光盘(compact-disc read-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的项目创建方法。
在一些实施例中,本公开实施例所涉及的计算机程序可被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链系统。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种项目创建方法,其特征在于,所述方法包括:
向容器管理系统发送容器创建请求,所述容器管理系统包括多个用于运行容器的节点,所述容器提供项目运行所需的环境资源;
响应于在所述容器管理系统的目标节点中成功创建目标容器,将所述目标容器的元信息添加至容器队列中,所述元信息指示所述目标容器在所述容器管理系统中的位置;
响应于针对第一项目的项目创建请求,基于所述容器队列,在所述容器管理系统的目标节点中创建所述第一项目。
2.根据权利要求1所述的项目创建方法,其特征在于,所述方法还包括:
每隔目标时长,检测所述容器队列包括的容器数量;
在所述容器数量少于目标数量的情况下,向所述容器管理系统发送所述容器创建请求,所述容器创建请求指示所述容器管理系统创建新容器。
3.根据权利要求1所述的项目创建方法,其特征在于,所述响应于针对第一项目的项目创建请求,基于所述容器队列,在所述容器管理系统的目标节点中创建所述第一项目包括:
响应于所述项目创建请求,从所述容器队列中获取所述目标容器的元信息;
基于所述目标容器的元信息,在运行在所述目标节点中的所述目标容器中,创建所述第一项目。
4.根据权利要求3所述的项目创建方法,其特征在于,所述目标容器的元信息包括所述目标节点的网络地址和所述目标容器的标识信息;
所述基于所述目标容器的元信息,在运行在所述目标节点中的所述目标容器中,创建所述第一项目包括:
基于所述目标节点的网络地址,访问所述容器管理系统中的所述目标节点;
基于所述目标容器的标识信息,确定在所述目标节点中运行的所述目标容器;
在所述目标容器中创建所述第一项目。
5.根据权利要求1所述的项目创建方法,其特征在于,在所述响应于针对第一项目的项目创建请求,基于所述容器队列,在所述容器管理系统的目标节点中创建所述第一项目之后,所述方法还包括:
向所述容器管理系统发送所述容器创建请求,所述容器创建请求指示所述容器管理系统创建新容器;
响应于在所述容器管理系统中成功创建所述新容器,将所述新容器的元信息添加至所述容器队列。
6.根据权利要求1所述的项目创建方法,其特征在于,所述方法还包括:
响应于在所述容器管理系统的目标节点中成功创建目标容器,访问所述目标容器;
在访问所述目标容器成功的情况下,将所述目标容器的元信息添加至容器队列中。
7.一种项目创建装置,其特征在于,所述装置包括:
发送单元,被配置为执行向容器管理系统发送容器创建请求,所述容器管理系统包括多个用于运行容器的节点,所述容器提供运行项目提供所需的环境资源;
添加单元,被配置为执行响应于在所述容器管理系统的目标节点中成功创建目标容器,将所述目标容器的元信息添加至容器队列中,所述元信息指示所述目标容器在所述容器管理系统中的位置;
创建单元,被配置为执行响应于针对第一项目的项目创建请求,基于所述容器队列,在所述容器管理系统的目标节点中创建所述第一项目。
8.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
用于存储所述处理器可执行程序代码的存储器;
其中,所述处理器被配置为执行所述程序代码,以实现如权利要求1至6中任一项所述的项目创建方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的程序代码由服务器的处理器执行时,使得所述服务器能够执行如权利要求1至6中任一项所述的项目创建方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1至权利要求6中任一项所述的项目创建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429463.4A CN114860203A (zh) | 2022-04-22 | 2022-04-22 | 项目创建方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429463.4A CN114860203A (zh) | 2022-04-22 | 2022-04-22 | 项目创建方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860203A true CN114860203A (zh) | 2022-08-05 |
Family
ID=82634320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210429463.4A Pending CN114860203A (zh) | 2022-04-22 | 2022-04-22 | 项目创建方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860203A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301796A (zh) * | 2023-02-15 | 2023-06-23 | 四川省气象探测数据中心 | 一种基于人工智能技术的气象数据分析系统及方法 |
-
2022
- 2022-04-22 CN CN202210429463.4A patent/CN114860203A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301796A (zh) * | 2023-02-15 | 2023-06-23 | 四川省气象探测数据中心 | 一种基于人工智能技术的气象数据分析系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884722B2 (en) | Cross-environment application of tracing information for improved code execution | |
US20230289176A1 (en) | Integration of containers with external elements | |
US11178207B2 (en) | Software version control without affecting a deployed container | |
US11836516B2 (en) | Reducing execution times in an on-demand network code execution system using saved machine states | |
CN108369534B (zh) | 代码执行请求路由 | |
US20200004571A1 (en) | Operating system customization in an on-demand network code execution system | |
CN110413288B (zh) | 应用部署方法、装置、服务器及存储介质 | |
CN113243005A (zh) | 按需网络代码执行系统中的基于性能的硬件仿真 | |
US11842222B2 (en) | Using scripts to bootstrap applications with metadata from a template | |
CN111324571B (zh) | 一种容器集群管理方法、装置及系统 | |
CN105490860A (zh) | 部署应用程序运行环境的方法、装置及系统 | |
CN113296792B (zh) | 存储方法、装置、设备、存储介质和系统 | |
CN111984269A (zh) | 提供应用构建服务的方法及应用构建平台 | |
CN112333096A (zh) | 一种微服务流量调度方法及相关组件 | |
KR101751515B1 (ko) | 테스트 실행 장치, 방법 및 컴퓨터 프로그램 | |
CN111984270A (zh) | 应用部署方法和系统 | |
EP3146426A1 (en) | High-performance computing framework for cloud computing environments | |
CN114860203A (zh) | 项目创建方法、装置、服务器及存储介质 | |
US11681585B2 (en) | Data migration for a shared database | |
US11750451B2 (en) | Batch manager for complex workflows | |
CN113485722A (zh) | 应用商店的应用程序的上架方法、处理方法及计算机设备 | |
CN114860202A (zh) | 项目运行方法、装置、服务器及存储介质 | |
CN107667343B (zh) | 用于加载按需加载资源的系统和方法 | |
CN115309500A (zh) | 云上微服务架构应用部署和运维管理方法及系统 | |
CN114662102A (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 |