CN115291964B - 减少无服务器函数启动延迟的机制 - Google Patents
减少无服务器函数启动延迟的机制 Download PDFInfo
- Publication number
- CN115291964B CN115291964B CN202210746712.2A CN202210746712A CN115291964B CN 115291964 B CN115291964 B CN 115291964B CN 202210746712 A CN202210746712 A CN 202210746712A CN 115291964 B CN115291964 B CN 115291964B
- Authority
- CN
- China
- Prior art keywords
- function
- vpc
- server
- computing resource
- user
- 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
Images
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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/45595—Network integration; Enabling network access in virtual machine instances
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种计算机实现方法,用于使用网络架构内的无服务器函数访问虚拟私有云(virtualprivate cloud,VPC)中的用户资源,包括:实例化第一温应用容器,以承载所述无服务器函数,其中,所述第一温应用容器包括运行语言库,而不包括所述无服务器函数的函数代码;实例化虚拟机,以承载端口地址转换(Port Address Translation,PAT)网关,其中,所述PAT网关包括连接到所述VPC的第一接口和连接到所述第一温应用容器的第二接口;响应于检测到用于触发所述无服务器函数的触发事件,将所述无服务器函数的函数代码加载到所述第一温应用容器内;在执行所述第一温应用容器中的所述函数代码的过程中,通过所述PAT网关内的所述第二接口和所述第一接口,将与所述无服务器函数关联的VPC寻址网络报文路由到所述VPC。
Description
本申请是提交中国国家知识产权局的申请号为201980085320.2、发明名称为“减少无服务器函数启动延迟的机制”的中国申请的分案。
技术领域
本发明涉及无服务器计算。一些方面涉及减少无服务器函数启动延迟的机制。
背景技术
无服务器计算与网络架构相关联,其中,网络架构的用户依赖于作为服务提供并由网络提供商管理的网络服务器、网络基础设施和操作系统。通过创建、管理和部署能够按需扩展的应用以及使用网络提供商管理的网络资源,网络架构的用户可以充分利用无服务器计算。
在无服务器计算中,计算平台自动管理和创建底层计算资源,以承载和运行无服务器函数的函数代码。无服务器计算机平台的示例包括亚马逊云服务(Amazon WebService,AWS)Lambda、Google Cloud Functions、Azure Functions等。无服务器计算面临的挑战之一是,用户的无服务器函数何时需要访问用户虚拟私有云(virtual privatecloud,VPC)中的资源(例如,数据库资源、存储资源等)。更具体地,通过无服务器函数访问用户VPC资源的现有技术可能需要数十秒,这不是无服务器计算环境中的最佳延迟。
发明内容
现在描述各种示例,以简单地介绍一些概念,在具体实施方式中会进一步描述这些概念。发明内容并非旨在确定请求保护的主题的关键或必要特征,也并非旨在用于限制请求保护的主题的范围。
根据本发明的第一方面,提供了一种计算机实现方法,用于使用网络架构内的无服务器函数访问虚拟私有云(virtual private cloud,VPC)中的用户资源。所述方法包括:实例化第一温应用容器,以承载所述无服务器函数,其中,所述第一温应用容器包括运行语言库,而不包括所述无服务器函数的函数代码;实例化虚拟机,以承载端口地址转换(PortAddress Translation,PAT)网关,其中,所述PAT网关包括连接到所述VPC的第一接口和连接到所述第一温应用容器的第二接口;响应于检测到用于触发所述无服务器函数的触发事件,将所述无服务器函数的函数代码加载到所述第一温应用容器内;在执行所述第一温应用容器中的所述函数代码的过程中,通过所述PAT网关内的所述第二接口和所述第一接口,将与所述无服务器函数关联的VPC寻址网络报文路由到所述VPC。
根据所述第一方面,在所述方法的第一种实现方式中,将路由项插入到所述第一温应用容器的网络路由表中,其中,所述路由项将所述VPC寻址网络报文的媒体访问控制(media access control,MAC)目的地址修改为所述第二接口的MAC地址。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第二种实现方式中,所述路由项将所述VPC寻址网络报文的MAC目的地址从所述VPC的MAC地址或耦合到所述VPC的虚拟路由器的MAC地址修改为所述第二接口的所述MAC地址。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第三种实现方式中,所述第一温应用容器位于第一子网内,所述VPC位于第二子网内,所述方法还包括:通过所述第二接口,将所述VPC寻址网络报文从所述第一子网中的所述第一温应用容器路由到所述虚拟机。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第四种实现方式中,通过到所述VPC的所述第一接口,将所述VPC寻址网络报文从所述虚拟机路由到所述第二子网中的所述VPC。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第五种实现方式中,接收配置信息,以配置所述无服务器函数;响应于根据所述配置信息确定所述无服务器函数要访问所述VPC,实例化所述虚拟机;在所述虚拟机内,将所述第二接口连接到所述第一温应用容器;在所述虚拟机内,将所述第一接口连接到所述VPC。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第六种实现方式中,所述虚拟机通过网络交换机耦合到所述VPC,所述方法还包括:将路由项插入到所述网络交换机的网络路由表中,其中,所述路由项将所述VPC寻址网络报文的媒体访问控制(media access control,MAC)目的地址修改为与所述第二接口关联的MAC地址。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第七种实现方式中,通过所述PAT网关的所述第二接口,接收与运行在所述第一温应用容器中的所述无服务器函数关联的VPC寻址网络报文和与运行在第二温应用容器中的无服务器函数关联的VPC寻址网络报文。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第八种实现方式中,将源自所述第一温应用容器的所述VPC寻址网络报文的源互联网协议(InternetProtocol,IP)地址修改为与第一端口关联的所述PAT网关的源IP地址;将源自所述第二温应用容器的所述VPC寻址网络报文的源IP地址修改为与第二端口关联的所述PAT网关的源IP地址;通过所述PAT网关的所述第一接口,将源自所述第一和第二温应用容器的所述VPC寻址网络报文转发到所述VPC。
根据本发明的第二方面,提供了一种系统,包括存储指令的存储器和与所述存储器进行通信的一个或多个处理器。所述一个或多个处理器执行所述指令以:实例化第一温应用容器,以承载无服务器函数,其中,所述第一温应用容器包括运行语言库,而不包括所述无服务器函数的函数代码;实例化虚拟机,以承载端口地址转换(Port AddressTranslation,PAT)网关,其中,所述PAT网关包括连接到虚拟私有云(virtual privatecloud,VPC)的第一接口和连接到所述第一温应用容器的第二接口;响应于检测到用于触发所述无服务器函数的触发事件,将所述无服务器函数的函数代码加载到所述第一温应用容器内;在执行所述第一温应用容器中的所述函数代码的过程中,通过所述PAT网关内的所述第二接口和所述第一接口,将与所述无服务器函数关联的VPC寻址网络报文路由到所述VPC。
根据所述第二方面,在所述系统的第一种实现方式中,所述一个或多个处理器执行所述指令以:将路由项插入到所述第一温应用容器的网络路由表中,其中,所述路由项将所述VPC寻址网络报文的媒体访问控制(media access control,MAC)目的地址修改为所述第二接口的MAC地址。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述系统的第二种实现方式中,所述路由项将所述VPC寻址网络报文的MAC目的地址从所述VPC的MAC地址或耦合到所述VPC的虚拟路由器的MAC地址修改为所述第二接口的所述MAC地址。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述系统的第三种实现方式中,所述第一温应用容器位于第一子网内,所述VPC位于第二子网内,所述一个或多个处理器执行所述指令以:通过所述第二接口,将所述VPC寻址网络报文从所述第一子网中的所述第一温应用容器路由到所述虚拟机。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述系统的第四种实现方式中,所述一个或多个处理器执行所述指令以:通过到所述VPC的所述第一接口,将所述VPC寻址网络报文从所述虚拟机路由到所述第二子网中的所述VPC。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述系统的第五种实现方式中,所述一个或多个处理器执行所述指令以:接收配置信息,以配置所述无服务器函数;响应于根据所述配置信息确定所述无服务器函数要访问所述VPC,实例化所述虚拟机;在所述虚拟机内,将所述第二接口连接到所述第一温应用容器;在所述虚拟机内,将所述第一接口连接到所述VPC。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述系统的第六种实现方式中,所述虚拟机通过网络交换机耦合到所述VPC,所述一个或多个处理器执行所述指令以:将路由项插入到所述网络交换机的网络路由表中,其中,所述路由项将所述VPC寻址网络报文的媒体访问控制(media access control,MAC)目的地址修改为与所述第二接口关联的MAC地址。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述系统的第七种实现方式中,所述一个或多个处理器执行所述指令以:通过所述PAT网关的所述第二接口,接收与运行在所述第一温应用容器中的所述无服务器函数关联的VPC寻址网络报文和与运行在第二温应用容器中的无服务器函数关联的VPC寻址网络报文。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述系统的第八种实现方式中,所述一个或多个处理器执行所述指令以:将源自所述第一温应用容器的所述VPC寻址网络报文的源互联网协议(Internet Protocol,IP)地址修改为与第一端口关联的所述PAT网关的源IP地址;将源自所述第二温应用容器的所述VPC寻址网络报文的源IP地址修改为与第二端口关联的所述PAT网关的源IP地址;通过所述PAT网关的所述第一接口,将源自所述第一和第二温应用容器的所述VPC寻址网络报文转发到所述VPC。
根据本发明的第三方面,提供了一种非瞬时性计算机可读介质,存储计算机指令,用于使用网络架构内的无服务器函数访问虚拟私有云(virtual private cloud,VPC)中的用户资源,其中,所述指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行多个操作。所述多个操作包括:实例化第一温应用容器,以承载所述无服务器函数,其中,所述第一温应用容器包括运行语言库,而不包括所述无服务器函数的函数代码;实例化虚拟机,以承载端口地址转换(Port Address Translation,PAT)网关,其中,所述PAT网关包括连接到所述VPC的第一接口和连接到所述第一温应用容器的第二接口;响应于检测到用于触发所述无服务器函数的触发事件,将所述无服务器函数的函数代码加载到所述第一温应用容器内;在执行所述第一温应用容器中的所述函数代码的过程中,通过所述PAT网关内的所述第二接口和所述第一接口,将与所述无服务器函数关联的VPC寻址网络报文路由到所述VPC。
根据所述第三方面,在所述非瞬时性计算机可读介质的第一种实现方式中,所述指令在执行时还使得所述一个或多个处理器执行多个操作,包括:通过所述PAT网关的所述第二接口,接收与运行在所述第一温应用容器中的所述无服务器函数关联的VPC寻址网络报文和与运行在第二温应用容器中的无服务器函数关联的VPC寻址网络报文;将源自所述第一温应用容器的所述VPC寻址网络报文的源互联网协议(Internet Protocol,IP)地址修改为与第一端口关联的所述PAT网关的源IP地址;将源自所述第二温应用容器的所述VPC寻址网络报文的源IP地址修改为与第二端口关联的所述PAT网关的源IP地址;通过所述PAT网关的所述第一接口,将源自所述第一和第二温应用容器的所述VPC寻址网络报文转发到所述VPC。
上述示例中的任一个可以与上述其它示例中的任何一个或多个组合以在本发明范围内产生新实施例。
附图说明
在不一定按比例绘制的附图中,不同视图中的相同数字可以描述类似组件。附图通过示例而非限制的方式一般地示出了在本文中描述的各种实施例。
图1为一些示例性实施例提供的使用无服务器函数容器VPC的网络架构的高层系统概述。
图2为一些示例性实施例提供的使用无服务器函数容器VPC内的温容器和执行端口地址转换(port address translation,PAT)网关的代理容器减少网络架构中的无服务器函数启动延迟的机制的框图。
图3为一些示例性实施例提供的用于减少无服务器函数启动延迟的示例性功能的流程图。
图4为一些示例性实施例提供的使用用户VPC内的执行PAT网关的代理容器减少网络架构中的无服务器函数启动延迟的机制的框图。
图5为一些示例性实施例提供的使用无服务器函数容器VPC内的多个温容器和PAT网关减少网络架构中的无服务器函数启动延迟的机制的框图。
图6为一些示例性实施例提供的使用多个温容器和用户VPC内的PAT网关减少网络架构中的无服务器函数启动延迟的机制的框图。
图7为一些示例性实施例提供的适用于减少网络架构中的无服务器函数启动延迟的方法的流程图。
图8为一些示例性实施例提供的代表性软件架构,该软件架构可以结合本文描述的各种设备硬件使用。
图9为一些示例性实施例提供的一种实现算法和执行方法的设备的电路的框图。
具体实施方式
首先应当理解,虽然下文提供了一个或多个实施例的说明性实现方式,但结合图1至图9描述的公开系统和/或方法可以使用任意数量的技术实现,无论这些技术是当前已知还是尚未存在的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文说明并描述的示例性设计和实现方式,而是可以在所附权利要求书的范围以及其等效物的完整范围内修改。
以下描述结合附图,这些附图是描述的一部分并通过说明的方式示出可以实践的具体实施例。这些实施例进行了足够详细的描述以使本领域技术人员能够实践本发明主题,应当理解,可以利用其它实施例,并且在不脱离本发明范围的情况下可以进行结构变化、逻辑变化和电变化。因此,以下示例性实施例的描述不应以限制性的意义来理解,本发明的范围由所附权利要求书界定。
本文所使用的术语“网络服务基础设施”包括将按需计算能力(例如,通过运行在网络设备上的一个或多个虚拟机或其它虚拟资源)和存储能力作为一种服务提供给终端接收者(例如,服务基础设施的客户)社区的多个网络设备,其中,终端接收者通过网络以通信方式耦合到服务基础设施内的网络设备。服务基础设施的客户可以使用一个或多个计算设备(或客户设备)通过网络访问和管理服务基础设施提供的服务。客户设备、网络和网络服务基础设施可以统称为“网络架构”。服务基础设施的客户也可以称为“用户”。
本文所使用的术语“冷容器”是指在触发事件发生时实例化(即,在一个实例上启动,该实例可以为运行在计算设备上的虚拟机或虚拟私有云等)的应用容器,其中,该触发事件使用运行在该容器上的应用的功能。当响应于触发事件发生而针对给定应用实例化冷容器时,该容器包括与该应用执行的功能关联的函数代码以及用于函数代码的运行语言库和二进制文件。在事件发生时启动的冷容器的示例为与亚马逊云服务(Amazon WebService,AWS)关联的应用容器。冷容器的延迟在10秒范围内。
本文所使用的术语“热容器”是指在触发发生之前启动和运行用户函数代码及其运行语言库的应用容器。热容器可以在一定时间内保持激活状态,然后在函数代码执行完成之后释放。由于包括函数代码和运行库的热容器即使在没有请求和不需要时也会激活,因此该容器需要大量资源,造成浪费。
本文所使用的术语“温容器”是指在触发事件发生之前可以实例化并只运行运行语言库(例如,用于编程语言的运行库,例如,Java运行库,Go运行库、Python运行库等)的应用容器。温容器在实例化时不包括任何函数代码。用户函数代码可以在触发事件发生时动态地加载到温容器中,而在与加载后的应用代码关联的函数(或应用)完成执行时从温容器中卸载。在这方面,温容器可以在一段时间运行用户A的函数,在另一段时间运行用户B的函数。
在现有技术中,无服务器计算方案使用冷容器(在事件发生时启动的容器)或热容器(已经与用户代码一起运行的容器)。但是,这两种方法都有缺点。例如,冷容器的启动时间很长,而热容器无法扩展(例如,如果有5000万个用户,每个用户有10个函数,则假设每个函数对应3个热容器,导致总共5000万×10×3=15亿个容器一直运行)。虽然由于用户代码已经在运行,延迟极低,但在使用冷容器和热容器的网络中,服务提供商要扩展计算资源的使用并提供无服务器平台可能有难度。
在现有技术中,用于访问用户VPC的无服务器计算方案存在缺点。例如,AzureFunctions和Google Cloud Functions不允许它们各自的无服务器函数访问用户VPC中的资源。如果Azure Function或Google Cloud Functions需要访问私有VPC中的资源,则只能通过公网IP地址访问这些资源。通过在容器创建的过程中将弹性网络接口(ElasticNetwork Interface,ENI)提供给容器,亚马逊的AWS Lambda允许无服务器容器访问私有VPC资源。ENI来自VPC的私有子网络(或子网),这样允许无服务器容器访问VPC资源。然而,随着无服务器容器扩展,在现有技术方案中使用公共IP地址会导致使用来自VPC子网的IP地址。当VPC子网由于事件突发而耗尽IP地址时,不会创建其它容器。一个更大的缺点是与使用ENI关联的启动延迟。例如,将ENI连接到容器需要大量的时间。亚马逊的AWS承认用户文献中的这一缺点,并建议用户在使用ENI访问VPC时延迟8至10秒。这种大的延迟对于许多应用是不可接受的。在这方面,用于使用无服务器函数访问用户VPC的现有技术没有提供一种可行的技术方案来实例化函数容器,也没有以极低的延迟(例如,在1秒内)与用户VPC中的资源建立网络连接。
本文公开的用于减少无服务器函数启动延迟的技术使用温应用容器,这些容器可以在无服务器函数触发事件发生之前与运行语言库一起启动并运行。如上所述,温容器在实例化时只包括应用库/二进制文件,而不包括函数代码。当无服务器函数触发事件到达时,将用户函数代码动态地自动加载到温容器中,而当无服务器函数执行完成时,将用户函数代码从温容器中卸载。另外,代理VM(或容器)可以使用端口地址转换(Port AddressTranslation,PAT)网关(gateway,GW)针对每个用户实例化。PAT GW容器可以在用户配置无服务器函数并接收到事件触发之前创建,也可以在配置用户的第一无服务器函数的过程中创建,这样需要访问用户VPC(例如,访问VPC中的用户数据库或其它用户资源)。另外,PATGW包括两个接口,一个接口连接到具有用户VPC的用户网络,另一个接口连接到包括温容器以承载无服务器函数代码的无服务器容器网络。
响应于检测到无服务器函数事件触发,使用从触发内的事件信息中动态获取到的信息将路由插入到无服务器容器的网络路由表中(例如,可以将一些报文路由到用户VPC)。路由项可以用于通过其中一个接口将VPC寻址网络报文重定向到租户的PAT GW,然后通过第二个接口将报文路由到用户VPC。这种“插入”操作可能大约需要5ms。因此,与现有技术方案(例如,将ENI连接到容器的AWS Lambda)中的10秒延迟相比,总的容器实例化时间减少到小于100ms。
与用于使用无服务器函数访问用户VPC的现有技术方案相比,本文公开的技术使用只能预配置有库/二进制文件而不包括函数代码的温容器。现有技术方案也不使用实现地址转换网关的代理容器,该地址转换网关包括用于在(例如,无服务器函数容器的)一个子网中进行通信的接口和在另一个子网中运行与VPC进行通信的第二接口。另外,本文公开的技术允许扩展无服务器容器,而不从租户的VPC子网获取IP地址,从而避免了由于VPC相关事件的突发而导致IP地址耗尽的问题。
图1为一些示例性实施例提供的使用无服务器函数容器VPC的网络架构100的高层系统概述。参考图1,网络架构100可以包括多个设备(例如,用户设备)102A至102N(统称为设备102),这些设备通过网络112以通信方式耦合到网络服务基础设施114。设备102A至102N与对应的用户106A至106N关联,并且可以用于使用网络访问客户端(例如,客户端104A至104N中的一个客户端)与网络服务基础设施114交互。网络访问客户端104A至104N可以实现为web客户端或应用(app)客户端。
用户106A至106N可以通称或统称为“用户106”。每个用户106可以是人类用户(例如,人类)、机器用户(例如,由软件程序配置为与设备102和网络服务基础设施114交互的计算机),或其任何合适的组合(例如,机器辅助的人类或人类监督的机器)。用户106不是网络架构100的一部分,但分别与一个或多个设备102关联,并且可以是设备102的用户(例如,用户106A可以是设备102A的所有者,用户106N可以是设备102N的所有者)。例如,设备102A可以是属于用户106A的台式计算机、车载计算机、平板计算机、导航设备、便携式媒体设备或智能手机。用户106A至106N可以使用设备102A至102N访问网络服务基础设施114提供的服务(例如,无服务器计算服务)。无服务器计算服务可以包括实例化和使用虚拟机(virtualmachine,VM)、虚拟私有云(virtual private cloud,VPC)、应用容器(例如,在VPC内实例化的温容器)等。
网络服务基础设施114可以包括多个计算设备116至118。基础设施114内的一个或多个计算设备(例如,计算设备116)可以包括无服务器函数容器VPC 120。无服务器函数容器VPC 120可以用于实例化一个或多个容器、虚拟机或其它计算资源。在VPC 120内实例化的计算资源可以构成多个网络,并且网络之间以及VPC 120内的不同资源之间的互连可以通过虚拟路由器(例如,虚拟路由器126)执行。
如图1所示,无服务器函数容器VPC 120可以用于实例化多个温容器122至124。计算设备116至118中的一个或多个计算设备(例如,计算设备118)可以用于实例化与用户106关联的VPC(例如,计算设备118可以用于实例化用户A 106A的VPC 128)。用户A VPC 128可以包括运行与用户A的一个或多个数据库关联的数据库服务的虚拟机130。
图1所示的任一设备可以在通用计算机中实现,该通用计算机由软件修改(例如,配置或编程)为专用计算机,以便执行本文针对上述机器、数据库或设备描述的函数。本文所使用的“数据库”是存储数据的数据存储资源,该数据的结构为文本文件、表、电子表格、关系数据库(例如,对象关系数据库、NoSQL数据库、网络或图形数据库)、三元组存储、分层数据存储或其任何合适的组合。另外,通过应用编程接口(application programminginterface,API)或远程过程调用(remote procedure call,RPC)访问(或存储)的数据可以视为从数据库访问(或存储到数据库)。而且,图1所示的任意两个或更多个设备或数据库可以组合成单个机器、数据库或设备,并且本文针对任何单个机器、数据库或设备描述的函数可以在多个机器、数据库或设备之间细分。
网络112可以是任何实现机器、数据库和设备(例如,设备102A至102N以及网络服务基础设施114内的设备116至118)之间通信的网络。因此,网络112可以是有线网络、无线网络(例如,移动网络或蜂窝网络)或其任何合适的组合。网络112可以包括构成私网、公网(例如,互联网)或其任何合适组合的一个或多个部分。
在一些方面,一个或多个用户106可以传输事件触发108至110,以触发与运行在一个或多个温容器122至124上的无服务器函数关联的功能。本文结合图2至图9公开的技术可以用于减少与网络服务基础设施114提供给用户106的无服务器函数有关的无服务器函数启动延迟。
图2为一些示例性实施例提供的使用无服务器函数容器VPC内的温容器和执行端口地址转换(port address translation,PAT)的代理容器减少网络架构中的无服务器函数启动延迟的机制的框图200。参考图2,示出了无服务器函数容器VPC 120,其包括通过交换机210相互耦合的无服务器函数容器202和PAT容器204(包括PAT网关)。VPC 120内的不同网络上的各种计算资源(例如,容器202和204)之间的互连可以通过虚拟路由器126发生。无服务器函数容器还可以包括运行语言库和二进制文件(LIB/BIN)212、网络路由表(networkrouting table,NRT)214和函数代码(function code,FC)216,如结合图3进一步描述。
PAT容器204包括连接到与无服务器函数容器202关联的子网的第一网络接口(E0206)和连接到与用户VPC 128关联的子网的第二网络接口(E1 208)。
用户VPC 128可以包括运行用户106的数据库服务的虚拟机130。本文所使用的术语“PAT容器”指示运行在应用容器中的PAT网关,术语“PAT网关”和“PAT容器”可以互换使用。
图3为一些示例性实施例提供的用于减少无服务器函数启动延迟的示例性功能300的流程图。参考图2和图3,在操作302中,在网络服务架构114内实例化多个温容器(例如,每种编程语言对应一个容器),其中,每个实例化后的温容器不包括函数代码。例如,在无服务器函数容器VPC 120内实例化温无服务器函数容器202。在实例化时,温无服务器函数容器202只包括运行语言库和二进制文件(LIB/BIN)212,而不包括无服务器函数的任何函数代码。
在操作304中,用户106配置无服务器函数以访问用户VPC 128。例如,用户106指示要由无服务器函数使用的具体编程语言,并且根据这样的配置信息选择无服务器函数容器202(例如,LIB/BIN 212可以对应于用户106选择的编程语言)。另外,用户106可以指定要结合无服务器函数使用的事件触发和函数代码,以及结合无服务器函数传输的任何数据报文是否需要访问用户VPC 128。在一些方面,可以将要结合无服务器函数使用的函数代码216加载到事件触发108内,或者事件触发108可以标识要结合无服务器函数使用的函数代码216的位置。
响应于配置无服务器函数,在操作306中,在无服务器函数容器VPC 120中实例化PAT容器204。PAT容器204可以用于执行PAT网关,PAT网关作为无服务器函数容器202和用户VPC 128之间的代理网关。在这方面,PAT容器204也可以被称为PAT代理容器。在一些方面,PAT代理容器204是在用户配置需要访问用户VPC 128的第一无服务器函数时实例化的。另外,可以为网络服务基础设施114内的用户创建单个PAT代理容器。在其它方面,PAT代理容器204是在用户在操作304中配置无服务器函数之前实例化的。
在操作308中,将PAT代理容器204的第一网络接口206连接到与无服务器函数容器202关联的子网,并将PAT代理容器204的第二网络接口208连接到与用户VPC 128关联的子网。例如,将PAT代理容器204的第一网络接口(E0)206连接到与无服务器函数容器202关联的第一子网,并将PAT代理容器204的第二网络接口(E1)208连接到与用户VPC 128关联的第二子网。第一网络接口206可以与IP地址172.16.1.4和媒体访问控制(media accesscontrol,MAC)地址(或目的地址)MAC_PAT_CON关联。第二网络接口208可以与IP地址192.168.12.2和MAC地址(或目的地址)MAC_PAT_TEN关联。如图2所示,接口206和无服务器函数容器202位于第一子网(由相同源IP地址部分172.16.1.x指示)上,接口208和用户VPC128也位于第二子网(由相同源IP地址部分192.168.12.x指示)上。
在操作310中,PAT代理容器204针对用户106在操作304中配置无服务器函数执行端口地址转换功能。例如,通过改变在与无服务器函数容器202关联的第一子网和与用户VPC 128关联的第二子网之间传输的报文的源IP地址,PAT代理容器204可以执行端口地址转换。
在操作312中,触发事件发生,并将无服务器函数的事件触发传送到无服务器函数的无服务器函数容器。例如,网络服务基础设施114内的无服务器函数容器VPC 120接收事件触发108。在操作314中,温无服务器函数容器202接收事件触发108,并将与由事件触发108指示的无服务器函数关联的函数代码216加载到无服务器函数容器202内。在第一方面,可以将函数代码216与事件触发108一起传输。在第二方面,根据事件触发108内的无服务器函数的描述或根据事件触发108内指定的函数代码214的位置,可以从网络服务基础设施114内的代码仓库(图2未示出)中检索函数代码216。
在将函数代码216加载到温无服务器函数容器202内之后,将路由项插入到网络路由表(network routing table,NRT)214等NRT中。更具体地,修改NRT 214,以便将用户VPC128的网络流量路由到PAT容器204内的PAT网关的网络接口206。例如,以下Linux命令可以用于将路由添加到NRT 214内:-ip route add 192.168.12.6/32via 172.16.1.4。
在一些方面,可以在承载无服务器函数容器202的服务器(例如,计算设备116)上(例如,使用Linux iptable、OVS流等)添加目的地址规则,以便修改定向到用户VPC 128的所有流量的MAC目的地址以匹配容器网络接口的MAC地址(例如,接口206的MAC地址),而不是将路由插入到NRT 214中。例如,MAC(目的)地址为MAC_VR的传入网络报文(即,通过路由器126传输到用户VPC 128的网络报文)会通过PAT容器204内的PAT网关的第一接口206的MAC地址(例如,MAC_PAT_CON)更改它们的MAC地址。然后,PAT网关执行端口地址转换,并且在接口206上接收到的报文将它们的MAC地址更改为用户VPC 128的MAC地址(例如,MAC_A),以便这些报文可以通过PAT容器204内的PAT网关的第二接口208传输到用户VPC 128。在一些方面,路由项的“插入”操作可能大约需要5ms,因此,总的温容器实例化时间减少到小于100ms(与将ENI连接到容器的AWS Lambda方案中的10秒延迟相比)。
在一些方面,在操作314中,将路由项插入到虚拟路由器126内的网络路由表中,而不是将路由项插入到无服务器函数容器202的NRT 214内。在这方面,寻址到用户VPC 128并在路由器126侧接收到的报文可以转发到容器204内的PAT网关的接口206,然后通过PAT网关的接口208转发到用户VPC 128。
图4为一些示例性实施例提供的使用用户VPC内的执行PAT网关的代理容器减少网络架构中的无服务器函数启动延迟的机制的框图400。参考图4,示出了无服务器函数容器VPC 120通过路由器126与用户VPC 128进行通信。无服务器函数容器VPC 120可以包括温无服务器函数容器402,其可以与图2的温无服务器函数容器202相同。另外,与图2的PAT容器204类似,PAT容器404可以用于运行PAT网关。但是,PAT容器404可以位于用户VPC 128内,而不是如图2所示位于无服务器函数容器VPC 120内。
PAT容器404可以包括通过交换机410耦合到无服务器函数容器402的子网络的第一网络接口406。PAT容器404还可以包括耦合到与运行在用户VPC 128内的数据库服务VM130关联的子网的第二网络接口408。在这方面,在接收到事件触发(例如,108)并将新的路由项添加到无服务器函数容器402的NRT中之后,发往用户VPC 128的数据报文通过交换机410和接口406传输到PAT容器404,然后通过接口408传输到数据库服务VM 130,而不是通过交换机410和路由器126传输到用户VPC 128。
图5为一些示例性实施例提供的使用无服务器函数容器VPC内的多个温容器和PAT网关减少网络架构中的无服务器函数启动延迟的机制的框图500。参考图5,示出了无服务器函数容器VPC 120,其包括通过交换机512相互耦合的无服务器函数容器502、504和PAT容器506(包括PAT网关)。VPC 120内的不同网络上的各种计算资源(例如,容器502、504和206)之间的互连可以通过虚拟路由器126发生。用户VPC 128可以包括运行用户106的数据库服务的虚拟机130。
与结合图2和图3描述的那些操作类似,在网络服务架构114内实例化多个温容器(例如,温容器502和504)。例如,在无服务器函数容器VPC 120内实例化温无服务器函数容器502,以执行第一无服务器函数F1;在无服务器函数容器VPC 120内实例化温无服务器函数容器504,以执行第二无服务器函数F2。在实例化时,温无服务器函数容器502和504只包括运行语言库和二进制文件,而不包括函数F1和F2的任何函数代码。其余操作(例如,与以下内容关联的操作:配置无服务器函数F1和F2,在接收到事件触发时将函数代码加载到对应的容器内,以及将新路由插入到两个无服务器函数容器的NRT中以通过PAT容器506的第一接口508和第二接口510路由寻址到用户VPC 128的网络报文)通过结合图2和图3论述的类似方式执行。
在一些方面,通过更改经由接口508接收到的网络报文的源IP地址,PAT容器506执行端口地址转换功能。例如,在接口508侧从第一无服务器函数容器502接收用户VPC 128的第一网络报文,其源IP地址为172.16.1.1。在接口508侧从第二无服务器函数容器504接收用户VPC 128的第二网络报文,其源IP地址为172.16.1.8。然后,PAT容器506可以将两个报文的源IP地址更改为对应的IP地址192.168.12.2:1和192.168.12.2:2,指示第二接口510的相同源IP地址但不同的端口(例如,端口1和端口2)用于将报文转发到用户VPC 128。
图6为一些示例性实施例提供的使用多个温容器和用户VPC内的PAT网关减少网络架构中的无服务器函数启动延迟的机制的框图600。参考图6,示出了无服务器函数容器VPC120通过路由器126与用户VPC 128进行通信。无服务器函数容器VPC 120包括温无服务器函数容器602和612,两者可以与图5的温无服务器函数容器502和504相同。另外,与图5的PAT容器506或图2的PAT容器204类似,PAT容器606用于运行PAT网关。但是,PAT容器606位于用户VPC 128内,而不是如图2和图5所示位于无服务器函数容器VPC 120内。
PAT容器604包括通过交换机610耦合到无服务器函数容器602和612的子网络的第一网络接口606。PAT容器604还包括耦合到与运行在用户VPC 128内的数据库服务VM 130关联的子网的第二网络接口608。在这方面,在接收到事件触发(例如,108)并将新的路由项添加到无服务器函数容器(例如,602)的NRT中之后,发往用户VPC 128的数据报文通过交换机610和接口606传输到PAT容器604,然后通过接口608传输到数据库服务VM 130,而不是通过交换机610和路由器126传输到用户VPC 128。
在一些方面,无服务器函数容器602和612均可以与网络服务基础设施114的相同或不同用户的无服务器函数关联。另外,在执行无服务器函数之后,可以移除加载到对应温无服务器函数容器内的函数代码,以便温容器可以在后续时间用于另一个函数(用于网络服务基础设施114的相同或不同用户)。
图7为一些示例性实施例提供的适用于减少网络架构中的无服务器函数启动延迟的方法700的流程图。方法700包括操作702、704、706、708和710。作为示例而非限制,描述了方法700由设备116使用图8的模块860且862(或图9的模块960和965)执行。在操作802中,实例化第一温应用容器,以承载无服务器函数。例如,可以在无服务器函数容器VPC 120内实例化温无服务器函数容器202。所述第一温应用容器(例如,202)包括运行语言库,而不包括所述无服务器函数的函数代码。例如,如图2所示,在实例化时,温无服务器函数容器202只包括运行语言库/二进制文件212,而不包括函数代码。
在操作704中,实例化容器或虚拟机,以承载端口地址转换(Port AddressTranslation,PAT)网关。例如,在无服务器函数容器VPC 120内实例化容器204,以承载PAT网关。其中,所述PAT网关包括连接到所述VPC的第一接口和连接到所述第一温应用容器的第二接口;例如,PAT容器204包括连接到VPC 128的接口208和连接到温无服务器函数容器202的接口206。
在操作706中,响应于检测到用于触发无服务器函数的触发事件,将所述无服务器函数的函数代码加载到所述第一温应用容器内。例如,响应于接收事件触发108,将函数代码214加载到无服务器函数容器202内。
在操作708中,将路由项插入到所述第一温应用容器的网络路由表中。例如,可以将路由项插入到温无服务器函数容器202的NRT 214中。在一些方面,所述路由项可以将VPC寻址网络报文的媒体访问控制(media access control,MAC)目的地址修改为所述第二接口的MAC地址。
在操作710中,在执行所述第一温应用容器中的所述函数代码的过程中,将与所述无服务器函数关联的VPC寻址网络报文通过所述PAT网关内的所述第二接口和所述第一接口路由到所述VPC。例如,与运行在温无服务器函数容器202上的无服务器函数关联的VPC寻址网络报文可以路由到PAT容器204的接口206,然后通过PAT容器204的第二接口208路由到用户VPC 128。
图8为一些示例性实施例提供的代表性软件架构800。软件架构800可以结合本文描述的各种设备硬件使用。图8仅仅是软件架构802的一个非限制性示例,应当理解,可以实现许多其它架构以促进本文描述的功能。软件架构802可以在图9的设备900等硬件上执行,设备900包括处理器905、内存910、存储器915和920以及I/O组件925和930等。示出了代表性硬件层804,其可以表示图9的设备900等。代表性硬件层804包括具有关联的可执行指令808的一个或多个处理单元806。可执行指令808表示软件架构802的可执行指令,包括实现图1至图7的方法、模块等。硬件层804还包括内存和/或存储模块810,它们也具有可执行指令808。硬件层804还可以包括其它硬件812,它们表示硬件层804的任何其它硬件,例如,示为设备900的一部分的其它硬件。
在图8的示例性架构中,软件架构802可以概念化为各层的堆叠,其中,每个层提供特定功能。例如,软件架构802可以包括各个层,例如,操作系统814、库816、框架/中间件818、应用820和表示层844。在操作上,各个层内的应用820和/或其它组件可以通过软件栈调用应用编程接口(application programming interface,API)调用824,并响应API调用824接收以消息826示出的响应、返回值等。图8所示的各个层本质上具有代表性,而且并不是所有软件架构802都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件818,而其它操作系统可能提供这一层。其它软件结构可以包括其它层或不同层。
操作系统814可以管理硬件资源并提供公共服务。操作系统814可以包括,例如,内核828、服务830、驱动程序832、无服务器函数配置模块860和事件检测和处理模块862。内核828可以作为硬件与其它软件层之间的抽象层。例如,内核828可以负责内存管理、处理器管理(例如,调度)、组件管理、组网、安全设置等。服务830可以为其它软件层提供其它公共服务。驱动器832可以负责控制底层硬件或与底层硬件连接。例如,根据硬件配置,驱动器832可以包括显示驱动器、摄像头驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(Universal Serial Bus,USB)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
在一些方面,无服务器函数配置模块860可以包括合适的电路、逻辑、接口和/或代码,并且可以用于执行结合图3中的操作302至310论述的一个或多个函数。例如,无服务器函数配置模块860可以用于:实例化温无服务器函数容器,创建运行PAT网关的PAT代理容器,将PAT网关中的网络接口连接到用户VPC的子网和温容器的子网,结合在PAT网关侧接收到的报文执行端口地址转换,等等。事件检测和处理模块862可以包括合适的电路、逻辑、接口和/或代码,并且可以用于执行结合图3中的操作312和314论述的一个或多个函数。例如,事件检测和处理模块862可以用于:检测事件触发,将函数代码加载到温无服务器函数容器内,修改网络路由表中的表项,以便将VPC寻址网络流量转发到PAT网关的容器VPC接口,然后通过PAT网关的第二接口转发给VPC的用户。事件检测和处理模块862还可以用于:检测与运行在温容器中的无服务器函数关联的功能完成,从温容器中移除(或卸载)函数代码,以便容器可以结合另一个无服务器函数在后续时间内重用。
库816可以提供应用820和/或其它组件和/或各个层可以使用的公共基础设施。库816的功能通常是允许其它软件模块通过比与底层操作系统814的功能(例如,内核828、服务830、驱动器832和/或模块860和862)直接连接更容易的方式执行任务。库816可以包括系统库834(例如,C标准库),系统库834可以提供各种函数,例如,内存分配函数、字符串操作函数、数学函数等。另外,库816可以包括API库836,例如,媒体库(例如,支持MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等各种媒体格式的呈现和操作的库)、图形库(例如,可以用于在显示器上呈现2D和3D图形内容的OpenGL框架)、数据库库(例如,可以提供各种关系数据库函数的SQLite)、网页库(例如,可以提供网页浏览功能的WebKit)等。库816还可以包括多种其它库838,以向应用820和其它软件组件/模块提供许多其它API。
框架/中间件818(有时也称为中间件)可以提供应用820和/或其它软件组件/模块可以使用的高层公共基础设施。例如,框架/中间件818可以提供各种图形用户界面(graphic user interface,GUI)函数、高层资源管理、高层位置服务等。框架/中间件818可以提供应用820和/或其它软件组件/模块可以使用的各种其它API,其中一些可以是特定操作系统814或平台专用的。
应用820包括内置应用840和/或第三方应用842。代表性内置应用840的示例可以包括但不限于联系人应用、浏览器应用、阅读器应用、定位应用、媒体应用、通信应用和/或游戏类应用。第三方应用842可以包括任何内置应用840以及各种各样的其它应用。在一个具体示例中,第三方应用842(例如,由除特定平台的供应商以外的实体使用AndroidTM或iOSTM软件开发工具包(software development kit,SDK)开发的应用)可以是运行在iOSTM、AndroidTM、Phone或其它移动操作系统等移动操作系统上的移动软件。在这个示例中,第三方应用842可以调用由操作系统814等移动操作系统提供的API调用824,以促进本文描述的功能。
应用820可以利用内置操作系统函数(例如,内核828、服务830、驱动器832和/或模块860和862)、库(例如,系统库834、API库836和其它库838)以及框架/中间件818创建用户界面,从而与系统用户交互。可选地或另外,在一些系统中,可以通过表示层(例如,表示层844)与用户进行交互。在这些系统中,应用/模块“逻辑”可以独立于与用户交互的应用/模块的各个方面。
一些软件架构利用虚拟机。在图8的示例中,示出了虚拟机848。虚拟机创建一种软件环境,在软件环境中,应用/模块可以如同在硬件机器(例如,图9的设备900)上执行一样执行。虚拟机848由主机操作系统(图8中的操作系统814)承载,并且通常(虽然并不总是)具有虚拟机监控器846。虚拟机监控器846用于管理虚拟机848的操作以及与主机操作系统(即操作系统814)的连接。软件架构802在操作系统850、库852、框架/中间件854、应用856和/或表示层858等虚拟机848内执行。在虚拟机848内执行的这些软件架构层可以与上述对应各个层相同,也可以不同。
图9为一些示例性实施例提供的一种实现算法和执行方法的设备的电路的框图。在各种实施例中不需要使用所有组件。例如,客户端、服务器和基于云的网络设备可以各自使用不同的组件集,或者,例如在服务器的情况下,使用较大存储设备。
以计算机900(也称为计算设备900、计算机系统900或计算机900)为形式的一种示例性计算设备可以包括处理器905、存储器910、可移动存储器915、不可移动存储器920、输入接口925、输出接口930和通信接口935,它们均通过总线940连接。虽然示出和描述了示例性计算设备为计算机900,但计算设备在不同实施例中可以具有不同形式。
存储器910可以包括易失性存储945和非易失性存储器950,并且可以存储程序955。计算机900可以包括或可以访问计算环境,该计算环境包括各种计算机可读介质,例如,易失性存储器945、非易失性存储器950、可移动存储器915和不可移动存储器920。计算机存储器包括随机存取存储器(random-access memory,RAM)、只读存储器(read-onlymemory,ROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read-onlymemory,EEPROM)、闪存或其它存储技术、只读光盘(compact disc read-only memory,CDROM)、数字通用磁盘(digital versatile disk,DVD)或其它光盘存储器、磁盒、磁带、磁盘存储器或其它磁存储设备,或任何其它能够存储计算机可读指令的介质。
存储在计算机可读介质中的计算机可读指令(例如,存储在存储器910中的程序955)可由计算机900的处理器905执行。硬盘驱动、CD-ROM和RAM是包括存储设备等非瞬时性计算机可读介质的制品的一些示例。术语“计算机可读介质”和“存储设备”不包括被认为过于短暂的载波。“计算机可读非瞬时性介质”包括所有类型的计算机可读介质,包括磁性存储介质、光存储介质、闪存介质和固态存储介质。应当理解,软件可以安装在计算机中并随计算机一起出售。可选地,可以获取软件并将其装载到计算机中,包括通过物理介质或分配系统获取软件,包括(例如)从软件创作者拥有的服务器或从软件创作者未拥有但使用的服务器获取软件。例如,可以将软件存储在服务器以通过互联网分配。本文所使用的术语“计算机可读介质”和“机器可读介质”可以互换。
程序955可以利用客户偏好结构,该客户偏好结构使用本文论述的模块,例如,无服务器函数配置模块960以及事件检测和处理模块965无服务器函数配置模块960以及事件检测和处理模块965可以分别与无服务器函数配置模块860以及事件检测和处理模块862相同,如至少结合图8所述。
本文描述的任何一个或多个模块可以使用硬件(例如,机器的处理器、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或其任何合适的组合)实现。而且,这些模块中的任意两个或更多个可以组合成单个模块,并且本文描述的单个模块的函数可以在多个模块之间细分。此外,根据各种示例性实施例,本文描述为在单个机器、数据库或设备内实现的模块可以分布到多个机器、数据库或设备中。
在一些方面,模块960和965中的一个或两个可以集成为单个模块,执行集成模块的对应函数。
虽然上文详细描述了几个实施例,但也可以进行其它修改。例如,在图中描述的逻辑流程不需要所示的特定顺序或连续顺序来达到期望的结果。可以提供其它步骤,也可以从所描述的流程中删除步骤,并可以在所描述的系统中添加或移除其它组件。其它实施例可以在所附权利要求书的范围内。
还应当理解,可以在符合本发明的一个或多个计算设备中安装并与符合本发明的一个或多个计算设备一起出售包括一个或多个计算机可执行指令的软件,所述一个或多个计算机可执行指令有利于上文结合本发明的任何一个步骤或所有步骤所描述的处理和操作。可选地,可以获取软件并将其装载到一个或多个计算设备中,包括通过物理介质或分配系统获取软件,包括(例如)从软件创作者拥有的服务器或从软件创作者未拥有但使用的服务器获取软件。例如,可以将软件存储在服务器以通过互联网分配。
此外,本领域技术人员应当理解,本发明在其应用中不限于在说明书中阐述或附图中说明的组件的构造和设置细节。本文实施例能够具有其它实施例且能够以各种方式实践或执行。此外,应当理解,本文使用的措辞和术语是为了描述目的,不应视为限制性的。在本文中使用“包括”、“包含”或“具有”及其变体旨在涵盖其后列举的项目及其等效物以及其它项目。除非另有限制,否则术语“连接”、“耦合”和“安装”以及其变体在本文中广泛使用,并且涵盖直接连接和间接连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。此外,“上”、“下”、“底部”和“顶部”等术语是相对的,用于帮助说明,但并不具有限制性。
可以至少部分地在数字电子电路、模拟电子电路中,或计算机硬件、固件、软件或其组合中实现根据所说明的实施例使用的说明性设备、系统和方法的组件。例如,这些组件可以实现为有形地体现于信息载体中,或机器可读存储设备中的计算机程序产品(例如,计算机程序、程序代码或计算机指令),以由数据处理装置(例如,可编程处理器、计算机或多台计算机)执行,或用于控制数据处理装置的操作。
计算机程序可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以部署成任何形式,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。可以将计算机程序部署成在一台计算机中或多台计算机中在一个站点处执行,也可以分布在多个站点处并通过通信网络互连。此外,用于实现本文描述的技术的功能程序、代码和代码段很容易被本文描述的技术所属领域的程序员理解为在权利要求书的范围内。与说明性实施例关联的方法步骤可以由一个或多个可编程处理器执行,从而执行计算机程序、代码或指令来执行功能(例如,对输入数据进行操作和/或生成输出)。例如,方法步骤也可以由专用逻辑电路(例如,现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC))执行,并且用于执行上述方法的装置可以实现为该专用逻辑电路。
结合本文所公开实施例描述的各种说明性逻辑块、模块和电路可以利用通用处理器、数字信号处理器(digital signal processor,DSP)、ASIC、FPGA或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或其为执行本文描述的功能而设计的任何组合来实施或执行。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器、多个微处理器、一个或多个微处理器结合DSP核,或任何其它类似的配置的组合。
例如,适合执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的必需元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还包括一个或多个用于存储数据的大容量存储设备(例如,磁盘、磁光盘或光盘),或与一个或多个用于存储数据的大容量存储设备可操作地耦合以从所述大容量存储设备接收数据和/或将数据传送给所述大容量存储设备。适于体现计算机程序指令和数据的信息载体包括各种形式的非易失性存储器,例如,包括半导体存储设备,例如,电可编程只读存储器或电可编程ROM(electrically programmable read-only memory,EPROM)、电可擦除可编程ROM(electrically erasable programmable ROM,EEPROM)、闪存设备、数据存储盘(例如,磁盘、内部硬磁盘或可移动磁盘、磁光盘、CD-ROM和DVD-ROM盘)。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路。
本领域技术人员应当理解,可以使用多种不同的技术和技术方法中的任意一种来表示信息和信号。例如,上文描述中可以引用的数据、指令、命令、信息、信号、比特、符号和芯片可以由电压、电流、电磁波、磁场或磁粒、光场或光粒或者任何组合表示。
本文所使用的“机器可读介质(或计算机可读介质)”是指能够暂时或永久存储指令和数据的设备,可以包括但不限于随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、缓冲存储器、闪存、光学介质、磁性介质、高速缓冲存储器、其它类型的存储器(例如,可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EEPROM))和/或其任何合适的组合。术语“机器可读介质”应当理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”还应当理解为包括能够存储由一个或多个处理器905执行的指令的任何介质或多种介质的组合,当一个或多个处理器905执行这些指令时,这些指令使得一个或多个处理器905执行本文描述的任何一种或多种方法。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。本文使用的术语“机器可读介质”不包括信号本身。
另外,在不脱离本发明范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或集成。示出或描述为彼此耦合或直接耦合或通信的其它项可以采用电方式、机械方式或其它方式通过某一接口、设备或中间件间接耦合或通信。变化、替换、变更的其它示例可由本领域技术人员确定,并可以在不脱离本文公开的精神和范围的情况下举例。
虽然已经参考本发明的特定特征和实施例描述了本发明,但是明显在不脱离本发明的情况下可以制定本发明的各种修改和组合。例如,可以将其它组件添加到所描述的系统中或从所描述的系统中移除其它组件。因此,说明书和附图仅被视为所附权利要求书限定的对本发明的说明,并且预期覆盖落入本发明的范围内的任何和所有修改、变体、组合或等效物。其它方面可在所附权利要求书的范围内。
Claims (43)
1.一种计算机实现方法,其特征在于,用于使用网络服务基础设施内的无服务器函数访问用户虚拟私有云VPC,所述方法包括:
接收用户输入的第一配置信息,以配置所述用户的第一无服务器函数,所述第一配置信息用于确定所述第一无服务器函数要访问的用户VPC、所述第一无服务器函数的函数代码、以及结合所述第一无服务器函数使用的触发事件,其中,所述触发事件用于触发所述第一无服务器函数;
检测用于触发所述第一无服务器函数的所述触发事件;
响应于检测到用于触发所述第一无服务器函数的触发事件,执行第一计算资源中的所述第一无服务器函数的函数代码,其中,所述第一计算资源用于承载所述第一无服务器函数,所述第一无服务器函数的函数代码被加载到第一计算资源中;
在执行所述第一计算资源中的所述第一无服务器函数的函数代码的过程中,通过代理网关的第一网络接口获取所述第一计算资源发出的与所述第一无服务器函数关联的VPC寻址网络报文,通过所述代理网关的第二网络接口将与所述第一无服务器函数关联的VPC寻址网络报文传输到所述用户VPC,其中,所述第一网络接口连接到所述第一计算资源,所述第二网络接口连接到所述用户VPC。
2.根据权利要求1所述的方法,其特征在于,所述第一网络接口还连接到第二计算资源,所述第二计算资源用于承载第二无服务器函数,所述第二无服务器函数的函数代码加载在所述第二计算资源中,所述方法还包括:
在执行所述第二计算资源中的所述第二无服务器函数的函数代码的过程中,通过所述第一网络接口获取所述第二计算资源发出的与所述第二无服务器函数关联的VPC寻址网络报文,通过所述代理网关的第二网络接口将与所述第二无服务器函数关联的VPC寻址网络报文传输到所述用户VPC。
3.根据权利要求2所述的方法,其特征在于,在执行第二计算资源中的第二无服务器函数的第二函数代码之前,所述方法还包括:
接收第二配置信息,以配置所述第二无服务器函数,所述第二配置信息用于确定所述第二无服务器函数要访问所述用户VPC、所述第二无服务器函数的函数代码、以及结合所述第二无服务器函数使用的触发事件;
响应于检测到用于触发所述第二无服务器函数的触发事件,在所述第二计算资源中执行所述第二无服务器函数的函数代码。
4.根据权利要求2所述的方法,其特征在于,所述第一计算资源和所述第二计算资源设置在无服务器函数计算资源VPC中。
5.根据权利要求4所述的方法,其特征在于,所述第一网络接口通过交换机耦合到所述无服务器函数计算资源VPC。
6.根据权利要求5所述的方法,其特征在于,所述第一网络接口与所述无服务器函数计算资源VPC的子网中的IP地址关联。
7.根据权利要求2至6任一项所述的方法,其特征在于,所述第一无服务器函数和所述第二无服务器函数与访问所述网络服务基础设施提供的服务的同一个用户关联。
8.根据权利要求2至6任一项所述的方法,其特征在于,所述第一无服务器函数和所述第二无服务器函数分别与访问所述网络服务基础设施提供的服务的不同用户关联。
9.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
在配置第一无服务器函数时或在配置第一无服务器函数之前实例化所述代理网关。
10.根据权利要求2至6任一项所述的方法,其特征在于,所述第二网络接口与所述用户VPC的子网中的IP地址关联。
11.根据权利要求10所述的方法,其特征在于,还包括:
通过所述代理网关将从所述第一网络接口获取的与所述第一无服务器函数关联的VPC寻址网络报文的源IP地址转换为所述第二网络接口关联的所述用户VPC的子网中的IP地址,将从所述第一网络接口获取的与所述第一无服务器函数关联的VPC寻址网络报文的源端口转换为第一端口,并将转换后的与所述第一无服务器函数关联的VPC寻址网络报文通过所述第二网络接口传输至所述用户VPC。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
通过所述代理网关将从所述第一网络接口获取的与所述第二无服务器函数关联的VPC寻址网络报文的源IP地址转换为所述第二网络接口关联的所述用户VPC的子网中的IP地址,将从所述第一网络接口获取的与所述第二无服务器函数关联的VPC寻址网络报文的源端口转换为第二端口,并将转换后的与所述第二无服务器函数关联的VPC寻址网络报文通过所述第二网络接口传输至所述用户VPC。
13.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
在检测到用于触发所述第一无服务器函数的触发事件的数量突发时,在扩展的计算资源中执行所述第一无服务器函数的函数代码,其中,所述扩展的计算资源用于承载所述第一无服务器函数,所述第一无服务器函数的函数代码加载在所述扩展的计算资源中,并且所述代理网关的第一网络接口还连接到所述扩展的计算资源;
在所述扩展的计算资源执行所述第一无服务器函数的函数代码的过程中,通过所述第一网络接口接收所述扩展的计算资源发出的与所述第一无服务器函数关联的VPC寻址网络报文,通过所述第二网络接口将与所述第一无服务器函数关联的VPC寻址网络报文传输到所述用户VPC。
14.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
在检测到用于触发所述第一无服务器函数的触发事件时或在检测到用于触发所述第一无服务器函数的触发事件之前实例化所述第一计算资源,其中,所述第一计算资源包括运行语言库和所述第一无服务器函数的函数代码。
15.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
在检测到用于触发所述第一无服务器函数的触发事件之前实例化所述第一计算资源,且所述第一计算资源包括运行语言库,而不包括所述无服务器函数的函数代码,在检测到用于触发所述第一无服务器函数的触发事件时将所述第一无服务器函数的函数代码加载到所述第一计算资源中。
16.根据权利要求1至6任一项所述的方法,其特征在于,所述第一配置信息还用于确定所述第一无服务器函数使用的编程语言。
17.根据权利要求1至6任一项所述的方法,其特征在于,所述第一计算资源通过容器或虚拟机实现。
18.根据权利要求1至6任一项所述的方法,其特征在于,所述用户VPC中设置有所述用户的用户资源,所述无服务器函数用于访问所述用户VPC中的所述用户资源。
19.根据权利要求18所述的方法,其特征在于,所述用户资源包括虚拟机。
20.根据权利要求19所述的方法,其特征在于,所述虚拟机中运行有数据库服务。
21.一种基于云的系统,其特征在于,用于使用网络服务基础设施内的无服务器函数访问用户虚拟私有云VPC,所述系统包括:
无服务函数配置模块,用于接收用户输入的第一配置信息,以配置所述用户的第一无服务器函数,所述第一配置信息用于确定所述第一无服务器函数要访问的用户VPC、所述第一无服务器函数的函数代码、以及结合所述第一无服务器函数使用的触发事件,其中,所述触发事件用于触发所述第一无服务器函数;
事件检测和处理模块,用于检测用于触发所述第一无服务器函数的触发事件,响应于检测到用于触发所述第一无服务器函数的触发事件,在第一计算资源中执行所述第一无服务器函数的函数代码,其中,所述第一计算资源用于承载所述第一无服务器函数,所述第一无服务器函数的函数代码被加载到第一计算资源中;
代理网关,设置有连接到所述第一计算资源的第一网络接口和连接到所述用户VPC的第二网络接口,用于通过所述第一网络接口获取所述第一计算资源在执行所述第一无服务器函数的函数代码的过程中发出的与所述第一无服务器函数关联的VPC寻址网络报文,并所述第二网络接口将与所述第一无服务器函数关联的VPC寻址网络报文传输到所述用户VPC。
22.根据权利要求21所述的系统,其特征在于,所述第一网络接口还连接到第二计算资源,所述第二计算资源用于承载第二无服务器函数,所述第二无服务器函数的函数代码加载在所述第二计算资源中,其中:
所述代理网关,还用于通过所述第一网络接口获取第二计算资源在执行所述第二无服务器函数的函数代码的过程中发出的与所述第二无服务器函数关联的VPC寻址网络报文,并通过所述第二网络接口将与所述第二无服务器函数关联的VPC寻址网络报文传输到所述用户VPC。
23.根据权利要求22所述的系统,其特征在于,
所述无服务函数配置模块,还用于接收第二配置信息,以配置所述第二无服务器函数,所述第二配置信息用于确定所述第二无服务器函数要访问所述用户VPC、所述第二无服务器函数的函数代码、以及结合所述第二无服务器函数使用的触发事件,其中所述触发事件用于触发所述第二无服务器函数;
所述事件检测和处理模块,还用于检测用于触发所述第二无服务器函数的触发事件,并响应于检测到用于触发所述第二无服务器函数的触发事件,在第二计算资源中执行所述第二无服务器函数的函数代码。
24.根据权利要求22所述的系统,其特征在于,所述第一计算资源和所述第二计算资源设置在无服务器函数计算资源VPC中。
25.根据权利要求24所述的系统,其特征在于,所述第一网络接口通过交换机耦合到所述无服务器函数计算资源VPC。
26.根据权利要求25所述的系统,其特征在于,所述第一网络接口与所述无服务器函数计算资源VPC的子网中的IP地址关联。
27.根据权利要求22至26任一项所述的系统,其特征在于,所述第一无服务器函数和所述第二无服务器函数与访问所述网络服务基础设施提供的服务的同一个用户关联。
28.根据权利要求22至26任一项所述的系统,其特征在于,所述第一无服务器函数和所述第二无服务器函数分别与访问所述网络服务基础设施提供的服务的不同用户关联。
29.根据权利要求21至26任一项所述的系统,其特征在于,
所述无服务器函数配置模块,用于在配置第一无服务器函数时或在配置第一无服务器函数之前实例化所述代理网关。
30.根据权利要求22至26任一项所述的系统,其特征在于,所述第二网络接口与所述用户VPC的子网中的IP地址关联。
31.根据权利要求30所述的系统,其特征在于,
所述代理网关,用于将从所述第一网络接口获取与所述第一无服务器函数关联的VPC寻址网络报文的源IP地址转换为所述第二网络接口关联的所述用户VPC的子网中的IP地址,将从所述第一网络接口获取的与所述第一无服务器函数关联的VPC寻址网络报文的源端口转换为第一端口,并将转换后的与所述第一无服务器函数关联的VPC寻址网络报文通过所述第二网络接口传输至所述用户VPC。
32.根据权利要求31所述的系统,其特征在于,
所述代理网关,还用于将从所述第一网络接口获取的与所述第二无服务器函数关联的VPC寻址网络报文的源IP地址转换为所述第二网络接口关联的所述用户VPC的子网中的IP地址,将从所述第一网络接口获取的与所述第二无服务器函数关联的VPC寻址网络报文的源端口转换为第二端口,并将转换后的与所述第二无服务器函数关联的VPC寻址网络报文通过所述第二网络接口传输至所述用户VPC。
33.根据权利要求21至26任一项所述的系统,其特征在于,
所述事件检测和处理模块,还用于检测用于触发所述第一无服务器函数的触发事件的数量突发,并在检测到用于触发所述第一无服务器函数的触发事件的数量突发时,在扩展的计算资源中执行所述第一无服务器函数的函数代码,其中,所述扩展的计算资源用于承载所述第一无服务器函数,所述第一无服务器函数的函数代码加载在所述扩展的计算资源中,并且所述第一网络接口还连接到所述扩展的计算资源;
所述代理网关,用于在所述扩展的计算资源执行所述第一无服务器函数代码的过程中,通过所述第一网络接口接收所述扩展的计算资源发出的与所述第一无服务器函数关联的VPC寻址网络报文,通过所述第二网络接口将与所述第一无服务器函数关联的VPC寻址网络报文传输到所述用户VPC。
34.根据权利要求21至26任一项所述的系统,其特征在于,
所述无服务器函数配置模块,用于在检测到用于触发所述第一无服务器函数的触发事件时或在检测到用于触发所述第一无服务器函数的触发事件之前实例化所述第一计算资源,其中,所述第一计算资源包括运行语言库和所述第一无服务器函数的函数代码。
35.根据权利要求21至26任一项所述的系统,其特征在于,
所述事件检测和处理模块,用于在检测到用于触发所述第一无服务器函数的触发事件之前实例化所述第一计算资源,且所述第一计算资源包括运行语言库,而不包括所述无服务器函数的函数代码,并在检测到用于触发所述第一无服务器函数的触发事件时将所述第一无服务器函数的函数代码加载到所述第一计算资源中。
36.根据权利要求21至26任一项所述的系统,其特征在于,所述第一配置信息还用于确定所述第一无服务器函数使用的编程语言。
37.根据权利要求21至26任一项所述的系统,其特征在于,所述第一计算资源通过容器或虚拟机实现。
38.根据权利要求21至26任一项所述的系统,其特征在于,所述用户VPC中设置有所述用户的用户资源,所述无服务器函数用于访问所述用户VPC中的所述用户资源。
39.根据权利要求38所述的系统,其特征在于,所述用户资源包括虚拟机。
40.根据权利要求39所述的系统,其特征在于,所述虚拟机中运行有数据库服务。
41.一种计算设备,其特征在于,包括:
存储指令的存储器;
与所述存储器进行通信的一个或多个处理器,其中,所述一个或多个处理器执行所述指令以执行权利要求1至20任一项所述的方法。
42.一种非瞬时性计算机可读介质,其特征在于,存储计算机指令,所述计算机指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行权利要求1至20任一项所述的方法。
43.一种计算机程序产品,其特征在于,存储计算机指令,所述计算机指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行权利要求1至20任一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862784134P | 2018-12-21 | 2018-12-21 | |
US62/784,134 | 2018-12-21 | ||
CN201980085320.2A CN113614697B (zh) | 2018-12-21 | 2019-04-19 | 减少无服务器函数启动延迟的机制 |
PCT/CN2019/083334 WO2020124901A1 (en) | 2018-12-21 | 2019-04-19 | Mechanism to reduce serverless function startup latency |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980085320.2A Division CN113614697B (zh) | 2018-12-21 | 2019-04-19 | 减少无服务器函数启动延迟的机制 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115291964A CN115291964A (zh) | 2022-11-04 |
CN115291964B true CN115291964B (zh) | 2023-05-09 |
Family
ID=71100000
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980085320.2A Active CN113614697B (zh) | 2018-12-21 | 2019-04-19 | 减少无服务器函数启动延迟的机制 |
CN202210746712.2A Active CN115291964B (zh) | 2018-12-21 | 2019-04-19 | 减少无服务器函数启动延迟的机制 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980085320.2A Active CN113614697B (zh) | 2018-12-21 | 2019-04-19 | 减少无服务器函数启动延迟的机制 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11658939B2 (zh) |
EP (2) | EP3864514B1 (zh) |
CN (2) | CN113614697B (zh) |
WO (1) | WO2020124901A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11095558B2 (en) * | 2018-12-28 | 2021-08-17 | Alibaba Group Holding Limited | ASIC for routing a packet |
US11240045B2 (en) * | 2019-10-30 | 2022-02-01 | Red Hat, Inc. | Detection and prevention of unauthorized execution of severless functions |
US11422844B1 (en) | 2019-11-27 | 2022-08-23 | Amazon Technologies, Inc. | Client-specified network interface configuration for serverless container management service |
US11392422B1 (en) * | 2019-11-27 | 2022-07-19 | Amazon Technologies, Inc. | Service-managed containers for container orchestration service |
US11489844B2 (en) * | 2020-04-17 | 2022-11-01 | Twistlock Ltd. | On-the-fly creation of transient least privileged roles for serverless functions |
US11403150B1 (en) | 2020-06-23 | 2022-08-02 | Amazon Technologies, Inc. | Replenishment-aware resource usage management |
US11573816B1 (en) | 2020-06-26 | 2023-02-07 | Amazon Technologies, Inc. | Prefetching and managing container images using cluster manifest |
US11487591B1 (en) | 2020-06-29 | 2022-11-01 | Amazon Technologies, Inc. | Automatically configuring execution of a containerized application |
US11070621B1 (en) * | 2020-07-21 | 2021-07-20 | Cisco Technology, Inc. | Reuse of execution environments while guaranteeing isolation in serverless computing |
US11853807B1 (en) | 2020-12-01 | 2023-12-26 | Amazon Technologies, Inc. | Cluster scaling based on task state information |
WO2022120577A1 (zh) * | 2020-12-08 | 2022-06-16 | 中国科学院深圳先进技术研究院 | 一种预处理函数的无服务器计算方法及其系统 |
US11797287B1 (en) | 2021-03-17 | 2023-10-24 | Amazon Technologies, Inc. | Automatically terminating deployment of containerized applications |
CN113300985B (zh) * | 2021-03-30 | 2023-04-07 | 阿里巴巴(中国)有限公司 | 数据处理方法、装置、设备和存储介质 |
US11892418B1 (en) | 2021-06-30 | 2024-02-06 | Amazon Technologies, Inc. | Container image inspection and optimization |
US11995466B1 (en) | 2021-06-30 | 2024-05-28 | Amazon Technologies, Inc. | Scaling down computing resource allocations for execution of containerized applications |
US11989586B1 (en) | 2021-06-30 | 2024-05-21 | Amazon Technologies, Inc. | Scaling up computing resource allocations for execution of containerized applications |
US20230007092A1 (en) * | 2021-07-01 | 2023-01-05 | Citrix Systems, Inc. | Prediction-based resource provisioning in a cloud environment |
US11681445B2 (en) | 2021-09-30 | 2023-06-20 | Pure Storage, Inc. | Storage-aware optimization for serverless functions |
CN116016644A (zh) * | 2021-10-19 | 2023-04-25 | 中兴通讯股份有限公司 | 业务请求处理方法、网络设备及计算机可读存储介质 |
CN117896424A (zh) * | 2022-10-09 | 2024-04-16 | 华为云计算技术有限公司 | 一种无服务器函数配置系统、方法及装置 |
CN117111904B (zh) * | 2023-04-26 | 2024-05-28 | 领悦数字信息技术有限公司 | 用于将Web应用自动转换成无服务器函数的方法和系统 |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7408928B2 (en) * | 2001-12-21 | 2008-08-05 | Nortel Networks Limited | Methods and apparatus for setting up telephony connections between two address domains having overlapping address ranges |
US9378099B2 (en) * | 2005-06-24 | 2016-06-28 | Catalogic Software, Inc. | Instant data center recovery |
US20150088982A1 (en) * | 2006-09-25 | 2015-03-26 | Weaved, Inc. | Load balanced inter-device messaging |
US20110110377A1 (en) * | 2009-11-06 | 2011-05-12 | Microsoft Corporation | Employing Overlays for Securing Connections Across Networks |
CN102882758B (zh) * | 2011-07-12 | 2018-12-07 | 华为技术有限公司 | 虚拟私云接入网络的方法、网络侧设备和数据中心设备 |
US9749291B2 (en) * | 2011-07-15 | 2017-08-29 | International Business Machines Corporation | Securing applications on public facing systems |
US20210349749A1 (en) * | 2012-02-14 | 2021-11-11 | Aloke Guha | Systems and methods for dynamic provisioning of resources for virtualized |
US9444722B2 (en) * | 2013-08-01 | 2016-09-13 | Palo Alto Research Center Incorporated | Method and apparatus for configuring routing paths in a custodian-based routing architecture |
US9811365B2 (en) * | 2014-05-09 | 2017-11-07 | Amazon Technologies, Inc. | Migration of applications between an enterprise-based network and a multi-tenant network |
US10268492B2 (en) * | 2014-05-20 | 2019-04-23 | Amazon Technologies, Inc. | Low latency connections to workspaces in a cloud computing environment |
US20160218991A1 (en) * | 2015-01-23 | 2016-07-28 | Netapp, Inc. | Provisioning of isolated path from computer to co-located storage |
US9471775B1 (en) * | 2015-02-04 | 2016-10-18 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9588790B1 (en) * | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9727725B2 (en) * | 2015-02-04 | 2017-08-08 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9733967B2 (en) * | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US20160373405A1 (en) * | 2015-06-16 | 2016-12-22 | Amazon Technologies, Inc. | Managing dynamic ip address assignments |
US10021196B1 (en) * | 2015-06-22 | 2018-07-10 | Amazon Technologies, Inc. | Private service endpoints in isolated virtual networks |
US10002026B1 (en) * | 2015-12-21 | 2018-06-19 | Amazon Technologies, Inc. | Acquisition and maintenance of dedicated, reserved, and variable compute capacity |
US10320750B1 (en) * | 2016-03-30 | 2019-06-11 | Amazon Technologies, Inc. | Source specific network scanning in a distributed environment |
CN105657081B (zh) * | 2016-04-07 | 2019-01-18 | 华为技术有限公司 | 提供dhcp服务的方法、装置及系统 |
US10193749B2 (en) * | 2016-08-27 | 2019-01-29 | Nicira, Inc. | Managed forwarding element executing in public cloud data compute node without overlay network |
US20190182329A1 (en) * | 2016-10-08 | 2019-06-13 | People Power Company | Systems and methods for evaluating sensor data for occupancy detection and responsively controlling control devices |
US10303582B2 (en) * | 2016-10-25 | 2019-05-28 | International Business Machines Corporation | Facilitating debugging serverless applications via graph rewriting |
US10503748B1 (en) * | 2016-11-14 | 2019-12-10 | Amazon Technologies, Inc. | ELT management service with publish/subscribe architecture |
CN106789667B (zh) * | 2016-11-21 | 2021-01-01 | 华为技术有限公司 | 一种数据转发方法、相关设备及系统 |
US11023215B2 (en) * | 2016-12-21 | 2021-06-01 | Aon Global Operations Se, Singapore Branch | Methods, systems, and portal for accelerating aspects of data analytics application development and deployment |
US10931741B1 (en) * | 2017-01-13 | 2021-02-23 | Amazon Technologies, Inc. | Usage-sensitive computing instance management |
US10613885B2 (en) * | 2017-02-24 | 2020-04-07 | International Business Machines Corporation | Portable aggregated information calculation and injection for application containers |
US20180262467A1 (en) * | 2017-03-08 | 2018-09-13 | At&T Intellectual Property I, L.P. | Cloud-based ddos mitigation |
US10474501B2 (en) * | 2017-04-28 | 2019-11-12 | Databricks Inc. | Serverless execution of code using cluster resources |
US20180367528A1 (en) * | 2017-06-12 | 2018-12-20 | Cyberark Software Ltd. | Seamless Provision of Authentication Credential Data to Cloud-Based Assets on Demand |
US10725763B1 (en) * | 2017-06-28 | 2020-07-28 | Amazon Technologies, Inc. | Update and rollback of configurations in a cloud-based architecture |
US10409654B2 (en) * | 2017-07-13 | 2019-09-10 | International Business Machines Corporation | Facilitating event-driven processing using unikernels |
US10742750B2 (en) * | 2017-07-20 | 2020-08-11 | Cisco Technology, Inc. | Managing a distributed network of function execution environments |
US11088926B2 (en) * | 2017-09-01 | 2021-08-10 | Futurewei Technologies, Inc. | Instantiation of cloud-hosted functions based on call to function graph |
US10303450B2 (en) * | 2017-09-14 | 2019-05-28 | Cisco Technology, Inc. | Systems and methods for a policy-driven orchestration of deployment of distributed applications |
WO2019090523A1 (zh) * | 2017-11-08 | 2019-05-16 | 华为技术有限公司 | 一种无服务器架构下业务部署的方法和函数管理平台 |
US10536332B1 (en) * | 2017-11-15 | 2020-01-14 | Amazon Technologies, Inc. | Configuration invocation management |
US11030016B2 (en) * | 2017-12-07 | 2021-06-08 | International Business Machines Corporation | Computer server application execution scheduling latency reduction |
US11017107B2 (en) * | 2018-03-06 | 2021-05-25 | Amazon Technologies, Inc. | Pre-deployment security analyzer service for virtual computing resources |
US10649768B1 (en) * | 2018-03-12 | 2020-05-12 | Amazon Technologies, Inc. | Development code execution using a service proxy |
CN108415710B (zh) * | 2018-03-14 | 2019-07-16 | 苏州思必驰信息科技有限公司 | 在智能对话开发平台上发布、调用api的方法和系统 |
US10740149B2 (en) * | 2018-04-20 | 2020-08-11 | Verizon Patent And Licensing, Inc. | Serverless computing architecture |
US10853183B2 (en) * | 2018-04-27 | 2020-12-01 | EMC IP Holding Company LLC | Serverless application operational recovery and manifest creation |
US10782950B2 (en) * | 2018-05-01 | 2020-09-22 | Amazon Technologies, Inc. | Function portability for services hubs using a function checkpoint |
US10958734B2 (en) * | 2018-05-04 | 2021-03-23 | Digital Age Experts, Llc | Emulation of cloud computing service regions |
CN108845878A (zh) * | 2018-05-08 | 2018-11-20 | 南京理工大学 | 基于无服务器计算的大数据处理方法及装置 |
US20190347127A1 (en) * | 2018-05-09 | 2019-11-14 | Red Hat, Inc. | Service provisioning and orchestration for virtual machine to container migration |
US10817280B1 (en) * | 2018-05-21 | 2020-10-27 | Amazon Technologies, Inc. | Overriding shared service interfaces |
US11038847B1 (en) * | 2018-06-05 | 2021-06-15 | Amazon Technologies, Inc. | Facilitation of secure communications between a client and computing instance |
US10997409B1 (en) * | 2018-06-06 | 2021-05-04 | Amazon Technologies, Inc. | Provisioning information technology (IT) infrastructures based on images of system architecture diagrams |
US10719367B1 (en) * | 2018-06-27 | 2020-07-21 | Amazon Technologies, Inc. | Management of workers executing program code functions |
US10999253B2 (en) * | 2018-07-26 | 2021-05-04 | Juniper Networks, Inc. | Maintaining internet protocol security tunnels |
US11716264B2 (en) * | 2018-08-13 | 2023-08-01 | Cisco Technology, Inc. | In situ triggered function as a service within a service mesh |
US10999163B2 (en) * | 2018-08-14 | 2021-05-04 | Juniper Networks, Inc. | Multi-cloud virtual computing environment provisioning using a high-level topology description |
US10680831B2 (en) * | 2018-08-14 | 2020-06-09 | Juniper Networks, Inc. | Single point of management for multi-cloud environment including route propagation, security, and application deployment |
US11159569B2 (en) * | 2018-08-20 | 2021-10-26 | Cisco Technology, Inc. | Elastic policy scaling in multi-cloud fabrics |
US20200065124A1 (en) * | 2018-08-22 | 2020-02-27 | International Business Machines Corporation | Shortening just-in-time code warm up time of docker containers |
US10977111B2 (en) * | 2018-08-28 | 2021-04-13 | Amazon Technologies, Inc. | Constraint solver execution service and infrastructure therefor |
US20200082095A1 (en) * | 2018-09-11 | 2020-03-12 | Ca, Inc. | Independent development environment configured to annotate source code of container images with notifications of security vulnerabilities |
US20200120120A1 (en) * | 2018-10-10 | 2020-04-16 | Nuweba Labs Ltd. | Techniques for network inspection for serverless functions |
US10819586B2 (en) * | 2018-10-17 | 2020-10-27 | Servicenow, Inc. | Functional discovery and mapping of serverless resources |
US11043157B2 (en) * | 2018-10-25 | 2021-06-22 | Baylor University | System and method for a six-primary wide gamut color system |
US11012475B2 (en) * | 2018-10-26 | 2021-05-18 | Valtix, Inc. | Managing computer security services for cloud computing platforms |
US11113075B2 (en) * | 2018-11-14 | 2021-09-07 | International Business Machines Corporation | Launching a middleware-based application |
US11038778B2 (en) * | 2018-12-11 | 2021-06-15 | Vmware, Inc. | Methods and systems that provision distributed applications that invoke functions provided by a distributed-function-as-a-service feature |
US11184263B1 (en) * | 2020-05-19 | 2021-11-23 | Red Hat, Inc. | Intelligent serverless function scaling |
-
2019
- 2019-04-19 EP EP19898593.9A patent/EP3864514B1/en active Active
- 2019-04-19 EP EP22200715.5A patent/EP4145282A1/en active Pending
- 2019-04-19 WO PCT/CN2019/083334 patent/WO2020124901A1/en unknown
- 2019-04-19 CN CN201980085320.2A patent/CN113614697B/zh active Active
- 2019-04-19 CN CN202210746712.2A patent/CN115291964B/zh active Active
-
2020
- 2020-03-11 US US16/815,226 patent/US11658939B2/en active Active
-
2023
- 2023-01-20 US US18/099,792 patent/US20230155982A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN113614697B (zh) | 2023-10-13 |
US11658939B2 (en) | 2023-05-23 |
EP4145282A1 (en) | 2023-03-08 |
US20230155982A1 (en) | 2023-05-18 |
CN113614697A (zh) | 2021-11-05 |
EP3864514A4 (en) | 2021-11-24 |
EP3864514A1 (en) | 2021-08-18 |
US20200213279A1 (en) | 2020-07-02 |
EP3864514B1 (en) | 2023-09-06 |
WO2020124901A1 (en) | 2020-06-25 |
CN115291964A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115291964B (zh) | 减少无服务器函数启动延迟的机制 | |
US9749145B2 (en) | Interoperability for distributed overlay virtual environment | |
US9378042B2 (en) | Virtual machine multicast/broadcast in virtual network | |
US9628290B2 (en) | Traffic migration acceleration for overlay virtual environments | |
US10887276B1 (en) | DNS-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks | |
US20170134278A1 (en) | Independent network interfaces for virtual network environments | |
CN112513816B (zh) | 函数即服务(faas)执行分配器 | |
US20170052807A1 (en) | Methods, apparatuses, and computer program products for deploying and managing software containers | |
US20140122572A1 (en) | Enterprise service bus routing system | |
US11095716B2 (en) | Data replication for a virtual networking system | |
US20230216895A1 (en) | Network-based media processing (nbmp) workflow management through 5g framework for live uplink streaming (flus) control | |
US20160266921A1 (en) | Virtual appliance management in a virtualized computing environment | |
US10547590B1 (en) | Network processing using asynchronous functions | |
CN113342457A (zh) | 基于Eureka服务注册与发现的Kubernetes调度方法 | |
CN108353017B (zh) | 计算系统和用于操作多网关虚拟机上的多个网关的方法 | |
CN112162819A (zh) | 跨虚拟机和Kubernetes集群的应用部署方法 | |
US12001859B1 (en) | Driver plugin wrapper for container orchestration systems | |
US20240160453A1 (en) | Driver plugin wrapper for container orchestration systems | |
US20240069949A1 (en) | Applying hypervisor-based containers to a cluster of a container orchestration system | |
US20220300358A1 (en) | Accessing service application components across multiple devices | |
US10892999B1 (en) | Detection of hardware assistance for an overlay network | |
CN117648511A (zh) | 信息整合方法、装置、设备及存储介质 | |
CN117453380A (zh) | 集群的容器组调度方法、系统以及计算机设备 | |
CN116820681A (zh) | 容器组合处理方法、装置、设备及存储介质 | |
CN113422921A (zh) | 基于K8s集群的音/视频通信系统、方法、介质及计算设备 |
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 |