CN116680040B - 一种容器处理方法、装置、设备、存储介质及程序产品 - Google Patents

一种容器处理方法、装置、设备、存储介质及程序产品 Download PDF

Info

Publication number
CN116680040B
CN116680040B CN202310921238.7A CN202310921238A CN116680040B CN 116680040 B CN116680040 B CN 116680040B CN 202310921238 A CN202310921238 A CN 202310921238A CN 116680040 B CN116680040 B CN 116680040B
Authority
CN
China
Prior art keywords
function
container
request
virtual machine
tree
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
Application number
CN202310921238.7A
Other languages
English (en)
Other versions
CN116680040A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310921238.7A priority Critical patent/CN116680040B/zh
Publication of CN116680040A publication Critical patent/CN116680040A/zh
Application granted granted Critical
Publication of CN116680040B publication Critical patent/CN116680040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • 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
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种容器处理方法、装置、设备、存储介质及程序产品,应用于云技术、大数据、信息推荐和视频领域等容器处理场景中;该容器处理方法包括:响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树,目标函数树为请求函数的全量函数容器所运行的至少一个虚拟机的树形结构;从目标函数树中确定待创建设备的待访问虚拟机,读取待访问虚拟机的待访问地址,待创建设备包括对请求函数进行容器创建的虚拟机;向待创建设备发送待访问地址,以使待创建设备中的虚拟机从待访问地址中获取目标函数容器镜像,并基于目标函数容器镜像创建请求函数对应的目标函数容器。通过本申请,能够提升函数容器创建效率。

Description

一种容器处理方法、装置、设备、存储介质及程序产品
技术领域
本申请涉及云计算领域中的容器处理技术,尤其涉及一种容器处理方法、装置、设备、存储介质及程序产品。
背景技术
在基于函数进行容器处理的过程中,常常采用集中式存储方式;也就是说,采用一台专用服务器存储函数容器镜像,如此,在函数容器创建时存在数据获取效率问题,也就影响了容器创建效率。
发明内容
本申请实施例提供一种容器处理方法、装置、设备、存储介质及程序产品,能够提升函数容器创建效率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种容器处理方法,所述容器处理方法包括:
响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树,其中,所述函数容器创建请求用于请求对所述请求函数进行容器创建,所述目标函数树为所述请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为业务应用中的任一运算功能程序;
从所述目标函数树中确定待创建设备的待访问虚拟机,读取所述待访问虚拟机的待访问地址,其中,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
向所述待创建设备发送所述待访问地址,以使所述待创建设备中的虚拟机从所述待访问地址中获取目标函数容器镜像,并基于所述目标函数容器镜像创建所述请求函数对应的目标函数容器。
本申请实施例还提供了一种容器处理方法,所述容器处理方法包括:
接收请求响应设备发送的待访问地址,其中,所述待访问地址为所述请求响应设备基于目标函数树获取的待创建设备的待访问虚拟机的地址,所述目标函数树为所述请求响应设备基于函数调用关系获得的,且所述目标函数树为请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为函数容器创建请求所请求创建容器的函数,且所述请求函数为业务应用中的任一运算功能程序,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
从所述待访问地址中,获取与所述请求函数对应的目标函数容器镜像;
基于所述目标函数容器镜像,创建所述请求函数对应的目标函数容器。
本申请实施例提供一种第一容器处理装置,所述第一容器处理装置包括:
信息确定模块,用于响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树,其中,所述函数容器创建请求用于请求对所述请求函数进行容器创建,所述目标函数树为所述请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为业务应用中的任一运算功能程序;
地址获取模块,用于从所述目标函数树中确定待创建设备的待访问虚拟机,读取所述待访问虚拟机的待访问地址,其中,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
地址发送模块,用于向所述待创建设备发送所述待访问地址,以使所述待创建设备中的虚拟机从所述待访问地址中获取目标函数容器镜像,并基于所述目标函数容器镜像创建所述请求函数对应的目标函数容器。
在本申请实施例中,第一容器处理装置还包括关系构建模块,用于响应于所述请求函数的首次创建请求,确定基础虚拟机;向所述基础虚拟机发送镜像获取指示,其中,所述镜像获取指示用于指示所述基础虚拟机从函数容器镜像库中获取基础函数容器镜像,所述函数容器镜像库用于存储待部署函数的待部署函数容器镜像,所述待部署函数容器镜像是在响应于函数部署请求时针对所述待部署函数生成的函数容器镜像;基于所述基础虚拟机针对所述镜像获取指示发送的获取完成信息,将所述基础虚拟机确定为目标根节点;基于所述目标根节点构建所述目标函数树;将所述请求函数与所述目标函数树进行对应存储,得到所述函数调用关系。
在本申请实施例中,第一容器处理装置还包括请求响应模块,用于响应于所述请求函数的当前创建请求,获取所述请求函数的容器镜像状态;当所述容器镜像状态为冷启动状态时,确定所述当前创建请求为所述首次创建请求。
在本申请实施例中,所述关系构建模块,还用于将所述容器镜像状态更新为缓存状态,其中,所述缓存状态表示所述虚拟机中包括所述基础函数容器镜像。
在本申请实施例中,所述关系构建模块,还用于当所述目标函数树中的每个所述虚拟机均处于服务响应状态、且活动虚拟机库的活动虚拟机数量低于虚拟机数量阈值时,从空闲虚拟机库中选择所述待创建设备;将所述待创建设备更新至所述目标函数树中,得到更新后的目标函数树;基于所述更新后的目标函数树,更新所述函数调用关系。
在本申请实施例中,所述目标函数树为M叉树,M为正整数;所述关系构建模块,还用于从所述目标函数树对应的待插入节点序列中,选择目标待插入节点,其中,所述待插入节点序列包括所述目标函数树中子节点数量小于M的全量节点;将所述待创建设备确定为所述目标函数树中所述目标待插入节点的子节点,得到所述更新后的目标函数树。
在本申请实施例中,所述关系构建模块,还用于获取所述虚拟机所运行的函数容器的数量;将所述函数容器的数量小于容器数量阈值的所述虚拟机,确定为活动虚拟机;将所述活动虚拟机存储至所述活动虚拟机库中。
在本申请实施例中,所述关系构建模块,还用于从所述目标函数树中确定待删除虚拟机;响应于将所述待删除虚拟机从所述目标函数树中的删除操作,得到当前函数树;获取所述当前函数树的平衡因子,其中,所述平衡因子表示所述当前函数树的左右子树高度差;当所述当前函数树的平衡因子大于平衡阈值时,旋转所述当前函数树的子树,得到平衡树结构,其中,所述平衡树结构的平衡因子小于或等于所述平衡阈值。
本申请实施例提供一种第二容器处理装置,所述第二容器处理装置包括:
地址接收模块,用于接收请求响应设备发送的待访问地址,其中,所述待访问地址为所述请求响应设备基于目标函数树获取的待创建设备的待访问虚拟机的地址,所述目标函数树为所述请求响应设备基于函数调用关系获得的,且所述目标函数树为请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为函数容器创建请求所请求创建容器的函数,且所述请求函数为业务应用中的任一运算功能程序,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
镜像获取模块,用于从所述待访问地址中,获取与所述请求函数对应的目标函数容器镜像;
容器创建模块,用于基于所述目标函数容器镜像,创建所述请求函数对应的目标函数容器。
在本申请实施例中,所述镜像获取模块,还用于接收所述请求响应设备发送的数据请求信息;从所述待访问地址中,确定待获取镜像数据层,其中,所述待获取镜像数据层为镜像数据块序列;从所述镜像数据块序列中,获取与所述数据请求信息对应的镜像数据块子序列;基于所述镜像数据块子序列,得到所述请求函数对应的所述目标函数容器镜像。
在本申请实施例中,当所述镜像数据块序列中的每个镜像数据块为压缩数据块时,所述镜像数据块序列为压缩数据块序列;所述镜像获取模块,还用于将所述镜像数据块子序列,解压为所述请求函数对应的所述目标函数容器镜像。
本申请实施例提供一种请求响应设备,所述请求响应设备包括:
第一存储器,用于存储计算机可执行指令或者计算机程序;
第一处理器,用于执行所述第一存储器中存储的计算机可执行指令或者计算机程序时,实现本申请实施例提供的应用于请求响应设备的容器处理方法。
本申请实施例提供一种待创建设备,所述待创建设备包括:
第二存储器,用于存储计算机可执行指令或者计算机程序;
第二处理器,用于执行所述第二存储器中存储的计算机可执行指令或者计算机程序时,实现本申请实施例提供的应用于待创建设备的容器处理方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令或者计算机程序,所述计算机可执行指令或者计算机程序被第一处理器执行时,实现本申请实施例提供的应用于请求响应设备的容器处理方法;或者,所述计算机可执行指令或者计算机程序被第二处理器执行时,实现本申请实施例提供的应用于待创建设备的容器处理方法。
本申请实施例提供一种计算机程序产品,包括计算机可执行指令或者计算机程序,所述计算机可执行指令或者计算机程序被第一处理器执行时,实现本申请实施例提供的应用于请求响应设备的容器处理方法;或者,所述计算机可执行指令或者计算机程序被第二处理器执行时,实现本申请实施例提供的应用于待创建设备的容器处理方法。
本申请实施例至少具有以下有益效果:通过将每个函数的全量函数容器所运行的至少一个虚拟机构建为函数树,使得在响应函数容器创建请求对请求函数进行容器创建时,能够从函数树中的待访问虚拟机上获取用于创建目标函数容器的目标函数容器镜像;如此,将函数容器的创建过程的数据获取处理分散到了函数树中,减少了数据获取的集中度,从而,能够提升函数容器镜像的获取速度,进而,能够提升函数容器创建效率。
附图说明
图1是本申请实施例提供的容器处理系统的架构示意图;
图2是本申请实施例提供的图1中的一种服务器的结构示意图;
图3是本申请实施例提供的图1中的另一种服务器的结构示意图;
图4是本申请实施例提供的容器处理方法的流程示意图一;
图5是本申请实施例提供的容器处理方法的流程示意图二;
图6是本申请实施例提供的容器处理方法的流程示意图三;
图7是本申请实施例提供的一种示例性的基于函数的流程图;
图8是本申请实施例提供的一种示例性的函数计算服务架构图;
图9是本申请实施例提供的一种示例性的容器配置的交互示意图;
图10是本申请实施例提供的一种示例性的函数树;
图11是本申请实施例提供的一种示例性的平滑操作示意图一;
图12是本申请实施例提供的一种示例性的平滑操作示意图二;
图13是本申请实施例提供的一种示例性的重叠函数树的示意图;
图14是本申请实施例提供的一种示例性的函数容器镜像的层结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本申请实施例所使用的所有的技术和科学术语与所属技术领域的技术人员通常理解的含义相同。本申请实施例中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)人工智能(Artificial Intelligence,AI),是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。在本申请实施例中,容器处理装置可以采用AI确定待创建设备;比如,采用AI模型从活动虚拟机中选择最优活动虚拟机作为待创建设备。另外,本申请实施例中的函数容器创建请求可以是响应于AI领域的请求(比如,基于人工神经网络模型进行信息预测的请求等)生成的。
2)云技术(Cloud technology),是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。本申请实施例所提供的容器处理方法应用在云技术领域,描述了在云技术领域中进行容器部署、容器配置和容器调用等容器处理的过程。
3)容器,一种轻量级的虚拟化技术;可以在操作系统级别上将业务应用的应用程序和该应用程序的依赖项封装在一个可移植的容器中,以提升部署和运行速度;另外,通过在虚拟机内,每个函数都被分配一个单独的容器,使得不同的账户之间的代码、环境以及资源完全隔离。此外,容器可以移植到不同的计算机和云平台,也可以通过容器自动化工具进行自动扩展和管理,因此,容器常常应用在云技术的云计算中;其中,云计算(CloudComputing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。在本申请实施例中,容器可以是函数容器。
4)容器镜像存储库,又称为容器镜像库,用于存储和管理云端业务应用的容器镜像,比如,将容器镜像推送到云端和从云端拉取容器镜像,容器的版本管理和权限控制等。另外,由于容器的启动与容器镜像关联,因此,容器镜像库的性能和可靠性决定着云端业务应用的稳定性和可用性。
5)函数计算服务,一种云计算模型,通过允许开发者将业务应用分解为函数(又称为云函数),从而实现了一种构建和扩展业务应用和服务的方式。在函数计算服务的平台上编写函数对应的业务程序,由服务提供者执行如分配、扩展和管理函数运行所需的后端服务器等任务。本申请实施例提供的容器处理方法,是基于函数技术服务实现的;也就是说,函数部署请求是在接收到编写的函数时生成的。
6)主机虚拟机,简称为虚拟机,是指用于运行函数容器的虚拟机,包括一定数量的CPU、内存和硬盘等资源。在本申请实施例中,将一个函数所对应的至少一个主机虚拟机组织成一个基于函数的树形结构,以实现可扩展的函数容器配置(又称为创建)。
7)函数树,一种采用平衡二叉树组合一个函数对应的至少一个主机虚拟机所获得的树形结构;从而,每个函数对应一个独立的函数树,用于函数容器运行的分布式处理。另外,函数树通过平衡因子触发平衡操作,即为当函数树中任何节点的左右子树高度差大于1时触发平衡操作。
8)热虚拟机,用于基于函数计算服务实现容器处理的电子设备。在本申请实施例中,热虚拟机包括请求响应设备和待创建设备,还包括其他运行函数容器的主机虚拟机,用于通过函数树和按需获取机制提升容器处理效率,降低容器处理资源消耗。
需要说明的是,在基于函数进行容器处理的过程中,常常采用集中式存储方式;也就是说,采用一台专用服务器存储函数容器镜像等数据,如此,当托管函数(简称为函数)的多个虚拟机从后备存储(比如,容器镜像库)中提取相同的容器镜像时,所增加的工作负载会导致网络带宽瓶颈;并且,当容器镜像为自定义容器镜像时,尺寸较大(大于尺寸阈值),比如,容器镜像仓库(Docker Hub)中超过10%的容器大于1吉字节(GB),增加了工作负载;从而,在函数容器创建时存在数据获取效率问题,也就影响了容器配置效率。此外,采用集中式存储方式增加了扩展复杂度,以及在资源受限的虚拟机中无法实现。
另外,为了提升容器处理的效率,还可以将部署在多个边缘云函数计算节点中的多个工作机上的多个函数计算模块以及调度系统,配置为接收对函数计算任务的请求,并且至少根据多个工作机的内存使用状况,将接收到的函数计算任务分配给多个函数计算模块中的一个执行;也就是说,根据多个工作机的内存使用状况来进行函数计算任务的调度,然而,仍然影响了函数容器创建效率。
基于此,本申请实施例提供一种容器处理方法、装置、设备、计算机可读存储介质及计算机程序产品,能够提升函数容器创建效率。下面说明本申请实施例提供的请求响应设备和待创建设备的示例性应用,本申请实施例提供的请求响应设备或待创建设备均可以实施为智能手机、智能手表、笔记本电脑、平板电脑、台式计算机、智能家电、机顶盒、智能车载设备、便携式音乐播放器、个人数字助理、专用消息设备、智能语音交互设备、便携式游戏设备和智能音箱等各种类型的终端,也可以实施为服务器。下面,将说明请求响应设备和待创建设备均实施为服务器时的示例性应用。
参见图1,图1是本申请实施例提供的容器处理系统的架构示意图;如图1所示,为支撑一个容器处理应用,在容器处理系统100中,服务器200通过网络300连接服务器400;其中,网络300可以是广域网或者局域网,又或者是二者的组合,服务器400为函数树中的一个节点,函数树为多个服务器(称为虚拟机)的树形结构。另外,该容器处理系统100中还包括终端500(示例性地示出了终端500-1和终端500-2),用于针对图形界面(示例性地示出了图形界面510-1和图形界面510-2)的操作,通过网络300向服务器200发送操作请求(比如,视频的选择操作,请求模型进行信息预测的操作等)。
服务器200,用于通过网络300接收终端500发送的操作请求,并响应该操作请求,生成函数容器创建请求;响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树,其中,函数容器创建请求用于请求对请求函数进行容器创建,目标函数树为请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,请求函数为业务应用中的任一运算功能程序;基于目标函数树,读取服务器400的待访问虚拟机所对应的待访问地址,其中,服务器400为待对请求函数进行容器创建的虚拟机;通过网络300向服务器400发送待访问地址,以使服务器400从待访问地址中获取目标函数容器镜像,并基于目标函数容器镜像创建请求函数对应的目标函数容器。
服务器400,用于网络300接收服务器200发送的待访问地址,其中,待访问地址为服务器200基于目标函数树获取的服务器400的待访问虚拟机的地址,目标函数树为服务器200基于函数调用关系获得的与请求函数对应的函数树;从待访问地址中,获取与请求函数对应的目标函数容器镜像;基于目标函数容器镜像,创建请求函数对应的目标函数容器。
在一些实施例中,服务器200和服务器400可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不作限制。
参见图2,图2是本申请实施例提供的图1中的一种服务器的结构示意图;如图2所示,服务器200包括:至少一个第一处理器210、第一存储器250和至少一个第一网络接口220。服务器200中的各个组件通过第一总线系统240耦合在一起。可理解,第一总线系统240用于实现这些组件之间的连接通信。第一总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为第一总线系统240。
第一处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(Digital Signal Processor,DSP),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
第一存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。第一存储器250可选地包括在物理位置上远离第一处理器210的一个或多个存储设备。
第一存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(Read Only Memory,ROM),易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。本申请实施例描述的第一存储器250旨在包括任意适合类型的存储器。
在一些实施例中,第一存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
第一操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
第一网络通信模块252,用于经由一个或多个(有线或无线)第一网络接口220到达其他电子设备,示例性的第一网络接口220包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(Universal Serial Bus,USB)等;
在一些实施例中,本申请实施例提供的第一容器处理装置可以采用软件方式实现,图2示出了存储在第一存储器250中的第一容器处理装置255,其可以是程序和插件等形式的软件,包括以下软件模块:信息确定模块2551、地址获取模块2552、地址发送模块2553、关系构建模块2554和请求响应模块2555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
参见图3,图3是本申请实施例提供的图1中的另一种服务器的结构示意图;如图3所示,服务器400包括:至少一个第二处理器410、第二存储器450和至少一个第二网络接口420。服务器400中的各个组件通过第二总线系统440耦合在一起。可理解,第二总线系统440用于实现这些组件之间的连接通信。第二总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为第二总线系统440。
第二处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
第二存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。第二存储器450可选地包括在物理位置上远离第二处理器410的一个或多个存储设备。
第二存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器,易失性存储器可以是随机存取存储器。本申请实施例描述的第二存储器450旨在包括任意适合类型的存储器。
在一些实施例中,第二存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
第二操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
第二网络通信模块452,用于经由一个或多个(有线或无线)第二网络接口420到达其他电子设备,示例性的第二网络接口420包括:蓝牙、无线相容性认证、和通用串行总线等;
在一些实施例中,本申请实施例提供的第二容器处理装置可以采用软件方式实现,图3示出了存储在第二存储器450中的第二容器处理装置455,其可以是程序和插件等形式的软件,包括以下软件模块:地址接收模块4551、镜像获取模块4552和容器创建模块4553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在一些实施例中,本申请实施例提供的第一容器处理装置和第二容器处理装置可以采用硬件方式实现,作为示例,本申请实施例提供的第一容器处理装置和第二容器处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的容器处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(Application Specific Integrated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable Logic Device,PLD)、复杂可编程逻辑器件(Complex Programmable LogicDevice,CPLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或其他电子元件。
下面,将结合本申请实施例提供的请求响应设备和待创建设备的示例性应用和实施,说明本申请实施例提供的容器处理方法。另外,本申请实施例提供的容器处理方法应用于云技术、人工智能、大数据、信息推荐和视频领域等各种容器处理场景。
参见图4,图4是本申请实施例提供的容器处理方法的流程示意图一,其中,图4中各步骤的执行主体是请求响应设备或待创建设备;下面将结合图4示出的步骤进行说明。
步骤101、请求响应设备响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树。
在本申请实施例中,当请求响应设备接收到函数容器创建请求时,响应于该函数容器创建请求,能够获得函数容器创建请求所请求创建函数容器的函数,即为请求函数;而请求响应设备预先获得了函数调用关系,该函数调用关系表示各个函数分别对应的各个函数树;从而,请求响应设备将请求函数与该函数调用关系中的各个函数一一进行匹配,并将与请求函数匹配的函数所对应的函数树确定为请求函数的函数树,这里,将请求函数的函数树称为目标函数树。
需要说明的是,函数容器创建请求是在请求调用请求函数时接收到的,函数容器创建请求用于请求对请求函数进行容器创建。在函数调用关系中,一个函数对应一棵函数树;其中,函数是指计算机程序中的函数,为业务应用中的任一运算功能程序;函数树为函数的全量函数容器所运行的至少一个虚拟机的树形结构,比如,多叉树,平衡二叉树等,另外,在函数树中,每个节点为一个虚拟机,一个函数对应至少一个函数容器,每个函数容器运行在一个虚拟机上,从而,一个函数的全量函数容器运行在至少一个虚拟机上。另外,一个虚拟机可以运行不同函数的函数容器。
步骤102、请求响应设备从目标函数树中确定待创建设备的待访问虚拟机,读取待访问虚拟机的待访问地址。
在本申请实施例中,请求响应设备获得了请求函数的目标函数树之后,表示请求函数的基础函数容器镜像位于目标函数树中的虚拟机上;从而,请求响应设备能够从目标函数树中的虚拟机处获得用于为请求函数创建函数容器的镜像数据。这里,请求响应设备从目标函数树中确定与待创建设备对等的上游节点,并将所确定的对等的上游节点确定为待访问虚拟机,以及将待访问虚拟机的镜像存储地址确定为待访问地址。这里,请求响应设备可以基于待访问虚拟机对应的元数据中的镜像清单,确定待访问地址。
需要说明的是,当待创建设备为目标函数树之外的虚拟机时,请求响应设备将待创建设备更新至目标函数树中,并将更新后的目标函数树中的待创建设备的父节点作为待访问虚拟机。其中,待创建设备包括对请求函数进行函数容器创建的虚拟机;或者说,待创建设备即为虚拟机,且该虚拟机用于针对请求函数创建函数容器。
步骤103、请求响应设备向待创建设备发送待访问地址。
在本申请实施例中,由于请求函数待在待创建设备上进行函数容器的创建,从而,请求响应设备将待访问地址发送至待创建设备,以使待创建设备中的虚拟机从待访问地址中获取目标函数容器镜像,并基于目标函数容器镜像创建请求函数对应的目标函数容器。
需要说明的是,当请求响应设备向待创建设备发送待访问地址之后,待创建设备也就接收到了该待访问地址;其中,待访问地址为请求响应设备基于目标函数树获取的待创建设备的待访问虚拟机对应的地址,目标函数树为请求响应设备基于函数调用关系获得的与请求函数对应的函数树,请求函数为函数容器创建请求所请求创建函数容器的函数。
步骤104、待创建设备从待访问地址中,获取与请求函数对应的目标函数容器镜像。
在本申请实施例中,待访问地址所对应的位置中存储着待获取的镜像数据,从而,待创建设备在获得了待访问地址之后,访问该待访问地址,以从待访问地址中获取与请求函数对应的目标函数容器镜像。其中,目标函数容器镜像为用于针对请求函数创建函数容器的镜像数据。
可以理解的是,由请求响应设备响应函数容器创建请求,基于目标函数树确定拉取镜像数据的待访问虚拟机,减少了虚拟机的负载。另外,请求响应设备包括多个请求响应分片,每个请求响应分片用于维护一个函数树,如此,能够提升请求响应的并发性和稳定性。
参见图5,图5是本申请实施例提供的容器处理方法的流程示意图二,其中,图5中各步骤的执行主体是请求响应设备或待创建设备;如图5所示,步骤104可通过步骤1041至步骤1044实现,也就是说,待创建设备从待访问地址中,获取与请求函数对应的目标函数容器镜像,包括步骤1041至步骤1044,下面对各步骤分别进行说明。
步骤1041、待创建设备接收请求响应设备发送的数据请求信息。
需要说明的是,请求响应设备在响应于函数容器创建请求时,还能够从函数容器创建请求中确定待获取的数据请求信息,该数据请求信息表示待获取的数据长度。
步骤1042、待创建设备从待访问地址中,确定待获取镜像数据层,其中,待获取镜像数据层为镜像数据块序列。
在本申请实施例中,由于待访问地址为待访问虚拟机存储函数容器镜像的位置,从而,待创建设备能够从待访问地址中,确定出待访问虚拟机所存储的函数容器镜像,这里将待访问虚拟机所存储的函数容器镜像称为待获取镜像数据层。
需要说明的是,每个虚拟机中的镜像数据均是按指定块进行存储的,从而,待获取镜像数据层也是基于指定块存储的;这里将待获取镜像数据层中的每个指定块称为镜像数据块,从而待获取镜像数据层为镜像数据块序列。
步骤1043、待创建设备从镜像数据块序列中,获取与数据请求信息对应的镜像数据块子序列。
在本申请实施例中,待创建设备基于数据请求信息从镜像数据块序列中按需获取数据;从而,待创建设备在镜像数据块序列中确定与数据请求信息对应的各个镜像数据块,并将确定出的各个镜像数据块组合为镜像数据块子序列。
需要说明的是,采用偏移表记录每个镜像数据块的偏移量;这里,数据请求信息可以为第一个镜像数据块的索引和最后一个镜像数据块的索引,从而,待创建设备基于偏移表、第一个镜像数据块的索引和最后一个镜像数据块的索引可以确定待获取的数据的偏移信息,最后,基于该偏移信息从镜像数据块序列中,获取与数据请求信息对应的镜像数据块子序列。
步骤1044、待创建设备基于镜像数据块子序列,得到请求函数对应的目标函数容器镜像。
在本申请实施例中,待创建设备可以直接将镜像数据块子序列,确定为目标函数容器镜像。或者,当镜像数据块序列中的每个镜像数据块为压缩数据块时,镜像数据块序列为压缩数据块序列;待创建设备基于镜像数据块子序列,得到请求函数对应的目标函数容器镜像,包括:待创建设备将镜像数据块子序列,解压为请求函数对应的目标函数容器镜像。
需要说明的是,每个虚拟机中的每个镜像数据块可以包括对应的压缩格式的数据块。从而,从任一个虚拟机中获取压缩格式的数据块,能够提升数据获取效率。
可以理解的是,基于块的镜像获取方式,实现了按需获取数据的过程,减少了数据传输量,从而能够提升数据获取效率,进而能够提升函数容器创建效率。另外,由于每个镜像数据块为压缩数据块,减少了镜像数据大小,从而,能够降低镜像数据的吞吐量,提升镜像数据的获取效率。
步骤105、待创建设备基于目标函数容器镜像,创建请求函数对应的目标函数容器。
在本申请实施例中,待创建设备获得了目标函数容器镜像之后,基于函数容器创建请求中携带的数据参数等信息,生成可读写层,将该可读写层与目标函数容器镜像组合,所获得的组合结果即为在待创建设备上针对请求函数创建的目标函数容器。另外,目标函数容器可以为自定义函数容器。
需要说明的是,目标函数容器用于实现请求函数的调用,该调用可以是广告领域中的数据处理触发的,还可以视频领域中的数据处理触发的,又可以是AI领域中的数据处理触发的,等等,本申请实施例对此不作限定。
可以理解的是,通过将每个函数的全量函数容器所运行的至少一个虚拟机构建为函数树,使得在响应函数容器创建请求对请求函数进行容器创建时,能够从函数树中的待访问虚拟机上获取用于创建目标函数容器的目标函数容器镜像;如此,将函数容器的创建过程的数据获取处理分散到了函数树中,减少了数据获取的集中度,从而,能够提升函数容器镜像的获取速度,进而,能够提升函数容器创建效率。另外,采用压缩格式的镜像数据块进行镜像数据的按需拉取,同样能够提升函数容器的创建效率。
参见图6,图6是本申请实施例提供的容器处理方法的流程示意图三,其中,图6中各步骤的执行主体是请求响应设备或待创建设备;如图6所示,在本申请实施中,步骤101之前还包括步骤106至步骤109;也就是说,请求响应设备响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树之前,该容器处理方法包括步骤106至步骤109,下面对各步骤分别进行说明。
步骤106、请求响应设备响应于请求函数的首次创建请求,确定基础虚拟机。
在本申请实施例中,请求响应设备响应于请求函数的首次创建请求,确定用于创建请求函数的首个函数容器的虚拟机,也就获得了基础虚拟机。
步骤107、请求响应设备向基础虚拟机发送镜像获取指示。
需要说明的是,镜像获取指示用于指示基础虚拟机从函数容器镜像库中获取基础函数容器镜像;其中,函数容器镜像库用于存储待部署函数的待部署函数容器镜像,待部署函数容器镜像是在响应于函数部署请求时针对待部署函数生成的函数容器镜像;也就是说,函数部署设备响应于函数部署请求,获得待部署的请求函数,针对请求函数生成函数容器镜像,也就获得了待部署函数容器镜像,接着将待部署函数容器镜像作为基础函数容器镜像存储在函数容器镜像库中。这里,函数容器镜像库用于存储各个函数分别对应的基础镜像层。
步骤108、请求响应设备基于基础虚拟机针对镜像获取指示发送的获取完成信息,将基础虚拟机确定为目标根节点。
在本申请实施例中,在请求响应设备向基础虚拟机发送镜像获取指示之后,基础虚拟机也就获得了镜像获取指示;接着,基础虚拟机根据镜像获取指示,从函数容器镜像库中获取基础函数容器镜像,并在完成基础函数容器镜像的获取时,向请求响应设备发送获取完成信息,使得请求响应设备基于获取完成信息为请求函数构建目标函数树;这里,请求响应设备通过将基础虚拟机确定为根节点来为请求函数构建目标函数树。
步骤109、请求响应设备基于目标根节点构建目标函数树,将请求函数与目标函数树进行对应存储,得到函数调用关系。
需要说明的是,请求响应设备将以基础虚拟机为目标根节点的函数树作为目标函数树,可以是将包括目标根节点的函数树直接作为目标函数树,还可以通过对以基础虚拟机为目标根节点的函数树进行节点的更新来获得目标函数树;这里,请求响应设备将请求函数与目标函数树作为一个对应的函数与函数树,并将至少一个对应的函数与函数树,确定为函数调用关系。
可以理解的是,请求响应设备在响应于每个函数的首次创建请求,为每个函数创建函数容器时,同时为该函数生成对应的函数树,使得后续的函数容器的创建可以基于函数树进行镜像数据的拉取,能够提升函数容器创建效率。
在本申请实施例中,请求响应设备响应于请求函数的首次创建请求,确定基础虚拟机之前,该容器处理方法包括:请求响应设备响应于请求函数的当前创建请求,获取请求函数的容器镜像状态;当容器镜像状态为冷启动状态时,确定当前创建请求为首次创建请求。相应地,请求响应设备响应于请求函数的首次创建请求,确定基础虚拟机之后,该容器处理方法包括:请求响应设备将容器镜像状态更新为缓存状态,其中,缓存状态表示虚拟机中包括基础函数容器镜像。
需要说明的是,当前创建请求为请求响应设备当前收到的用于针对请求函数创建函数容器的请求;请求响应设备基于请求函数的容器镜像状态,确定当前创建请求是请求函数的首次容器创建还是非首次容器创建;其中,容器镜像状态包括两种,一种是冷启动状态,另一种是缓存状态;冷启动状态表示请求函数处于未被调用过的状态,缓存状态表示请求函数至少被调用过一次;从而,请求响应设备能够在容器镜像状态为冷启动状态时,确定当前创建请求为首次创建请求。
在本申请实施例中,步骤101中请求响应设备响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树之后,该数据处理方法包括:当目标函数树中的每个虚拟机均处于服务响应状态、且活动虚拟机库的活动虚拟机数量低于虚拟机数量阈值时,请求响应设备从空闲虚拟机库中选择待创建设备;并将待创建设备更新至目标函数树中,得到更新后的目标函数树;最后,基于更新后的目标函数树,更新函数调用关系。
需要说明的是,活动虚拟机库中的每个活动虚拟机是指运行至少一个函数容器的虚拟机,当活动虚拟机库的活动虚拟机数量低于虚拟机数量阈值,表示活动虚拟机库中的活动虚拟机数量不足,待扩展空闲虚拟机;空闲虚拟机是指未运行函数容器的虚拟机,空闲虚拟机库包括一个或多个空闲虚拟机。这里,请求响应设备将函数调用关系中的请求函数与目标函数的对应信息,修改为请求函数与更新后的目标函数树的对应信息,以实现基于更新后的目标函数树对函数调用关系的更新。此外,服务响应状态为一种忙碌状态,是指所响应的函数调用请求数量大于指定请求数量的状态。
在本申请实施例中,目标函数树为M叉树,M为正整数;此时,请求响应设备将待创建设备更新至目标函数树中,得到更新后的目标函数树,包括:请求响应设备从目标函数树对应的待插入节点序列中,选择目标待插入节点;并将待创建设备确定为目标函数树中目标待插入节点的子节点,得到更新后的目标函数树。
需要说明的是,当目标函数树为M叉树时,表明目标函数树中的每个节点最多包括M个子节点。这里,请求响应设备实时记录每棵函数树中子节点数量小于M的节点,并将目标函数树中子节点数量小于M的节点组合为节点序列,目标函数树的节点序列即为待插入节点序列,因此,待插入节点序列包括目标函数树中子节点数量小于M的全量节点;其中,节点序列中的序列次序可以是函数树的广度遍历的次序,也可以是随机的次序,等等,本申请实施例对此不作限定。
可以理解的是,通过将函数树的子节点数量限定为M,能够降低网络瓶颈问题的出现概率。
在本申请实施例中,当目标函数树中的每个虚拟机均处于服务响应状态、且活动虚拟机库的活动虚拟机数量低于虚拟机数量阈值时,请求响应设备从空闲虚拟机库中选择待创建设备之前,该容器处理方法包括:请求响应设备获取虚拟机所运行的函数容器的数量;并将函数容器的数量小于容器数量阈值的虚拟机,确定为活动虚拟机;最后,将活动虚拟机存储至活动虚拟机库中。
需要说明的是,活动虚拟机为至少运行一个函数容器、且至多运行容器数量阈值个函数容器的虚拟机;如此,在保证虚拟机资源得到充分利用的情况下,限定虚拟机的运行函数容器的数量,以降低虚拟机网络瓶颈问题的出现概率,能够提升虚拟机网络吞吐效率。
在本申请实施例中,目标函数树为平衡二叉树,此时,容器处理方法包括:请求响应设备从目标函数树中确定待删除虚拟机;并响应于将待删除虚拟机从目标函数树中的删除操作,得到当前函数树;接着,获取当前函数树的平衡因子;最后,在当前函数树的平衡因子大于平衡阈值时,旋转当前函数树的子树,得到平衡树结构,其中,平衡树结构的平衡因子小于或等于平衡阈值。
需要说明的是,待删除虚拟机包括以下中的一种或两种:回收虚拟机和故障虚拟机;其中,回收虚拟机是指目标函数树中已被回收的虚拟机,比如,函数容器被删除的虚拟机等;故障虚拟机是指目标函数树中异常无法工作的虚拟机,比如,宕机虚拟机等;目标函数树是指任一待检测函数树,待检测函数树是指待对虚拟机工作状态进行检测的函数树。其中,平衡因子表示当前函数树的最大左右子树高度差。由于在平衡二叉树中,平衡因子小于或等于平衡阈值(比如,1),从而,当请求响应设备确定平衡因子小于或等于平衡阈值时,结束对当前函数树的平衡处理(又称为平衡操作);而当请求响应设备确定平衡因子大于平衡阈值时,对当前函数树进行平衡处理;这里,请求响应设备通过平衡二叉树的旋转方式,实现对当前函数树的平衡处理,该平衡处理用于使得平衡处理后的当前函数树的平衡因子小于或等于平衡阈值;另外,平衡二叉树的旋转方式包括以下中的至少一种:左旋转,右旋转,左右旋转和右左旋转。
可以理解的是,通过对函数树进行平衡操作,使得函数树的每个节点的左右子树高度差均小于或等于平衡阈值,从而,能够降低镜像数据下载时对函数树的读取耗时,提升镜像数据的获取效率。
在本申请实施例中,待创建设备基于镜像数据块子序列,得到请求函数对应的目标函数容器镜像之后,容器处理方法包括:待创建设备基于指定块,对目标函数容器镜像进行块划分,得到待压缩块序列;将待压缩块序列中的每个待压缩块压缩为待获取数据块,得到待获取数据块序列;存储待获取数据块序列,其中,存储的待获取数据块序列用于向待创建设备的子节点传输镜像数据层。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。该示例性应用描述了采用平衡二叉树构建函数的各个函数容器所运行的各个主机虚拟机,以获得函数树,并基于函数树提升函数容器配置(又称为函数容器创建)效率。
需要说明的是,将业务应用的应用程序拆分为比应用程序更细粒度的函数,针对多个调用该函数的应用程序,部署一次该函数即可,如此,能够降低函数部署的资源消耗。另外,定制化的自定义函数容器可以为计算服务应用提升操作系统、版本控制和工具支持的性能,从而,采用自定义函数容器能够应用于机器学习、数据分析和视频处理等场景中。
参见图7,图7是本申请实施例提供的一种示例性的基于函数的流程图;如图7所示,在步骤701中,客户端7-1响应于针对应用程序的函数创建/更新请求,将对应的函数容器镜像推送至容器镜像存储库7-2中。
在步骤702中,客户端7-1向前端网关7-3发送函数调用请求。
在步骤703中,前端网关7-2响应于函数调用请求,检测容器镜像存储库7-2中的函数容器镜像的状态。
需要说明的是,函数容器镜像的状态包括两种情况,第一种状态为缓存状态,是指函数容器镜像已经被下载到主机虚拟机的本地存储中,函数容器镜像可以被直接使用;第二种状态为冷启动状态,是指函数容器镜像待从中心化的容器镜像存储库7-2中下载。
在步骤704中,前端网关7-3基于函数容器镜像的状态向虚拟机集群7-4转发函数调用请求。
在步骤705中,虚拟机集群7-4响应于函数调用请求,在函数容器镜像的状态为冷启动状态时,从容器镜像存储库7-2中提取函数容器镜像,以创建函数容器(示例性地示出了函数容器7-41、函数容器7-42、……),进而基于函数容器完成函数调用服务。
需要说明的是,步骤705的处理效率和可扩展性,能够提升业务工作负载的高弹性。另外,本申请实施例以函数粒度收集工作负载数据,并针对工作负载数据按使用付费定价模型,比如以毫秒级别计费CPU和内存捆绑的资源使用,适合高度波动(波动率大于指定波动值)和不可预测负载的应用程序,降低了函数计算服务成本更低,并且优化了函数容器镜像拉取性能。
参见图8,图8是本申请实施例提供的一种示例性的函数计算服务架构图;如图8所示,该示例性的函数计算服务包括前端网关8-1、调度器8-2(称为请求响应设备)、函数树8-3、虚拟机管理器8-4、容器镜像存储库8-5、虚拟机代理8-6、元数据存储库8-7和客户端8-8,下面分别进行说明。
前端网关8-1,用于对客户端8-8进行身份访问验证;还用于将函数调用请求(称为函数容器创建请求)转发到调度器8-2;还用于对函数容器镜像进行数据格式转换,以提升输入/输出(Input/Output,I/O)效率;还用于向容器镜像存储库8-5推送函数容器镜像,向元数据存储库8-7推送元数据。
需要说明的是,本申请实施例提供了一个基于块的镜像获取机制,该机制采用压缩数据文件格式。先将原始数据分成固定大小的块,并对各个块分别进行压缩,以及采用偏移表记录压缩文件中每个压缩块的偏移量。压缩块由虚拟机代理8-6提取,并最终挂载在函数容器内。另外,本申请实施例按需获取数据。对于待读取函数容器镜像的部分数据的应用程序,基于块的镜像获取机制实现了在细粒度块级别上按需加载(即为懒加载)层数据的处理。首先主机虚拟机对应的工作节点8-61从元数据存储库或上游对等主机虚拟机中下载镜像清单。其次,基于镜像清单计算第一个和最后一个压缩块的索引,并将计算出的索引与偏移表进行适配,以找到偏移信息。最后,基于偏移信息读取压缩块并解压读取到的压缩块,直到已读取的数据量与请求的数据量相匹配。
调度器8-2,用于响应函数调用请求;并且,在响应函数调用的过程中,调度器8-2查询函数树的元数据,以获取与所请求函数相关联的主机虚拟机的地址与端口信息,然后向函数树对应的工作节点发送请求,以启动容器配置过程。这里,容器运行时的配置过程在尚未本地配置容器运行时的函数树中的所有虚拟机上有效地并行化。另外,调度器8-2中集成有函数树管理器,用于通过函数树接口(API,比如,插入API,删除API等)管理函数树8-3。以及,调度器8-2维护着内存映射表(称为函数调用关系),该内存映射表用于记录<函数标识(ID),函数树>键值对,以针对函数标识映射出对应的函数树的数据结构,其中,函数树的数据结构用于管理一组内存对象,包括函数和主机虚拟机的定位信息(比如,主机虚拟机的地址,端口等)。
需要说明的是,调度器8-2中的调度程序被分片为多个调度程序分片,每个调度程序分片用于维护一个内存映射表,记录一个函数标识与其关联的函数树的数据结构的键值对;调度程序分片能够提高可靠性和故障恢复能力,确保调度程序即使出现故障也能够继续正常工作,保障稳定性。另外,在多个调度程序分片之间共享的元数据状态存储在一个中心化的、可共享的地方,以确保全局的元数据状态一致性。
参见图9,图9是本申请实施例提供的一种示例性的容器配置的交互示意图;如图9所示,该示例性的容器配置过程包括步骤901至步骤908,下面对各步骤分别进行说明。
步骤901、调度器9-1更新函数树。
需要说明的是,在调度器9-1响应于函数调用请求时,如果检测到活动虚拟机的数量不足或对应函数树中所有主机虚拟机均处于忙碌状态,那么从空闲主机虚拟机池中选择一个或多个新的主机虚拟机(称为待创建设备),然后,基于该新的主机虚拟机进入容器配置过程。当选择的一个新的主机虚拟机为主机虚拟机9-2时,调度器9-1将主机虚拟机9-2插入到所请求的函数标识相关联的函数树(称为目标函数树)中,并基于主机虚拟机9-2更新该函数树的元数据。然后调度器9-1查询函数树以获取上游对等主机虚拟机(主机虚拟机9-3,称为待访问虚拟机)的地址和端口。
步骤902、调度器9-1向虚拟机9-2发送元数据。
需要说明的是,所发送的元数据包括函数元数据(比如,函数标识)和上游对等主机虚拟机的信息(比如,主机虚拟机地址和端口等)。
步骤903、主机虚拟机9-2基于元数据下载镜像清单。
需要说明的是,主机虚拟机9-2基于元数据从元数据存储下载函数容器镜像的镜像清单,并从镜像清单中获取镜像层的地址(比如,URL,称为待访问地址),并将镜像层的地址持久化到主机虚拟机9-2的本地存储中。
步骤904、主机虚拟机9-2向调度器9-1发送确认信息。
需要说明的是,主机虚拟机9-2向调度器9-1发送确认信息,表示已为请求的函数准备好创建容器运行时。
步骤905、调度器9-1向主机虚拟机9-2发送创建容器的远程过程调用(RemoteProcedure Call,RPC)请求。
步骤906、主机虚拟机9-2从主机虚拟机9-3中拉取镜像数据层(称为目标函数容器镜像)。
需要说明的是,主机虚拟机9-2根据步骤903中获得的镜像清单从主机虚拟机9-3获取镜像数据层。
步骤907、主机虚拟机9-2基于拉取的镜像数据层创建函数容器(称为目标函数容器)。
步骤908、主机虚拟机9-2向调度器9-1发送容器创建成功信息。
在本申请实施例中,调度器定期检测主机虚拟机是否故障;当检测到主机虚拟机宕机时,调度器中的函数树管理器执行平衡操作以修复函数树拓扑结构。
函数树8-3,是指采用平衡二叉树将一个函数对应的多个主机虚拟机连接起来获得的树形结构,每个函数对应一个独立的函数树,即为函数计算服务装置以函数粒度管理函数树;其中,主机虚拟机是指用于运行函数容器的虚拟机,包括CPU、内存和硬盘等资源。另外,函数树8-3包括解耦的数据层和控制层,也就是说,函数树8-3中的每个主机虚拟机中均包括数据层和控制层,从而,各个虚拟机代理之间是等效的;其中,数据层用于实现函数容器配置,函数容器镜像是一个多层的只读文件系统,最底层的数据层是基础函数镜像层,之后的数据层是一系列的增量数据层;每个函数容器镜像都是一个只读文件系统,只能追加新的数据,不能修改已经存在的数据;函数容器镜像中包括可执行文件和依赖的共享库等文件,数据层的每一层对应一个只读文件系统,包含了一些文件或者目录。每一层都是一个增量的镜像修改,从而可以有效地减少重复存储的数据量;控制层用于实现函数容器镜像的下载、存储以及启动以及函数的生命周期管理等。
需要说明的是,函数树8-3是一棵平衡二叉树,除了根节点和叶子节点,每个树节点(即为主机虚拟机)包括一个入边和两个出边;如此,可以有效地限制每个主机虚拟机的并发下载数量,降低网络争用的出现概率。另外,包括N个节点的平衡二叉树的高度为log(N),因此,通过平衡二叉树可以确定最多从顶部到底部遍历log(N)次就可以获得函数容器镜像。
参见图10,图10是本申请实施例提供的一种示例性的函数树;如图10所示,函数树10-1为一个跨越五个主机虚拟机(主机虚拟机10-21至主机虚拟机10-25)的三级函数树,每个主机虚拟包括一个函数容器,比如,与主机虚拟机10-21至主机虚拟机10-25分别对应的函数容器10-31至函数容器10-35。
可以理解的是,通过平衡二叉树将函数容器所运行的主机虚拟机组织起来,能够减少中心管理瓶颈和数据种子瓶颈,动态适应主机虚拟机加入和离开。
在本申请实施例中,函数树的第一个节点为根节点。函数树管理器通过广度优先搜索(Breadth First Search,BFS)统计函数树中每个节点包括的子节点数,并将所有包括0或1个子节点的节点存储在队列中;从而,在插入新节点时,函数树管理器从队列中选择第一个节点作为该待插入新节点的父节点。
在本申请实施例中,调度器8-2还用于回收处于空闲状态的主机虚拟机,因此主机虚拟机包括有限的生命周期。为了实现因回收导致的主机虚拟机下线,函数树管理器调用删除接口来删除已回收的主机虚拟机,并在完成删除操作后重新平衡函数树的结构。在函数树中,当任何节点的左子树和右子树的高度差大于1时,触发平衡操作;这里,函数树通过四种方法来处理不平衡情况,分别是左旋转、右旋转、左右旋转和右左旋转。
参见图11,图11是本申请实施例提供的一种示例性的平滑操作示意图一;如图11所示,处于状态11-11下的函数树11-2包括节点11-21至节点11-28;当函数树管理器检测到节点11-26被回收时,删除节点11-26;节点11-26的删除导致函数树11-2出现不平衡,如状态11-12所示,从而触发平衡操作。函数树管理器将节点11-22标记为新的根节点,将节点11-25标记为节点11-21的左子树,然后执行右旋转操作,如状态11-13所示。
参见图12,图12是本申请实施例提供的一种示例性的平滑操作示意图二;如图12所示,处于状态12-11下的函数树12-2包括节点12-21至节点12-24;当函数树管理器检测到节点12-22被回收时,删除节点12-22;节点12-22的删除导致函数树12-2出现不平衡,如状态12-12所示,从而触发平衡操作。函数树管理器将节点12-24标记为节点12-23的父节点,右旋转节点12-21的右子树节点12-23,旋转结果如状态12-13所示;接着,将节点12-24标记为根节点来执行左旋转,旋转结果如状态12-14所示。
需要说明的是,为了降低资源消耗,一个主机虚拟机可以承载属于同一账号的多个函数;也就是说,可以采用装箱启发式算法,在主机虚拟机的存储资源许可范围内,为一个主机虚拟机尽可能多的分配函数。因此,一个主机虚拟机存在多个重叠函数树的拓扑结构。另外,为了减少网络瓶颈,还可以限制主机虚拟机上的函数数量,比如,最大为20。
参见图13,图13是本申请实施例提供的一种示例性的重叠函数树的示意图;如图13所示,示出了三棵函数树对应的重叠函数树,其中,节点13-1为函数树13-21的根节点,节点13-3既为函数树13-22的根节点又为函数树13-23的根节点。
还需要说明的是,本申请实施例将函数镜像下载和容器配置等任务由调度器8-2执行,使得函数树中的每个节点都可以从其对等父节点获取数据。这里,函数树的根节点没有对等父节点,从而从容器镜像存储库8-5中获取数据;因此,当函数树包括至少一个存储函数容器的活动主机虚拟机时,就可以取消对容器镜像存储库8-5的请求。
此外,属于函数容器镜像的数据层驻留在不同的主机虚拟机上;以及,通过调度器实现对主机虚拟机上的容器处理,简化了主机虚拟机的处理逻辑,提升了容器处理效率。
参见图14,图14是本申请实施例提供的一种示例性的函数容器镜像的层结构示意图;如图14所示,根主机虚拟机14-1中包括函数14-21的基础函数镜像和函数14-22的基础函数镜像;树层级14-31中的每个主机虚拟机中示例性示出了函数14-21的函数容器镜像的数据层1和函数14-22的函数容器镜像的数据层1;树层级14-32中的每个主机虚拟机中示例性示出了函数14-21的函数容器镜像的数据层2和函数14-22的函数容器镜像的数据层2。
虚拟机管理器8-4,用于管理主机虚拟机,比如,在函数调用时,与调度器8-2通信,在活动虚拟机数量不足时,从空闲虚拟机池中扩展出活动虚拟机池。
容器镜像存储库8-5,用于向前端网关8-1提供未压缩的容器镜像,以使前端网关8-1逐块(比如,256兆)压缩容器镜像层,并创建包含相关格式信息的元数据(称为镜像清单),将逐块压缩后的容器镜像写入容器镜像存储库8-5,以及将镜像清单写入元数据存储库8-7中,以提升函数容器镜像的I/O性能。
虚拟机代理8-6,每个主机虚拟机对应一个虚拟机代理8-6,该虚拟机代理用于管理本地的函数容器;虚拟机代理中集成有工作节点8-61,用于执行函数容器配置任务,以及管理主机虚拟机的函数容器,比如,函数容器的启动和关闭;虚拟机代理8-6中的工作节点8-61按需获取函数容器层数据并在相应的主机虚拟机中创建函数容器。
元数据存储库8-7,用于存储函数容器镜像的相关格式信息的元数据。
客户端8-8,用于接收针对函数的相关请求,比如,函数调用请求,并向前端网关8-1转发函数的相关请求。
可以理解的是,本申请实施例提供的容器处理方法通过将容器创建过程的数据拉取分散到函数树中,提升了数据拉取效率;以及本申请实施例提供的按需获取数据方法、以及获取压缩格式的数据,也提升了数据拉取效率;使得可以在数秒内完成数千个虚拟机上的函数容器配置,提升了函数容器的创建效率。
下面继续说明本申请实施例提供的第一容器处理装置255的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在第一存储器250的第一容器处理装置255中的软件模块可以包括:
信息确定模块2551,用于响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树,其中,所述函数容器创建请求用于请求对所述请求函数进行容器创建,所述目标函数树为所述请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为业务应用中的任一运算功能程序;
地址获取模块2552,用于从所述目标函数树中确定待创建设备的待访问虚拟机,读取所述待访问虚拟机的待访问地址,其中,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
地址发送模块2553,用于向所述待创建设备发送所述待访问地址,以使所述待创建设备中的虚拟机从所述待访问地址中获取目标函数容器镜像,并基于所述目标函数容器镜像创建所述请求函数对应的目标函数容器。
在本申请实施例中,第一容器处理装置255还包括关系构建模块2554,用于响应于所述请求函数的首次创建请求,确定基础虚拟机;向所述基础虚拟机发送镜像获取指示,其中,所述镜像获取指示用于指示所述基础虚拟机从函数容器镜像库中获取基础函数容器镜像,所述函数容器镜像库用于存储待部署函数的待部署函数容器镜像,所述待部署函数容器镜像是在响应于函数部署请求时针对所述待部署函数生成的函数容器镜像;基于所述基础虚拟机针对所述镜像获取指示发送的获取完成信息,将所述基础虚拟机确定为目标根节点;基于所述目标根节点构建所述目标函数树;将所述请求函数与所述目标函数树进行对应存储,得到所述函数调用关系。
在本申请实施例中,第一容器处理装置255还包括请求响应模块2555,用于响应于所述请求函数的当前创建请求,获取所述请求函数的容器镜像状态;当所述容器镜像状态为冷启动状态时,确定所述当前创建请求为所述首次创建请求。
在本申请实施例中,所述关系构建模块2554,还用于将所述容器镜像状态更新为缓存状态,其中,所述缓存状态表示所述虚拟机中包括所述基础函数容器镜像。
在本申请实施例中,所述关系构建模块2554,还用于当所述目标函数树中的每个所述虚拟机均处于服务响应状态、且活动虚拟机库的活动虚拟机数量低于虚拟机数量阈值时,从空闲虚拟机库中选择所述待创建设备;将所述待创建设备更新至所述目标函数树中,得到更新后的目标函数树;基于所述更新后的目标函数树,更新所述函数调用关系。
在本申请实施例中,所述目标函数树为M叉树,M为正整数;所述关系构建模块2554,还用于从所述目标函数树对应的待插入节点序列中,选择目标待插入节点,其中,所述待插入节点序列包括所述目标函数树中子节点数量小于M的全量节点;将所述待创建设备确定为所述目标函数树中所述目标待插入节点的子节点,得到所述更新后的目标函数树。
在本申请实施例中,所述关系构建模块2554,还用于获取所述虚拟机所运行的函数容器的数量;将所述函数容器的数量小于容器数量阈值的所述虚拟机,确定为活动虚拟机;将所述活动虚拟机存储至所述活动虚拟机库中。
在本申请实施例中,所述关系构建模块2554,还用于从所述目标函数树中确定待删除虚拟机;响应于将所述待删除虚拟机从所述目标函数树中的删除操作,得到当前函数树;获取所述当前函数树的平衡因子,其中,所述平衡因子表示所述当前函数树的左右子树高度差;当所述当前函数树的平衡因子大于平衡阈值时,旋转所述当前函数树的子树,得到平衡树结构,其中,所述平衡树结构的平衡因子小于或等于所述平衡阈值。
下面继续说明本申请实施例提供的第二容器处理装置455的实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在第二存储器450的第二容器处理装置455中的软件模块可以包括:
地址接收模块4551,用于接收请求响应设备发送的待访问地址,其中,所述待访问地址为所述请求响应设备基于目标函数树获取的待创建设备的待访问虚拟机的地址,所述目标函数树为所述请求响应设备基于函数调用关系获得的,且所述目标函数树为请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为函数容器创建请求所请求创建容器的函数,且所述请求函数为业务应用中的任一运算功能程序,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
镜像获取模块4552,用于从所述待访问地址中,获取与所述请求函数对应的目标函数容器镜像;
容器创建模块4553,用于基于所述目标函数容器镜像,创建所述请求函数对应的目标函数容器。
在本申请实施例中,所述镜像获取模块4552,还用于接收所述请求响应设备发送的数据请求信息;从所述待访问地址中,确定待获取镜像数据层,其中,所述待获取镜像数据层为镜像数据块序列;从所述镜像数据块序列中,获取与所述数据请求信息对应的镜像数据块子序列;基于所述镜像数据块子序列,得到所述请求函数对应的所述目标函数容器镜像。
在本申请实施例中,当所述镜像数据块序列中的每个镜像数据块为压缩数据块时,所述镜像数据块序列为压缩数据块序列;所述镜像获取模块4552,还用于将所述镜像数据块子序列,解压为所述请求函数对应的所述目标函数容器镜像。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机可执行指令或者计算机程序,该计算机可执行指令或者计算机程序存储在计算机可读存储介质中。请求响应设备的第一处理器从计算机可读存储介质读取该计算机可执行指令或者计算机程序,第一处理器执行该计算机可执行指令或者计算机程序,使得该请求响应设备执行本申请实施例上述的应用于请求响应设备的容器处理方法。待创建设备的第二处理器从计算机可读存储介质读取该计算机可执行指令或者计算机程序,第二处理器执行该计算机可执行指令或者计算机程序,使得该请待创建设备执行本申请实施例上述的应用于待创建设备的容器处理方法。
本申请实施例提供一种计算机可读存储介质,其中存储有计算机可执行指令或者计算机程序,当计算机可执行指令或者计算机程序被第一处理器执行时,将引起第一处理器执行本申请实施例提供的应用于请求响应设备的容器处理方法;或者,当计算机可执行指令或者计算机程序被第二处理器执行时,将引起第二处理器执行本申请实施例提供的应用于请求响应设备的容器处理方法;例如,如图4示出的容器处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,计算机可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,计算机可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(Hyper TextMarkup Language,HTML)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,计算机可执行指令可被部署为在位于一个地点的多个电子设备上执行(此时,位于一个地点的多个电子设备即为请求响应设备和待创建设备),又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行(此时,分布在多个地点且通过通信网络互连的多个电子设备即为请求响应设备和待创建设备)。
可以理解的是,在本申请实施例中,涉及到函数和镜像等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
综上所述,本申请实施例通过将每个函数的全量函数容器所运行的至少一个虚拟机构建为函数树,使得在响应函数容器创建请求对请求函数进行容器创建时,能够从函数树中的待访问虚拟机上获取用于创建目标函数容器的目标函数容器镜像;如此,将函数容器的创建过程的数据获取处理分散到了函数树中,减少了数据获取的集中度,从而,能够提升函数容器镜像的获取速度,进而,能够提升函数容器创建效率。另外,通过基于块的按需获取机制、采用压缩格式压缩数据块、以及采用平衡二叉树构建函数树,降低了网络吞吐量,提升了容器处理效率。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (15)

1.一种容器处理方法,其特征在于,所述方法包括:
响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树,其中,所述函数容器创建请求用于请求对所述请求函数进行容器创建,所述目标函数树为所述请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为业务应用中的任一运算功能程序;
从所述目标函数树中确定待创建设备的待访问虚拟机,读取所述待访问虚拟机的待访问地址,其中,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
向所述待创建设备发送所述待访问地址,以使所述待创建设备中的虚拟机从所述待访问地址中获取目标函数容器镜像,并基于所述目标函数容器镜像创建所述请求函数对应的目标函数容器。
2.根据权利要求1所述的方法,其特征在于,所述响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树之前,所述方法包括:
响应于所述请求函数的首次创建请求,确定基础虚拟机;
向所述基础虚拟机发送镜像获取指示,其中,所述镜像获取指示用于指示所述基础虚拟机从函数容器镜像库中获取基础函数容器镜像,所述函数容器镜像库用于存储待部署函数的待部署函数容器镜像,所述待部署函数容器镜像是在响应于函数部署请求时针对所述待部署函数生成的函数容器镜像;
基于所述基础虚拟机针对所述镜像获取指示发送的获取完成信息,将所述基础虚拟机确定为目标根节点;
基于所述目标根节点构建所述目标函数树;
将所述请求函数与所述目标函数树进行对应存储,得到所述函数调用关系。
3.根据权利要求2所述的方法,其特征在于,所述响应于所述请求函数的首次创建请求,确定基础虚拟机之前,所述方法包括:
响应于所述请求函数的当前创建请求,获取所述请求函数的容器镜像状态;
当所述容器镜像状态为冷启动状态时,确定所述当前创建请求为所述首次创建请求;
所述响应于所述请求函数的首次创建请求,确定基础虚拟机之后,所述方法包括:
将所述容器镜像状态更新为缓存状态,其中,所述缓存状态表示所述虚拟机中包括所述基础函数容器镜像。
4.根据权利要求1所述的方法,其特征在于,所述响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树之后,所述方法包括:
当所述目标函数树中的每个所述虚拟机均处于服务响应状态、且活动虚拟机库的活动虚拟机数量低于虚拟机数量阈值时,从空闲虚拟机库中选择所述待创建设备;
将所述待创建设备更新至所述目标函数树中,得到更新后的目标函数树;
基于所述更新后的目标函数树,更新所述函数调用关系。
5.根据权利要求4所述的方法,其特征在于,所述目标函数树为M叉树,M为正整数;
所述将所述待创建设备更新至所述目标函数树中,得到更新后的目标函数树,包括:
从所述目标函数树对应的待插入节点序列中,选择目标待插入节点,其中,所述待插入节点序列包括所述目标函数树中子节点数量小于M的全量节点;
将所述待创建设备确定为所述目标函数树中所述目标待插入节点的子节点,得到所述更新后的目标函数树。
6.根据权利要求4所述的方法,其特征在于,所述当所述目标函数树中的每个所述虚拟机均处于服务响应状态、且活动虚拟机库的活动虚拟机数量低于虚拟机数量阈值时,从空闲虚拟机库中选择所述待创建设备之前,所述方法包括:
获取所述虚拟机所运行的函数容器的数量;
将所述函数容器的数量小于容器数量阈值的所述虚拟机,确定为活动虚拟机;
将所述活动虚拟机存储至所述活动虚拟机库中。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述目标函数树为平衡二叉树,所述方法包括:
从所述目标函数树中确定待删除虚拟机;
响应于将所述待删除虚拟机从所述目标函数树中的删除操作,得到当前函数树;
获取所述当前函数树的平衡因子,其中,所述平衡因子表示所述当前函数树的左右子树高度差;
当所述当前函数树的平衡因子大于平衡阈值时,旋转所述当前函数树的子树,得到平衡树结构,其中,所述平衡树结构的平衡因子小于或等于所述平衡阈值。
8.一种容器处理方法,其特征在于,所述方法包括:
接收请求响应设备发送的待访问地址,其中,所述待访问地址为所述请求响应设备基于目标函数树获取的待创建设备的待访问虚拟机的地址,所述目标函数树为所述请求响应设备基于函数调用关系获得的,且所述目标函数树为请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为函数容器创建请求所请求创建容器的函数,且所述请求函数为业务应用中的任一运算功能程序,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
从所述待访问地址中,获取与所述请求函数对应的目标函数容器镜像;
基于所述目标函数容器镜像,创建所述请求函数对应的目标函数容器。
9.根据权利要求8所述的方法,其特征在于,所述从所述待访问地址中,获取与所述请求函数对应的目标函数容器镜像,包括:
接收所述请求响应设备发送的数据请求信息;
从所述待访问地址中,确定待获取镜像数据层,其中,所述待获取镜像数据层为镜像数据块序列;
从所述镜像数据块序列中,获取与所述数据请求信息对应的镜像数据块子序列;
基于所述镜像数据块子序列,得到所述请求函数对应的所述目标函数容器镜像。
10.根据权利要求9所述的方法,其特征在于,当所述镜像数据块序列中的每个镜像数据块为压缩数据块时,所述镜像数据块序列为压缩数据块序列;
所述基于所述镜像数据块子序列,得到所述请求函数对应的所述目标函数容器镜像,包括:
将所述镜像数据块子序列,解压为所述请求函数对应的所述目标函数容器镜像。
11.一种第一容器处理装置,其特征在于,所述第一容器处理装置包括:
信息确定模块,用于响应于函数容器创建请求,基于函数调用关系,获取与请求函数对应的目标函数树,其中,所述函数容器创建请求用于请求对所述请求函数进行容器创建,所述目标函数树为所述请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为业务应用中的任一运算功能程序;
地址获取模块,用于从所述目标函数树中确定待创建设备的待访问虚拟机,读取所述待访问虚拟机的待访问地址,其中,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
地址发送模块,用于向所述待创建设备发送所述待访问地址,以使所述待创建设备中的虚拟机从所述待访问地址中获取目标函数容器镜像,并基于所述目标函数容器镜像创建所述请求函数对应的目标函数容器。
12.一种第二容器处理装置,其特征在于,所述第二容器处理装置包括:
地址接收模块,用于接收请求响应设备发送的待访问地址,其中,所述待访问地址为所述请求响应设备基于目标函数树获取的待创建设备的待访问虚拟机的地址,所述目标函数树为所述请求响应设备基于函数调用关系获得的,且所述目标函数树为请求函数的全量函数容器所运行的至少一个虚拟机的树形结构,所述请求函数为函数容器创建请求所请求创建容器的函数,且所述请求函数为业务应用中的任一运算功能程序,所述待创建设备包括对所述请求函数进行容器创建的虚拟机;
镜像获取模块,用于从所述待访问地址中,获取与所述请求函数对应的目标函数容器镜像;
容器创建模块,用于基于所述目标函数容器镜像,创建所述请求函数对应的目标函数容器。
13.一种请求响应设备,其特征在于,所述请求响应设备包括:
第一存储器,用于存储计算机可执行指令或者计算机程序;
第一处理器,用于执行所述第一存储器中存储的计算机可执行指令或者计算机程序时,实现权利要求1至7中任一项所述的容器处理方法。
14.一种待创建设备,其特征在于,所述待创建设备包括:
第二存储器,用于存储计算机可执行指令或者计算机程序;
第二处理器,用于执行所述第二存储器中存储的计算机可执行指令或者计算机程序时,实现权利要求8至10中任一项所述的容器处理方法。
15.一种计算机可读存储介质,存储有计算机可执行指令或者计算机程序,其特征在于,所述计算机可执行指令或者计算机程序被第一处理器执行时,实现权利要求1至7中任一项所述的容器处理方法;或者,所述计算机可执行指令或者计算机程序被第二处理器执行时,实现权利要求8至10中任一项所述的容器处理方法。
CN202310921238.7A 2023-07-26 2023-07-26 一种容器处理方法、装置、设备、存储介质及程序产品 Active CN116680040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310921238.7A CN116680040B (zh) 2023-07-26 2023-07-26 一种容器处理方法、装置、设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310921238.7A CN116680040B (zh) 2023-07-26 2023-07-26 一种容器处理方法、装置、设备、存储介质及程序产品

Publications (2)

Publication Number Publication Date
CN116680040A CN116680040A (zh) 2023-09-01
CN116680040B true CN116680040B (zh) 2024-04-05

Family

ID=87782196

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310921238.7A Active CN116680040B (zh) 2023-07-26 2023-07-26 一种容器处理方法、装置、设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN116680040B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117473330B (zh) * 2023-12-27 2024-03-22 苏州元脑智能科技有限公司 一种数据处理方法、装置、设备及存储介质
CN117591248B (zh) * 2024-01-18 2024-05-03 杭州筋斗腾云科技有限公司 基于容器化虚拟机的终端系统处理方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019095936A1 (zh) * 2017-11-15 2019-05-23 腾讯科技(深圳)有限公司 容器镜像的构建方法、系统、服务器、装置及存储介质
CN113742263A (zh) * 2020-05-29 2021-12-03 上海高德威智能交通系统有限公司 带宽分布确定、程序优化方法及装置、设备
CN115543647A (zh) * 2021-06-30 2022-12-30 花瓣云科技有限公司 一种函数调用方法
CN115827436A (zh) * 2022-11-10 2023-03-21 阿里巴巴(中国)有限公司 数据处理方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761965B2 (en) * 2018-09-28 2020-09-01 Atlassian Pty Ltd. Detecting method calls based on stack trace data
WO2021161069A1 (en) * 2020-02-12 2021-08-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for privacy preserving information exchange
US20230132789A1 (en) * 2021-11-04 2023-05-04 International Business Machines Corporation Optimized prediction of tree ensemble

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019095936A1 (zh) * 2017-11-15 2019-05-23 腾讯科技(深圳)有限公司 容器镜像的构建方法、系统、服务器、装置及存储介质
CN113742263A (zh) * 2020-05-29 2021-12-03 上海高德威智能交通系统有限公司 带宽分布确定、程序优化方法及装置、设备
CN115543647A (zh) * 2021-06-30 2022-12-30 花瓣云科技有限公司 一种函数调用方法
CN115827436A (zh) * 2022-11-10 2023-03-21 阿里巴巴(中国)有限公司 数据处理方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于回调函数的控制流深度模糊模型;沙子涵 等;软件学报;第33卷(第5期);1833-1848 *

Also Published As

Publication number Publication date
CN116680040A (zh) 2023-09-01

Similar Documents

Publication Publication Date Title
CN116680040B (zh) 一种容器处理方法、装置、设备、存储介质及程序产品
CN106888254B (zh) 一种基于Kubernetes的容器云架构及其各模块之间的交互方法
US20210218796A1 (en) Efficient, automated distributed-search methods and systems
CN111324360B (zh) 一种面向边缘计算的容器镜像构建方法和系统
CN102567503B (zh) 用于数据去重复的可扩展流水线
US20190238478A1 (en) Using a template to update a stack of resources
US8812627B2 (en) System and method for installation and management of cloud-independent multi-tenant applications
CN111901294A (zh) 一种构建在线机器学习项目的方法及机器学习系统
US20120296866A1 (en) System and method for implementing on demand cloud database
KR20140100504A (ko) 데이터 송수신 시스템
CN102779185A (zh) 一种高可用分布式全文索引方法
CN112269781B (zh) 数据生命周期管理方法、装置、介质及电子设备
CN111597148B (zh) 用于分布式文件系统的分布式元数据管理方法
CN110347651A (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN111324571A (zh) 一种容器集群管理方法、装置及系统
CN112698921A (zh) 一种逻辑代码运行方法、装置、计算机设备和存储介质
CN103109293A (zh) 一种用户行为处理系统及方法
CN117271460B (zh) 基于科研数字对象语用关系的科研数联网服务方法与系统
US8335215B2 (en) Process data for a data packet
CN107168795A (zh) 基于cpu‑gpu异构复合式并行计算框架的密码子偏差系数模型方法
CN111432006A (zh) 一种轻量级资源虚拟化与分配方法
CN116737363A (zh) 深度学习平台的数据集缓存加速方法、系统、设备及介质
CN112351079B (zh) 一种基于数据盒的空间应用和数据一体化封装系统及方法
CN115686811A (zh) 进程管理方法、装置、计算机设备及存储介质
CN115878121A (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