CN105556475A - 请求处理技术 - Google Patents
请求处理技术 Download PDFInfo
- Publication number
- CN105556475A CN105556475A CN201480052085.6A CN201480052085A CN105556475A CN 105556475 A CN105556475 A CN 105556475A CN 201480052085 A CN201480052085 A CN 201480052085A CN 105556475 A CN105556475 A CN 105556475A
- Authority
- CN
- China
- Prior art keywords
- request
- computer system
- application
- controller
- audiomonitor
- 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.)
- Granted
Links
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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
-
- 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/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- 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/4555—Para-virtualisation, i.e. guest operating system has to be modified
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种计算机系统实施管理程序,所述管理程序则实施一个或多个计算机系统实例和控制器。所述控制器和计算机系统实例共享存储器。使用所述计算机系统实例和所述控制器两者的设备来处理请求。作为请求处理的一部分,信息经由共享存储器而在所述计算机系统实例与所述控制器之间传递。
Description
相关申请案的交叉参考
本申请案主张2013年8月12日申请的标题为“根据请求的计算机系统实例(PERREQUESTCOMPUTERSYSTEMINSTANCES)”的第13/964,977号、标题为“应用引导映像(APPLICATIONBOOTIMAGE)”的第13/964,941号以及标题为“请求处理技术(REQUESTPROCESSINGTECHNIQUES)”的第13/964,889号共同待决的美国专利申请案,所述专利申请案的内容全文以引用的方式并入本文中。
背景技术
电子请求的服务可能需要各种资源量。例如,请求服务的规模可以在微小的无状态计算到耗时的大规模并行应用的范围内。请求的服务通常只需要有限的计算资源量,通常少于计算机系统用来服务可用的请求的资源量。因此,计算资源经常没有被充分使用,并且一般来说,用于处理请求的传统技术具有很多的缺点。在很多方面,虚拟化改善了使用计算资源的方式,例如,允许单个物理计算机系统实施多个同时运行的虚拟计算机系统,从而提供可调整大小的能力,使得开发人员易于弹性增加规模。
然而,归因于服务请求所需的资源以及加速和拆除虚拟计算机系统(实例)的成本摊销,传统虚拟化技术在开发人员减少计算规模的能力方面会受到基本限制。服务虚拟化的实际实施通常依赖于预期工作负载将占据几分钟、几小时或甚至更长时间。例如,在很多应用中,可以相对不常使用虚拟计算机系统。然而,为了让虚拟计算机系统能够为请求服务,虚拟计算机系统必须维持在操作状态,这需要用于计算机系统的操作系统的计算资源以及其他资源(例如,网络资源)。当此类计算机系统未被充分使用时,为那些计算机系统分配的资源中的至少一个通常不可用于其他用途。
附图说明
将参考附图描述根据本公开的各个实施方案,在附图中:
图1A示出展示了本公开的各方面的图解的说明性示例;
图1B示出展示了本公开的各方面的图解的说明性示例;
图1C示出展示了本公开的各方面的图解的说明性示例;
图2示出可以实施各个实施方案的环境的说明性示例;
图3示出将通用计算机系统实例与请求实例进行比较的说明性图解;
图4示出可以用来实施本公开的各个实施方案的计算机系统的配置的说明性示例;
图5示出可以实施各个实施方案的环境的说明性示例;
图6示出根据至少一个实施方案的用于处理请求的过程的说明性示例;
图7示出根据至少一个实施方案的用于处理请求的过程的说明性示例;
图8示出根据至少一个实施方案的用于处理请求的过程的说明性示例;
图9示出可以实施各个实施方案的环境的说明性示例;
图10示出根据至少一个实施方案的用于构建应用图像的过程的说明性示例;
图11示出根据至少一个实施方案的用于识别应用代码执行中的安全点的过程的说明性示例;
图12示出根据至少一个实施方案的用于识别应用代码执行中的安全点的过程的说明性示例;
图13示出根据至少一个实施方案的工作者管理程序及其部件的说明性示例;
图14示出根据至少一个实施方案的用于处理请求的过程的说明性示例;
图15示出可以实施各个实施方案的环境。
具体实施方式
以下描述内容将描述各种实施方案。出于解释说明的目的,列出了具体配置和细节,以便全面理解实施方案。然而,所属领域的技术人员将显而易见的认识到,可以在没有这些具体细节的情况下实践这些实施方案。此外,众所周知的特征可被忽略或简化,以便不掩盖描述的实施方案。
本文中描述和建议的技术涉及通过虚拟计算机系统来处理请求,为了计算效率、减少延迟和/或其他优势的目的,所述虚拟计算机系统缺少传统应用堆栈中的若干层。此类虚拟计算机系统可使用大体更少的资源实施,从而实现技术优势,例如,启动时间更快、计算开销减少,以及能够使用物理计算装置(主机计算机系统)来实施更大数量的虚拟机。
在一个实施方案中,管理程序由计算机系统操作,以便将计算机系统的各种计算资源虚拟化,例如,处理资源、存储资源、网络资源等。尽管将底层计算机系统的物理计算资源虚拟化的管理程序始终用于说明的目的,但管理程序可以是若干虚拟化层中的一个,并且因此,可以将计算资源虚拟化,所述计算资源在所述管理程序看来是由另一管理程序提供的虚拟化资源。一般来说,管理程序可以用来在计算机系统、工作者控制器以及一个或多个虚拟计算机系统实例(实例)上实施。特定实例可以缺少传统上用来实施实例的应用程序堆栈中的各种层。例如,实例可以缺少操作系统和相关联的资源。在一些示例中,实例直接在管理程序上执行语言运行时,而不需要各种部件,例如,操作系统内核、各种进程、语言虚拟机、完整的网络堆栈和/或其他部件。工作者控制器可以被实施为在管理程序或以其他方式执行的进程,从而使得工作者控制器可以使用实例可能缺少的特权功能。在一些实施方案中,实例可能缺少实施协议堆栈的一个或多个层(例如,开放系统互联(OSI)模型协议堆栈的一到六级),而控制器实施所述一个或多个层。此外,控制器和实例可以各自实施协议堆栈的至少一个共享层(例如,控制器和实例都可以实施OSI协议堆栈的第七层,即,应用层)。一个或多个共享层可以用来使用下文论述的共享存储区在控制器与实例之间传送信息。
在一个实施方案中,实例利用工作者控制器的各种部件,以用于处理各种请求的目的。为了能够像这样利用工作者控制器的能力,管理程序可以实施由实例和工作者控制器共享的共享存储区。如下文更详细地论述,处理请求中涉及的数据(例如,响应于请求的数据)可以经由共享存储区传送到工作者控制器。可以利用各种技术来实现有效处理请求以及跟踪经过共享存储区的数据。
在一个实施方案中,实例的已执行应用代码使用HTTP对象模型进行HTTP请求。应用代码可以实例化并且配置HTTP请求对象,以用于发送或接收HTTP请求。尽管结合HTTP描述了各种技术,但本公开的各种实施方案适于用在其他协议中,例如,文件传输协议(FTP)、域名服务(DNS)以及其他协议。在此特定的说明性示例中,HTTP对象模型可以访问半虚拟HTTP驱动器,所述驱动器通过管理程序来实现实例与工作者控制器之间的通信。尽管半虚拟HTTP驱动器用于说明的目的,但一般来说,可以通过与半虚拟装置驱动器的交互来实现从实例到控制器的共享存储区中的数据的通知。
作为HTTP对象模型访问半虚拟HTTP驱动器的结果,半虚拟HTTP驱动器可以在实例和工作者控制器共享的共享存储区内的控制空间中创建请求记录。请求记录可以包括适合唯一识别请求记录的标识符。半虚拟HTTP驱动器可以分配共享存储区内的与请求记录相关联的请求插槽。此时,半虚拟HTTP驱动器可以使用超级调用接口进行请求服务超级调用。HTTP驱动器可以进行超级调用,表明请求记录需要得到服务。因此,超级调用接口可以通知在工作者控制器内部操作的HTTP超级调用处理程序。HTTP超级调用处理程序继而可以从共享存储区检索请求记录。至少部分基于检索的请求记录以及由半虚拟HTTP驱动器放入与请求记录相关联的请求插槽中的请求数据,HTTP超级调用处理程序可以使用所述请求来进行本机HTTP请求。
超级调用处理程序可以使用第二HTTP对象模型来构建第二HTTP请求。超级调用处理程序可以访问与请求记录相关联的请求插槽,并且基于请求插槽的内容来构建实体主体或者配置HTTP请求。一旦构建之后,HTTP超级调用处理程序可使用本机网络堆栈进行本机HTTP请求。通过更新请求记录和相关联的请求插槽,超级调用处理程序可以返回来自第二HTTP请求的数据或结果。通过这种方式,实例能够利用工作者控制器的网络堆栈,而无需维持自己的网络堆栈。
本文中描述和建议的技术用于有效使用请求的处理中所涉及的计算资源。在一个实施方案中,当接收到请求时,可以部署虚拟机以用于对请求作出响应。虚拟机可以被配置来缺少各种部件,例如,传统的操作系统和本机网络堆栈,而包括这些部件将导致处理请求时出现额外的时延。当不再需要处理请求时,或者在之后的时间,可以撤销虚拟机。
在一个实施方案中,系统包括前端监听器。前端监听器可以包括两个监听器。第一监听器可以被配置来监听指向多个应用的请求,每个可由不同的虚拟机服务。如下文更详细地描述,第二监听器可以被配置来监听针对第一监听器接收的请求的复本的请求。至于第一监听器的功能,前端监听器可以多路复用,以监听多种网络地址处的请求,例如,不同的主机名称、端口、应用路径、统一资源定位符(URL)、统一资源标识符(URI)等。在一些实施方案中,域名系统(DNS)可以被配置来将不同的域名(或者一般来说,不同的信息实例)分解给对应于前端监听器的相同网络(例如,IP)地址。不同的域名或其他信息实例可以对应于不同的应用图像。
当接收到请求时,前端监听器可以将工作令牌(worktoken)排队到请求队列上。请求令牌可以包括使得能够确定请求及其相关联的数据的信息。例如,通过访问请求队列中的下一可用消息,在工作者管理程序的内部操作的工作者控制器可以使请求工作令牌离队。或者,请求令牌可以被推送到工作者管理程序。在离队或以其他方式获取请求工作令牌之后,工作者控制器可以使用工作令牌来从一组可用应用图像中确定适当的应用图像,并且从应用图像存储库中检索确定的适当应用图像,所述应用图像存储库可以是本地缓存或外部数据存储系统。
一旦已经获取适当的应用,至少部分基于应用图像,工作者控制器便可以指示工作者管理程序来实例化请求实例。例如,通过指示工作者管理程序来构建请求实例专用的新用户分区,工作者控制器可以指示实例化请求实例的过程中涉及的各种操作使用工作者管理程序上的控制API和/或以其他方式将处理器、存储器或其他资源分配给用户分区。工作者控制器也可以构建至少包括应用图像的共享存储区,并且可以指示工作者管理程序将共享存储区映射到用户分区的地址空间中,作为只读存储器。
引导程序可以用来将来自共享存储区的应用图像的至少一部分复制到被分配给用户分区的存储器中。引导程序可以检索与来自共享存储区的应用图像的复制部分相关联的入口点地址,并且可以基于入口点开始执行应用代码。在应用代码执行之后,请求实例可以尝试访问请求。响应于请求实例尝试访问请求,工作者控制器可以定位出与请求实例相关联的请求工作令牌,并且与请求工作令牌识别的前端监听器建立连接。前端监听器(例如,上述第二监听器)可以监控工作连接请求,并且基于请求工作令牌中包括的识别信息,可以定位出接收到的请求。前端监听器可以复制用来接收所述接收到的请求的套接字句柄(sockethandle),并且将复制的套接字给到监听工作连接请求的监听器。监听工作连接请求的监听器可以根据请求实例使用复制的套接字来读取和写入数据。一旦已经提供数据,请求实例便可以处理和响应接收到的请求。在各个实施方案中,相对于请求同步提供响应。例如,可以将响应提供给同一网络连接上的请求器,或者以其他方式通过接收请求的相同连接介质提供所述响应。
本文中描述和建议的技术涉及将被用来实例化虚拟计算机系统的图像的准备。在各实施方案中,虚拟计算机系统可以被配置来实现很多的技术优势,例如,启动时间更快、计算开销减少,以及能够使用物理计算装置(主机计算机系统)来实施更大数量的虚拟机。此外,如下文描述,使用各种技术来进一步强化这些优势。
在一个实施方案中,应用代码经过处理以生成应用图像,所述应用图像可以被用来实例化虚拟机实例。应用源可以被构建系统接收。应用源可以由开发人员通过(例如)网络服务应用编程界面(API)或版本控制系统提交。应用源可以包括源文件、配置文件、资源文件(例如,网页、图形图像或其他媒体文件)、二进制文件和/或其他信息。构建系统可以处理应用,从而解析应用,以产生有注释的源。处理所述应用可以包括检查应用源的可执行部分,以确定执行可能最先开始在程序中变化的一个或多个位置。此外,处理所述应用可以包括为应用源创建注释。通过识别一个或多个入口点以用于执行应用源,可以生成所述注释。通过从一个或多个入口点开始解析、解译或以其他方式分析应用源直到检测到潜在变化为止,可以确定入口点,所述潜在变化是执行中的一个点,其中可以针对应用的不同执行来改变执行。
一旦已经生成有注释的应用源,构建系统便可以将有注释的源传输到构建管理程序实施的构建控制器。构建控制器可以访问构建引导程序,所述构建引导程序可以被配置来针对有注释的源来引导内核。引导程序可以包括将内核和有注释的源读到存储器中的例程。引导程序可以包括在有注释的源中的确定变化位置处设置断点(breakpoint)的例程。引导程序可以包括从内核入口点开始执行内核的例程。
至少部分基于有注释的源和构建引导程序,构建控制器可以创建构建实例。通过将从中可以访问有注释的源和引导程序的虚拟机(虚拟计算机系统)实例化,可以创建出构建实例。可以执行应用,直到到达变化点为止。达到变化点可以导致应用的执行停止。如果需要,应用的执行可以调整到安全点,所述安全点可对应于应用执行中的点,其中执行应用的虚拟机的状态快照可用作之后在同一或不同物理计算机系统上执行应用的起始点。
因此,在各实施方案中,虚拟机的快照被存储,以便之后使用。快照可包括能够继续执行应用的入口点地址。快照可以置于可由工作者管理程序和/或一个或多个其他工作者管理程序访问的应用图像存储库中。工作者管理程序可以从应用图像存储库检索应用图像,并且在入口点地址处继续应用的执行。通过这种方式,应用执行的不变部分在应用被加载和使用之前得到处理。因此,与每次应用被加载到计算机系统上时都要处理应用执行的不变部分相比,应用可以被加载和使用以便更快地处理请求。
图1B示出展示了本公开的各实施方案的图解。如图所示,应用源102b被构建机器104b处理,所述构建机器可以是虚拟机,其被配置来执行应用指令并且在检测到变化点时停止应用执行的执行。构建机器可以在变化点或者变化点附近的安全点处拍快照,以便生成应用引导图像106b,如上述并且下文更详细地描述,所述应用引导图像可以用于实例化用来处理请求的虚拟机。
图1C示出展示了本公开的各方面的图解100c。如图1C所示,图解100c示出请求102c的接收,例如,所述请求可以是用以执行一个或多个操作的请求。例如,可以根据超文本传输协议(HTTP)或另一通信协议提交所述请求。在一个实施方案中,所述请求可由一个或多个应用服务,所述应用可包括被配置来服务所述请求的一个或多个编程模块,例如,通过对数据执行一个或多个操作、将通信传输到其他计算机系统和/或以其他方式与数据交互,所述数据是请求的一部分或以其他方式与请求相关联。
图1A示出展示了本公开的各方面的说明性图解,包括上文论述的那些。具体而言,图1A示出实施一个或多个实例102a的管理程序100a,所述实例可具有受限的能力,例如,上文所述。为了使得实例102a能够处理提交到所述实例的请求,实例可以使用也由管理程序实施的工作者控制器104a的各种能力。管理程序可以实施实例102a和工作者控制器104a都可访问的共享存储器106a。根据适合实例服务的特定请求,数据可以在两个方向上流动。实例可被配置来允许工作者控制器访问数据和完成请求的处理的方式使数据进入共享存储器106a。类似地,工作者控制器可被配置来从共享存储器中定位出数据并且相应地处理数据。管理程序可以协调实例与工作者控制器之间的通信,以便提供放入共享存储器中的数据的通知。通过这种方式,尽管位于管理程序执行的独立逻辑区域中,但数据可以在请求实例与工作者控制器之间传输,从而可以利用工作者控制器的能力。
应了解,并且如先前所述,物理主机可以在分布式计算系统和/或数据中心中互连的多个服务器之间。图2示出可以使用各实施方案的分布式计算和/或数据中心环境200。多个客户装置202经由公用网络204与数据中心206通信。客户装置可包括能够经由公用或其他网络连接到数据中心的任何装置,例如,个人计算机、智能电话、平板计算装置等。在一个示例性实施方案中,所述公用网络可以是互联网,但本文中预期其他公开可用的网络(例如,移动和/或无线网络),此外,尽管公用网络204用于说明的目的,但可使用不必公用的其他网络和/或网络的组合。在一些情况下,客户装置可通过导向光纤或其他连接(例如,经由到达数据中心206的租用线路)与数据中心206通信。数据中心206包括一个或多个管理部件,包括但不限于,控制平面208、网关210和/或监控实体212,所述部件共同经由内部网络214连接到多个内部服务器216。控制平面208可以接收操作数据中心的计算资源的请求,例如,部署资源、改变路线或执行维护,包括更新在数据中心的各个部件上运行的代码。网关210可以将业务量过滤和路由进入和离开数据中心,例如,经由内部网络到达和/或来自服务器。监控实体可以接收和报告有关数据中心中的计算资源的状态的信息,例如,有关内部服务器的信息。
每个内部服务器可由多个逻辑机插槽218共享,每个插槽能够运行一个或多个应用,如下文描述,例如,是将给定服务器的硬件提取到多个半独立执行环境中的虚拟化系统的情况。例如,每个插槽均可访问一个或多个虚拟处理器(VCPU)。先前描述的任何数量的多个客户装置无需任何数量插槽中的操作系统便可运行任何数量的访客操作系统或访客应用,一直到数据中心的界限(无论是物理的、逻辑的还是外部强加的),并且插槽根据若干操作和/或业务相关标准中的一个或多个而被分配给客户,例如,地理接近、分配给用户的支持水平和/或资源、服务器和/或插槽健康状况和/或准备状态等。因此,至少结合图1A到图1C描述的技术可以缩放和/或调整,以提供有效的请求处理。
如所论述,本公开的各实施方案使用实现处理请求的很多技术优势的技术,例如,更有效地使用计算资源和减少延迟。因此,图3示出可用来实现某些优势的各种技术的说明性示例。如图所示,通用虚拟计算机系统(实例)的配置302由物理计算机系统(物理主机或物理主机计算机系统)实例化。与通用计算机系统相比,还示出由物理计算机系统实例化的实例304(请求实例)。
如图3所示,使用适当的计算机硬件实施通用实例,包括一个或多个中央处理单元(CPU)、易失性和/或非易失性存储器、网络接口插件和/或其他计算资源。硬件与直接在硬件上运行的虚拟机监控器或管理程序配合,例如,“裸金属”或本机管理程序。此类管理程序的示例包括Xen、等。管理程序通常以比机器上的任何其他软件更高更具特权的处理器状态运行,并且提供服务,例如,用于相关层和/或域的存储器管理和处理器调度。最有特权的此类层和/或域(在一些实施方案中称为dom0)位于服务域层,其可包括用于配置管理程序的操作和功能的管理操作系统,以及权限较低的域,例如,访客域,包括访客操作系统和/或在没有传统操作系统的情况下执行的应用,如下文描述。访客域可以是异构的(例如,彼此运行不同的操作系统和/或应用)。服务域可以通过管理程序来直接访问服务器302的硬件资源,而用户域则不可以。
针对特定的虚拟计算机系统,操作系统(OS)内核(例如,Linux内核)可与管理程序交互,以用于利用硬件的各种计算资源的目的。例如,OS内核可被配置来通过与管理程序提供的虚拟化硬件交互来管理一个或多个用户进程的输入/输出(I/O)请求。用户进程可以实施语言虚拟机,所述语言虚拟机可以是在通用实例的内部逻辑实施的虚拟机(VM),为的是实施特定的对应编程语言,例如,脚本语言。语言VM可允许语言运行时创建一个或多个线程,以实现其操作。应用代码可针对其操作来利用语言运行时(即,硬件可以根据应用代码和语言运行时操作,其中应用代码可操作语言运行时)。
现在参考请求实例配置304,请求实例以减少计算资源开销的方式实施。具体而言,与通用实例配置一样,使用将硬件资源虚拟化的管理程序来实施请求实例。然而,请求实例与语言运行时一起实施,所述语言运行时被配置来直接在管理程序之上执行,而不是通过针对通用实例示出的堆栈。通过这种方式,由数百万的代码行造成的开销(相对于通用实例而言)可被节省并且用于其他目的。
图4示出这种配置可如何在各种环境中实施的图解。如图所示,计算机硬件402可以被管理程序404虚拟化,例如,Xen管理程序。管理程序404可被特权管理域Dom0和非特权域DomU使用。在一个实施方案中,Dom0包括本机OS406,其可包括OS内核408(例如,Linux内核)和本机驱动器410,所述本机驱动器被配置来使得能够与管理程序404提供的虚拟化硬件进行应用和OS交互。本机OS可以支持各种管理应用,例如,请求路由应用412、只读应用存储414以及HTTP堆栈416。如下文论述,HTTP堆栈可以被DomU用来实现资源开销较少的应用的操作。在一些实施方案中,管理功能中的一些或全部均可由单独存根域中的进程执行,所述存根域是非特权的,但由服务提供商操作,为的是提高Dom0的安全性。
在一个实施方案中,DomU经由应用二进制接口(ABI)实施到管理程序404,以便利用HTTP堆栈416。例如,可使用通过超级调用来与实际装置驱动器通信的分离驱动模型来提供I/O。例如,如图所示,Node.jsHTTP模块可使用Dom0的HTTP驱动器来提供http.createServer和http.request实施,而不是对照虚拟网络适配器来构建TCP/IP堆栈,这将需要更多的开销。如图所示,在此说明性示例中,JavaScript引擎420、虚拟存储驱动器422和HTTP驱动器424通过ABI418直接与管理程序404交互,而不是通过干预操作系统。JavaScript引擎420、虚拟存储驱动器422和HTTP驱动器424为node.js平台426和JavaScript软件开发工具包(SDK)428提供支持,继而支持用JavaScript编写的应用代码430。尽管JavaScript和支持部件在本文中用于说明的目的,但本公开的范围并不限于本文中明确描述的实施方案。例如,本文中描述的技术可以与其他脚本语言一起使用,并且通常用于多种类型的应用代码。
图5示出可以实践各个实施方案的环境500的说明性示例。如图5所示,环境包括前端监听器502、请求队列504、工作者控制器506以及应用图像存储库508。环境500的部件可以使用单个物理计算机系统实施,但一些部件可以在能够通过网络进行通信的不同计算机系统上实施。在一个实施方案中,前端监听器是计算机系统或其上执行的进程(即,正被执行的计算机程序的实例),被配置来监听指向多个应用的请求。例如,前端监听器可以多路复用,以监听多种网络地址(例如,公用和/或专用互联网协议(IP)地址)处的请求,例如,不同主机名称、端口和应用路径。可用来实例化虚拟计算机系统的应用图像可各自具有对应的网络地址,从而当寻址到网络地址的请求被接收时,应用图像便可用来实例化处理所述请求的虚拟计算机系统。
在一些实施方案中,前端监听器502可包括用于验证的编程逻辑,以便过滤请求。例如,前端监听器可配置有应用注册服务,所述应用注册服务表明哪些网络地址对应于有效应用。前端监听器也可被配置来限制或阻止格式不当的请求、恶意请求或者接收数量过多的请求。在一些实施方案中,前端监听器502配置有负载平衡功能。例如,前端监听器502可以散列请求中的信息和/或与请求相关联的信息,以便确定散列值,所述散列值用来确定哪个装置提供工作令牌(例如,以确定使用哪个请求队列)。前端监听器502也可使用一个或多个负载平衡技术来分布工作令牌,这可包括至少部分基于若干潜在请求队列中的每个中存在的令牌数量来分布令牌。
请求队列504可以是数据结构或使用队列数据结构的编程模块,其被配置来存储对应于由前端监听器接收并且由前端接收器排队的请求的工作令牌。例如,前端监听器502可被配置来构建对应于接收到的请求的工作令牌。工作令牌可包括进程标识符、插槽标识符或者其他类似的识别信息,所述识别信息可操作以将工作令牌与用于继续处理请求的恢复点相关联。工作令牌可包括基于监听地址或基于请求内含有的地址信息的应用地址。例如,通过将请求工作令牌序列化成消息格式并且将序列化令牌添加到消息队列,前端监听器也可将请求工作令牌排队。在一些实施方案中,请求工作令牌可配置有有限的寿命。例如,前端监听器可将到期时间附加到请求工作令牌,作为将请求工作令牌排队到请求队列上的一部分。请求队列可被配置来如果在到期时间内没有满足请求则自动终止或弹出请求作令牌。
在一个实施方案中,工作者管理程序506是配置有能力实例化请求实例以用于处理接收到的请求的管理程序。工作者管理程序可在多个工作者管理程序的竞争性用户环境中操作。为了执行其操作,工作者管理程序506可配置有工作者控制器510,所述工作者控制器可以是被配置来处理来自请求队列504的工作令牌的进程。工作者控制器可由与实施前端监听器502的计算机装置不同的计算装置来实施。工作者控制器可以在管理程序的特权域中实施(而管理程序实施的任何请求实例可在很少有特权/非特权域中实施)。此外,尽管出于说明的目的,本公开使用工作者控制器510,但工作者控制器510的功能可以分布在多个不同的进程之中。换言之,工作者控制器510可以指多个进程的集合。一般来说,除非上下文中另外清楚地指出,否则本文中说明的部件可以采用各种方式实施(例如,通过在多个不同的进程之中分布各个功能的责任),并且本公开的范围不必限于本文中明确描述的说明性实施方案。返回到图5的说明性示例。为了使请求从请求队列504离队,工作者控制器可为请求工作令牌获取专有且时间有限的租用,而无需从请求队列中移除请求工作令牌。如果工作者控制器没有在有限的时间内满足请求,那么请求工作令牌可自动变得再次可用或者返回到请求队列。在一些实施方案中,工作者控制器504被配置来管理当前处理的若干请求令牌。例如,在检测到处理请求的可用能力之后,工作者控制器504可以使工作令牌离队,而在缺少用于请求处理的额外能力时避免使工作令牌离队。
作为另一示例,工作者控制器510可被配置来从应用图像508的存储库中检索适当的应用图像,以执行请求。例如,至少部分基于请求工作令牌,工作者控制器510可确定适当的应用图像。例如,在一些实施方案中,工作者控制器可以将请求工作令牌内的应用地址解析为URI、针对请求路径提取URI的一部分,以及查询目录服务,以便查找用于请求路径的应用图像。在一些实施方案中,在访问外部应用图像存储库之前,工作者控制器510可查询工作者管理程序处已经可用的应用图像(非图片)的缓存。所述缓存可被配置来能够比应用图像存储库508更快地访问应用图像。例如,缓存可以实施在随机存取存储器(RAM)中,而应用存储库可利用更慢但更持续的存储设备,例如,带有旋转磁性介质的硬盘、固态驱动器或者其他装置。
在各实施方案中,工作者控制器510也被配置来实例化请求实例512。作为示例,工作者控制器510可被配置来与工作者管理程序506交互,以执行各种操作,例如,构建请求实例专用的新用户分区,使用工作者管理程序506上的控制应用编程接口(API)将处理器、存储器或其他资源分配给用户分区,构建共享存储区,以及指示工作者管理程序506将共享存储区映射到用户分区的地址空间,作为只读存储器。工作者控制器510也可与引导程序交互,所述引导程序被配置来将来自共享存储区的应用图像的至少一部分复制到被分配给用户分区的存储器中。例如,引导程序可与来自共享存储区的应用图像的复制部分相关联的检索入口点地址(例如,在用于应用图像的快照时指出的指令指标的地址),并且可以基于入口点开始执行应用代码。
此外,如上文所述,工作者控制器可利用工作令牌来与前端监听器502接收到的对应请求建立逻辑连接。通过这种方式,当请求实例中的应用代码尝试访问请求时,工作者控制器510可以定位出与请求实例相关联的请求工作令牌,并且与请求工作令牌识别的前端监听器建立连接。接着,前端监听器可被配置来监听来自请求实例的工作连接请求。例如,前端监听器可被配置来基于请求工作令牌中包括的识别信息来定位出接收到的请求。前端监听器也可被配置来复制用来接收所述接收到的请求的套接字句柄,并且将复制的套接字给到监听工作连接请求的监听器。监听工作连接请求的监听器可以根据请求实例512使用复制的套接字来读取和写入数据。
图6示出可用来响应请求的过程600的说明性示例。例如,过程600的操作可由上文结合图5论述的环境500的各个部件来执行,下文更详细地论述。在一个实施方案中,过程600包括接收602请求,所述请求可以是用户装置通过网络提交的请求,如上文描述。例如,请求可由(例如)上文结合图5描述的前端监听器接收。随后,请求实例可被实例化604,以处理请求。例如,工作者管理程序的工作者控制器可以访问缓存或应用图像存储库中的应用图像。
一旦适当的请求实例已经被实例化604,过程600可包括将请求数据提供606给实例化的请求实例。请求数据可包括将通过满足请求来进行处理的数据,以及用于处理请求的实例化请求实例的应用所需的任何元数据。应注意,请求数据可以不完全包括在请求中。例如,请求可被配置来启动数据流,其中数据的量可能太大,无法在请求本身内适用。在这种情况下,请求数据可以在流动过程中提供给请求实例。下文更详细地论述用于将请求数据提供给请求实例的各种技术。
一旦请求实例已经处理了提供606的请求数据,过程600可包括接收608来自请求实例的响应。如下文更详细地论述,请求实例可将响应放入请求实例和工作者控制器共享的共享存储区中。此外,与请求数据一样,用于响应的数据可以不完全包括在单个通信中,而是可涉及更复杂类型的数据传输,例如,流动。一旦已经接收608请求的响应,过程600可包括将响应提供给610请求器(即,提供给最初提交请求的计算机系统),这可涉及通过网络将响应传输到请求器。
在各实施方案中,当请求实例完成请求处理时,可能不需要请求实例,直至接收到请求实例可满足的另一请求为止。因此,如图6所示,过程600可包括检测612请求处理的完成。例如,在一些实施方案中,接收到所述接收的响应和/或将响应分派到请求器会触发请求处理的完成。在一些实施方案中,请求实例可在一定的时间量内保持可操作,这可用各种方式结束,例如,通过在请求实例中操作的应用的通知、计时器到期和/或其他方式。在一些示例中,例如,可能需要让请求实例可操作,以便处理额外的请求。无论是什么触发了请求处理的完成,过程600都可包括对请求实例进行去实例化(即,撤销)614,从而针对请求实例保留的计算资源可用于其他目的,例如,用于实施额外的请求实例。
图7示出根据各实施方案的用于处理请求的过程700的更详细示例。与上文结合图6描述的过程600一样,过程700可由环境500的部件执行,如下文更详细地描述。在一个实施方案中,请求可被接收702,例如,被前端监听器接收。如从框702循环的箭头所示,在给定请求的处理完成之前,接收到请求的部件可以接收多个请求。针对每个这种接收的请求,可以执行过程700的操作或其变形。
当接收到702请求时,可确定704是否处理请求。如上所述,接收请求的前端监听器(或另一部件)可配置有应用注册服务,所述应用注册服务表明哪些网络地址对应于有效应用。作为另一示例,前端监听器或另一部件可被配置来限制或阻止格式不当的请求、恶意请求或者接收数量过多的请求。因此,可以至少部分基于结合过程700的执行来操作的前端监听器或另一部件实施的任何标准来确定是否处理请求。
如果确定704处理请求,那么过程700可包括构建706请求工作令牌。例如,工作令牌可由前端监听器构建而成,以包括能够将工作令牌与对应请求相关联的各种信息。例如,工作令牌可被构建成包括进程标识符、插槽标识符,或者可用来将工作令牌与用于继续处理请求的恢复点相关联的其他识别信息。工作令牌还可被构建成包括基于监听地址或基于请求内含有的地址信息的应用地址。一般来说,工作令牌中的信息类型和量可根据各实施方案而变化。应注意,在一些实施方案中,可以异步构建工作令牌(例如,在接收到702请求之前)。例如,工作令牌可以是预先生成的并且与接收到请求和/或与有关请求的其他相关信息相关联。
一旦构建(或以其他方式与请求相关联),过程700可包括将工作令牌排队708到请求队列中,如上文描述。过程700也可包括使工作令牌离队710,所述工作令牌可能是请求队列中最老的工作令牌,可以是或不是上文论述的同一工作令牌(但如上文论述,如上述排队的工作令牌最终可根据过程700的重复部分离队)。工作令牌可以由计算机系统的适当部件离队,例如,由工作者管理程序的工作者控制器离队。此外,如上所述,使工作令牌离队可包括从请求队列为请求工作令牌获取专有且时间有限的租用,而无需从请求队列中移除请求工作令牌,从而如果工作者控制器没有在有限的时间内满足请求(例如,如果实施工作控制器的计算机系统在处理请求的过程中出现故障),那么请求工作令牌可变得再次可用。可确定712离队的令牌是否有效。例如,如上文论述,令牌可包括指示到期的信息。确定712令牌是否有效可包括将到期时间与当前时间相比较,其中如果到期时间在当前时间以前,则令牌可被视作无效。在确定令牌是否有效的过程中,可核对其他标准。
如果确定712令牌有效,那么过程700可包括确定714适合处理请求的应用图像。例如,确定714应用图像可至少部分基于与令牌相关联的信息。例如,令牌可包括适当应用的标识符,或者可根据请求令牌的信息以其他方式确定应用。例如,确定应用可包括将请求工作令牌内的应用地址解析为统一资源标识符(URI)、针对请求路径提取URI的一部分,以及查询目录服务,以便查找用于请求路径的应用图像。作为另一示例,来自工作令牌的信息可用来查找表格或其他数据结构中的适当应用,所述数据结构存储在令牌的外部并且或许可通过网络(例如,经由网络服务请求)访问。一般来说,可以使用从工作令牌确定应用的任何方法。
当已经确定714适当应用时,可以检索716确定的应用。例如,应用图像可以从本地缓存、本地数据存储装置或外部位置获取。在一些实施方案中,工作者控制器针对应用来检查本地缓存,并且在缓存未命中之后,从另一位置检索应用图像,例如,从外部应用图像存储库。在访问应用图像(或至少访问适于开始处理请求的一部分)之后,过程700可包括使用检索的应用图像来实例化718请求实例,其可如上文结合图3和图4描述的那样配置。例如,工作者控制器可以指示工作者管理程序至少部分基于应用图像来实例化请求实例。例如,工作者控制器可指示工作者管理程序构建请求实例专用的新用户分析,并且使用工作者管理程序上的控制API将处理器、存储器、或其他资源分配给用户分区。工作者控制器也可以构建至少包括应用图像的共享存储区,并且可以指示工作者管理程序将共享存储区映射到用户分区的地址空间中,作为只读存储器。此外,工作者控制器可以将用户分区配置成具有引导程序。引导程序可被配置来在被执行时,使得来自共享存储区的应用图像的至少一部分复制到被分配给用户分区的存储器中。引导程序可以检索与来自共享存储区的应用图像的复制部分相关联的入口点地址,并且可以基于入口点开始执行应用代码。
在请求实例进行实例化718之后,请求实例可被促使处理720请求。例如,请求实例可使用请求工作令牌与请求建立连接,以便从请求获取数据以用于处理,如下文更详细地描述。
如图7所示,过程700可包括确定722是否有额外的工作令牌要处理,例如,通过查询请求队列或者监控是否从请求队列接收到另一令牌的通知(如果是的话,则被配置来提供通知)。如果确定请求队列中至少有一个或多个工作令牌,则过程700可包括使另一工作令牌离队710,以及使用工作令牌来处理另一请求,如上文描述。如图所示,如果确定722没有额外的令牌,那么过程700可包括监控接收的工作令牌,从而可为未来的请求服务。
当接收到请求并且确定704不处理请求或者确定712对应于接收的请求的令牌无效时,过程700可包括否定724请求。否定所述请求可采用任何合适的方式执行,例如,通过传输表明否定的消息和/或否定的原因或者仅仅通过不提供响应。
图8示出根据各实施方案的用于处理请求的过程800的说明性示例。过程800可由任何合适的系统执行,例如,上文结合图5论述的环境500的一个或多个部件,如下文更详细地论述。在一个实施方案中,过程800包括指示802工作者管理程序至少部分基于应用图像来实例化请求实例。例如,作为接收到可由针对其创建应用图像的应用服务的请求的结果,可执行指示802工作者管理程序来实例化请求实例。在实例化所述请求实例之后的某一时刻,执行应用图像的应用代码,并且执行可包括尝试访问请求,以用于处理请求。因此,过程700可包括检测804应用代码对访问请求的尝试(即,执行应用代码的计算机系统的尝试)。作为检测到804尝试访问请求的结果,工作者控制器可以定位出806与请求实例相关联的对应工作令牌(例如,从存储器访问,或许是从存储的多个工作令牌中选择)。工作者控制器随后可使用定位出的工作令牌在前端监听器存储的请求与工作令牌之间建立808连接。例如,可至少部分通过将工作令牌与请求之间的关联存储在存储器中来建立连接。
一旦已经建立808连接,过程800可包括使用810令牌来定位出请求,并且将数据提供812到请求实例。例如,前端监听器可以监听(即,监控)来自工作者控制器的工作连接请求,并且当接收到此类工作连接请求时,可以基于从工作者控制器提供的令牌和/或从中得到的信息来定位出接收的请求。前端监听器可以复制用来接收所述接收的请求的套接字句柄,并且将复制的套接字句柄给到监听工作连接请求的监听器。监听工作连接请求的监听器可以根据请求实例使用复制的套接字来读取和写入数据。一旦数据已经被提供812到请求实例,可从请求实例接收814响应,如下文更详细地描述。响应随后可被提供816到请求器(即,其请求触发了过程800的执行的计算机系统)。
如本文中其他地方所述,本文中明确描述的实施方案的多种变形被视作属于本公开的范围。例如,上文说明了实施方案,其中工作者控制器确定并获取适合实例化虚拟计算机系统以用于处理请求的应用图像。各种计算环境中的其他实体可执行此类功能。例如,前端监听器或另一系统可确定哪个应用图像访问和提供识别图像或可找到图像(例如,通过URI)的位置的信息。类似地,前端控制器本身可获取应用图像并且将应用图像传输到工作者控制器。此外,上述实施方案包括令牌被排队到由工作者控制器处理的请求队列中的那些。一般来说,前端监听器可采用多种方式通知工作者控制器,例如,通过将通知推送给工作者控制器,所述通知指示工作者控制器处理使得请求实例能够获取请求的逻辑。其他变化也被视作属于本公开的范围。
如上文论述,生成应用图像,以便能够实例化虚拟计算机系统(请求实例),为的是服务接收的请求。本公开的各种技术涉及生成此类应用图像,以便能够有效实例化,从而提供对应于请求的更少时延,同时利用更少量的计算资源。因此,图9示出可以实践本公开的各实施方案的环境900的说明性示例。在图9的示例性环境900中,应用源902、构建系统904、构建管理程序906以及工作者管理程序908。应用源可由提供应用代码的任何系统或其部件提供,所述应用代码将用于构建应用图像。应用代码可能已经被开发人员接收,例如,计算资源服务提供商的客户的开发人员,或者一般来说,能够贡献应用代码以用于构建应用实例的任何开发人员。应用源可以由开发人员通过(例如)网络服务应用编程界面(API)或版本控制系统提交。应用源可以包括源文件、配置文件、资源文件(例如,网页、图像或其他媒体文件)、二进制文件和/或诸如此类。
构建系统904可以是系统或其部件,如下文更详细地描述,所述系统被配置来在应用代码被处理成应用图像并且放入到应用图像存储库910中之前,作为应用代码的预处理器操作。工作者管理程序可以是如上文描述的工作者管理程序,例如,配置有一个或多个进程,所述进程访问应用图像存储库910中的应用图像,并且使用访问的应用图像来实例化请求实例912,以用于处理请求的目的。图9的各个部件可以在单独的物理计算机系统上实施,但本公开的各实施方案包括同一物理计算机系统实施构建管理程序906和工作者管理程序908,正如额外的虚拟层一样的实施方案。
在一个实施方案中,构建系统904被配置来使用能察觉到变化的解析器(variationawareparser)914来处理应用源,以产生有注释的源。能察觉到变化的解析器可以是被配置来检查应用源(例如,源代码和/或编译源代码)的可执行部分的系统或其部件(例如,在系统上执行的进程),以便确定执行可能最先开始在程序中变化的一个或多个位置(变化点)。变化的示例可包括依赖于以下项的执行:接收到网络消息、读取用户输入、读取系统时钟、随机数生成器和/或执行可导致访问无法从源代码中确定得到的信息的其他类似动作。换言之,变化点可对应于一个或多个计算机可执行的指令,所述指令的执行结果在多次执行之中可能会改变。启用便可导致应用执行发生变化的功能的目录可被维护,以使得能察觉到变化的解析器能够识别到执行可能开始改变所处的执行中的位置。
能察觉到变化的解析器914也可被配置来将注释放在应用源中,或者可将注释存储在与应用源相关联的元数据中,以便记录一个或多个确定的位置。在一些实施方案中,能察觉到变化的解析器被配置来应用程序结构的静态分析,以便首先识别用于执行应用源的一个或多个入口点。例如,能察觉到变化的解析器914可以从一个或多个入口点开始解析、解译或以其他方式分析应用源,直到检测到潜在变化为止。能察觉到变化的解析器914可以存储确定的变化位置,例如,通过记录一列源代码行或对应于确定位置的可执行机器指令。在一些实施方案中,能察觉到变化的解析器被配置来与应用源的开发人员放置的注释交互。例如,能察觉到变化的解析器可以读取和处理注释,所述注释重写了程序位置应该还是不应被视作变化。此类开发人员注释可以根据能察觉到变化的解析器914被配置来处理的句法。
在一些实施方案中,构建系统被配置来将有注释的应用源传输到构建管理程序906实施的构建控制器916,其中构建控制器916可以是在构建管理程序906上执行的进程。在一个实施方案中,构建系统904从准备好接收构建请求的多个管理程序中选择构建管理程序。构建系统904可以采用存档的格式包装有注释的源,并且将存档存储在构建控制器可用的位置。构建系统904可与构建控制器916通信,以启动应用构建,例如,通过向构建控制器发出网络服务请求(包括存档位置),以启动构建请求。
在一个实施方案中,构建控制器916被配置来访问构建引导程序。构件引导程序可存储在引导程序的存储库920中,所述存储库可以位于与构建管理程序906相同的物理计算机系统上,或者可以在分布式系统中的另一位置,因此,可通过网络访问。构建控制器可以分析有注释的源,以便为应用确定适当的引导程序。例如,构建控制器可以针对平台需求或可影响引导程序的选择的其他因素来分析有注释的源。不同的应用类型可能有不同的引导程序。用于JavaScript应用可能有一个引导程序,用于Ruby应用可能有另一个引导程序等等。此外,每个应用(JavaScript、Ruby等)可具有供选择的多个引导程序,每个都可适合于一个或多个特定的子类型应用。在一些实施方案中,引导程序可各自被配置来针对有注释的源来引导内核。当被执行时,引导程序可以根据将内核和有注释的源读到存储器中的例程进行操作。引导程序也可以包括用于在有注释的源中的确定变化位置处设置断点的例程。引导程序可还包括从内核入口点开始执行内核的例程。
在一个实施方案中,基于有注释的源和构建引导程序,构建控制器916创建构建实例918。例如,构建控制器可以将从中可以访问有注释的源和引导程序的虚拟机实例化。构建控制器可将构建实例附加到变化监控器922,所述变化监控器可操作以检测和响应虚拟机的变化事件。变化监控器922可以是在管理程序906上执行的进程,所述管理程序被配置来分析应用的执行并且检测变化事件。构建控制器也可被配置来指示实例化的虚拟机来执行引导程序。在引导程序执行之后,变化监控器922可被配置来响应于构建实例到达应用中的变化点而停止构建实例。例如,变化监控器922可以使用虚拟机断点来实施。为此,变化监控器922可被配置来接收到达断点的通知,并且响应于接收到通知而停止虚拟机。当CPU在执行特定代码时或者当检测到表明到达变化点的另一事件时,变化监控器922可利用管理程序功能来指示管理程序暂停程序。作为一个示例,变化监控器可读取放在应用源或含有应用源的存储页面中的指令,以确定变化点的位置。当遇到变化导致的指令时,变化监控器922可发出中断,中断值对应于将执行应用代码的虚拟机停止。管理程序可俘获中断,并且构建实例的CPU的中断处理程序可导致应用的执行停止。
第二种方法是使用断点指令,所述断点指令是使用英特尔架构(IntelArchitecture)的系统所用的中断指令。作为引导程序的一部分,中断处理程序的一部分可被安装,以检测中断(例如,值为3的中断,或一般来说,对应于需要停止执行的中断数值)。在检测到中断之后,响应于虚拟机内提出中断,可以执行中断处理程序代码。作为中断处理程序的一部分,可将指明俘获指令的通信提供到变化控制器,从而表明需要停止虚拟机的执行。换言之,通过这种方法,控制首先传输到在构建实例内运行的另一段代码,但随后在与变化监控器通信之后,机器停止运转,从而可得到快照。
作为构建进程的一部分,构建控制器可被配置来得到已经停止的构建实例的快照图像。例如,构建控制器可以复制虚拟机的存储空间,包括处理器寄存器、标记、程序计数器的状态,以及虚拟环境的其他方面。快照图像可包括能够继续执行快照图像的入口点地址。在一些实施方案中,构建控制器可被配置来将构建实例的执行移动到附近的执行安全点。例如,构建控制器可以将机器指令指标前进或退回,以避免在执行某些内核例程、关键区域或者其他不安全执行部分时给图像拍快照。构建控制器可以将构建实例移动到附近的状态,在所述状态下,处理器寄存器中的一些或全部无需恢复便可继续执行。一旦构建实例被移动到执行安全点,快照便可由构建控制器916得到。
如上所述,通过这种方式构建的应用图像可以用来实例化请求实例(或者一般来说,至少部分基于应用图像的任何实例)。在一些实施方案中,构建控制器916被配置来将快照图像放置在一个或多个管理程序可访问的应用图像存储库中。工作者管理程序可以基于快照图像通过从应用图像库中检索应用图像来构件请求实例,并且在入口点地址处继续应用的执行。
图10示出用于构建应用图像的过程1000的说明性示例,所述应用图像可用于各种目的,例如,实例化请求实例或其他实例。过程1000可以由任何合适的系统执行,例如,由构建系统和/或构建管理程序执行,如上文结合图9所述并且下文更详细地描述。在一个实施方案中,过程1000包括接收1002应用源代码,如上文所述。例如,应用源代码可以从开发源代码的开发人员接收到。能察觉到变化的解析器可用来处理1004接收的应用源代码,并且可以确定和记录1006程序执行中的潜在变化。例如,如上所述,构建系统可促使能察觉到变化的解析器检查应用源的可执行部分以确定执行可能最先开始在程序中变化的一个或多个位置,并且将注释放在应用源中。或者或此外,注释可存储在与应用源相关联的元数据中,以记录一个或多个确定的位置。确定潜在变化可包括识别用于执行应用源的一个或多个入口点,以及从所述一个或多个入口点开始解析、解译或以其他方式分析应用源,直到检测到潜在变化为止。此外,如上所述,能察觉到变化的解析器可与开发人员放在应用源中的注释交互,例如,以便确定是否有任何注释重写了程序位置应该还是不该被视作变化。确定的潜在变化位置可采用任何合适的方式存储,例如,通过记录一列源代码行或对应于确定位置的可执行机器指令。
如图10所示,过程1000可包括选择1008构建管理程序。例如,构建管理程序可至少部分基于用于生成应用引导图像的可用性进行选择。构建管理程序也可至少部分基于一个或多个其他因素进行选择,例如,具有适于构建特定类型(例如,JavaScript或Ruby)的应用的配置。一旦被选择,有注释的应用源便可传输1010到选择的构建管理程序,以用于处理。例如,如果应用源在与操作构建管理程序的系统不同的系统上加注释,那么有注释的应用源可通过网络传输到构建管理程序。也可选择1012引导程序。如上文论述,不同类型的应用可对应于不同的引导程序。例如,特定的引导程序可被配置来用于特定的应用类型。然而在替代实施方案中,引导程序可被配置来更复杂,例如,通过具有用于多个应用类型的能力。在各实施方案中,引导程序被配置来针对有注释的源来引导内核。例如,引导程序可以包括将内核和有注释的源读到存储器中的例程。引导程序可以包括在有注释的源中的确定变化位置处设置断点的例程。引导程序还可以包括从内核入口点开始执行内核的例程。
在一个实施方案中,过程1000包括将能够访问引导程序和有注释的源代码的虚拟机实例化1014。例如,虚拟机可以在上述构建控制器的指导下进行实例化。构建控制器可将变化监控器附加到实例化的虚拟机,所述变化监控器可操作以检测和响应虚拟机的变化事件。构建控制器可指示实例化的虚拟机来执行引导程序。应用随后可由变化监控器执行和监控1016,所述变化监控器可响应于构建实例到达应用中的变化点而停止1018构建实例。例如,变化监控器可以使用虚拟机断点来实施。变化监控器可被配置来接收到达断点的通知,并且响应于接收到通知而停止虚拟机。可以得到1020构建实例的快照。在一个实施方案中,得到快照1020包括构建控制器复制虚拟机的存储空间,包括处理器寄存器、标记、程序计数器的状态,以及虚拟环境的其他方面。快照图像可包括应继续执行快照图像的入口点地址。如下文论述,得到快照也可包括将构建实例移动到附近的执行安全点。例如,构建控制器可以将机器指令指标前进或退回,以避免在执行某些内核例程、关键区域或者其他不安全执行部分时给图像拍快照。构建控制器也可以将构建实例移动到附近的状态,在所述状态下,处理器寄存器中的一些或全部无需恢复便可继续执行。
在一个实施方案中,过程1000包括将快照存储在一个位置,其中所述快照可在之后的时间用于实例化请求实例或另一实例。因此,如图10所示,过程1000包括将快照放置1022在应用图像存储库中,从而快照可在之后的时间使用,例如,以便实例化请求实例,如下文描述。
正如本文中明确揭示的所有技术一样,变形被视作属于本公开的范围。例如,确定何时给构建实例拍快照和/或使用哪个快照的变形可被使用,从而用于实例化实例的快照在没有进行处理的情况下比较可靠并且可实例化,所述处理对于适当设置而言可能是不必要的。
在一些实施方案中,应用执行中的安全点由能察觉到变化的解析器识别,如上文所述。因此,图11示出可用来确定得到快照的安全点的过程1100的说明性示例。过程1100可由任何合适的系统执行,例如,能察觉到变化的解析器或具有此功能的另一系统。在一个实施方案中,过程1100包括访问1102第一指令,以及确定1104指令是否对应于变化点。例如,可以执行确定1104指令是否对应于变化点,如上文所述。如果确定1104当前指令并不对应于变化点,那么过程1100可重复以下操作:访问1104下一指令以及确定访问的指令是否对应于变化点。这个过程可以重复,直到确定1104当前访问的指令对应于变化点。
当确定1104当前访问的指令对应于变化点时,过程1100可包括确定1106当前访问的指令是否对应于安全点。确定1106当前访问的指令是否对应于安全点可采用任何合适的方式执行。例如,在一些实施方案中,分析当前访问的指令以确定与指令相关的任何功能,以及检查任何确定的功能是否出现在被识别为不安全的功能目录中(例如,因为此类功能的启用可导致机器中断被设置在特定状态,或者因为功能的启用对应于无法在暂停和恢复过程中重建的活动)。
如果确定1106当前访问的指令并不对应于安全点,那么过程1100可包括访问1108先前的指令(例如,就在指令序列中的前一指令)。可再次确定1106当前访问的指令是否对应于安全点。通过接连访问先前的指令以及确定它们是否对应于安全点,直到确定1106当前访问的指令对应于安全点为止,这一过程可重复。当确定1106当前访问的指令对应于安全点时,过程1100可包括将当前指令识别1110为变化点和安全点,从而当被变化监控器(或其他合适的系统)处理时,应用的执行在识别点处停止。通过这种方式,安全点被识别为用于之后处理的变化点而不是实际变化点,所述实际变化点可能不是安全点。
图12示出确定可用于构建应用图像的安全点的替代过程。过程1200可被执行,以动态计算安全点,作为构建实例的一部分。过程1200可由任何合适的系统执行,例如,如上文所述的变化监控器或者其他此类系统。在过程1200中,拍快照可被启动1202,从而通过构建实例在应用的执行过程中多次得到快照。例如,可执行拍快照,从而定期得到快照,例如,每毫秒(或其他时间量)和/或在执行每个指令时。
在一个实施方案中,过程1200包括处理1204第一/下一指令,其中处理可包括执行指令和/或在指令被处理时分析指令。可确定1206指令是否对应于变化点,如上文所述。如果确定1206指令并不对应于变化点,那么通过处理下一指令直到确定1206当前处理的指令对应于变化点为止,过程1200可以重复。当确定1206当前指令对应于变化点时,过程1200可包括访问1208时间上继续向后的快照序列中的第一快照。例如,第一快照可以是在遇到对应于变化点的指令之前得到的最近快照。
可确定1210快照是否对应于安全点。可至少部分基于快照的分析来进行确定1210。可检查一组安全点标准,并且符合标准可表明快照对应于安全点。标准可至少部分基于CPU的状态。例如,至少部分基于CPU寄存器状态的标准可包括中断标志是清除还是设置、CPU是否处理异常、CPU是否在页面出错的中间,以及一般来说,CPU寄存器是否可再现。标准也可至少部分基于以下项:CPU是否处于应用代码造成的不安全点(例如,这是因为应用代码已经获得关键区域锁);如CPU指令指标表明,CPU是否在处理标记为不安全的指令。如果确定1210快照并不对应于安全点,那么过程1200可包括重复访问1208下一(时间上向后移)快照以及确定1210访问的快照是否对应于安全点,直到确定1210当前访问的快照对应于安全点为止。在确定它们并不对应于安全点之后,在完成过程1200之后或者其他方式,未被识别为安全的任何快照可被舍弃。当确定1210快照对应于安全点时,快照可被用于1212应用图像。
一般来说,上述技术提供用于计算入口点的技术,其至少部分基于CPU的指令指标在得到快照时的位置。由于可用精确的状态,因此,作为引导应用图像的一部分,这为恢复提供了位置。此外,可能有额外的引导程序代码,所述代码在跳到快照点之前运行并且可用于进行一些事情,例如,恢复CPU寄存器的值或者用于机器的其他配置信息。例如,当机器启动时,引导程序可重建对应于快照图像的精确状态。由于管理程序中的设备可能没有进行完美的复制,而是可具有关于存储器中的状态的信息,因此如果引导程序具有额外的状态信息,则引导程序可修复任何不当状态。额外的状态信息可由引导程序访问,作为元数据或补充的应用图像。在跳到应用的入口点之前,引导程序可使用额外的状态信息来恢复应用状态。
如上所述,本公开的各实施方案减少了根据本文中描述的各种技术进行实例化的实例所需的计算开销。因此,实例部署能够快速进行,并且资源浪费极少。图13可使得实例(例如,请求实例)能够处理请求的环境的说明性示例。如图13所示,环境在工作者管理程序1302的内部实施,所述管理程序可以是如上文所述的工作者管理程序。工作者管理程序1302可实施超级调用接口1304,所述超级调用接口可以是允许访客操作系统或访客应用(例如,请求实例)对管理程序提出请求的接口。超级调用接口1304可被配置来在实施于工作者管理程序1302上的请求实例1308(或者由于接收的请求需要处理而不必实例化的其他实例)中接收来自半虚拟超文本传输协议(HTTP)驱动器1306的超级调用。超级调用接口可将从半虚拟HTTP驱动器1306接收的超级调用提供到HTTP超级调用处理程序1320。尽管HTTP始终用于说明的目的,但本文中描述的各种技术可适于支持可由实例使用的其他协议。
半虚拟HTTP驱动器1306可被配置来提供用于进行HTTP请求的系统调用接口,所述调用接口与用于进行HTTP对象模型1310提供的HTTP请求的接口类似或一致。HTTP对象可转译配置的HTTP请求,以将请求配置格式化成适于系统调用接口。半虚拟HTTP驱动器1306也可被配置来在存储区1314内的控制空间1312中创建请求记录,所述存储区在请求实例1308与工作者控制器1316之间共享,其可如上文所述(例如,上文结合图5描述的工作者控制器)。控制空间1312可以是为有关存储在共享存储器1314的请求记录中的数据的存储信息保留的空间。例如,半虚拟HTTP驱动器1306可被配置来将数据写入控制空间1312,所述控制空间指明请求数据位于共享存储区1314中的位置。包含在内的信息可以包括:请求插槽的标识符、指明请求插槽中采用的数据大小的信息、请求插槽的大小(如果是大小可变化的实施方案的话),以及允许识别来自请求插槽的正确数据量的信息。
共享数据区可采用各种方式实施,例如,圆形(环形)缓冲区。在各实施方案中,管理程序上实施的每个请求实例提供本身的共享存储缓冲区,但本文中描述的各实施方案可以进行适应,从而多个请求实例共享一个存储缓冲区(例如,通过跟踪能够将请求匹配到请求实例的额外信息)。HTTP驱动器可配置有控制空间所处的存储位置。HTTP驱动器可以基于来自HTTP请求的配置信息在控制空间内构建请求记录。
如图13所示,请求实例可能缺少处理一些请求所需的各种资源。例如,各种请求的处理可包括使用网络堆栈(协议堆栈),例如,传输控制协议/互联网协议(TCP/IP)堆栈或其他网络堆栈,其中网络堆栈可以是实施协议套的程序。请求实例1308可缺少网络堆栈,从而不需要使用网络堆栈所需的开销。然而,为了处理请求,请求实例可与工作者控制器1316实施的网络堆栈1318交互。工作者控制器1316可操作单个网络堆栈,所述单个网络堆栈用于在工作者管理程序1302上实施的多个请求实例。因此,超级调用接口1304可被配置来处理从半虚拟HTTP驱动器1306到HTTP超级调用处理程序1320的某些调用,所述HTTP超级调用处理程序可以是配置有编程逻辑的工作者控制器1316的进程,所述编程逻辑用于响应从半虚拟HTTP驱动器1306经过超级调用接口1304的超级调用。HTTP超级调用处理程序1320可被配置来使用网络堆栈1318来引导处理请求的过程中涉及的通信。如下文更详细地论述,用于请求的实际数据可使用共享存储区1314的一个或多个请求插槽1322经过共享存储区1314而被提供到工作者控制器。例如,当应用代码1324执行时,往返应用的数据可经由共享存储区1314传输。由半虚拟HTTP驱动器1306写入控制空间1312的数据可指明一个或多个请求插槽1322,其中可找到用于请求的数据,从而使得HTTP超级调用处理程序1320可读取控制空间1312,以便确定从哪些控制插槽获取数据。通过这种方式,超级调用接口1304可被配置来处理少量的数据(这已足够,因为管理更少量数据所需的资源有限),而同时仍允许更大尺寸的相关数据从请求实例1308传送到工作者控制器1316。
图14示出根据一个实施方案的用于处理请求的过程1400的说明性示例。过程1400可由管理程序执行(即,根据用于实施管理程序的可执行代码的计算机系统),例如,如上文所述的工作者管理程序。过程1400使用HTTP作为示例,但如上所述,过程1400可适合与其他协议一起使用。在一个实施方案中,所述过程包括接收1402来自应用的HTTP请求。可使用HTTP对象模型进行请求。此外,应用代码可实例化适当的HTTP请求对象,以响应于请求。例如,所述请求对象可以是JavaScriptXmlHttpRequest对象或Node.jscreateServer对象。应用代码的执行可将HTTP请求配置成具有位置、参数、数据和/或诸如此类。
HTTP对象处于适当位置之后,应用代码可利用HTTP对象来对半虚拟HTTP驱动器进行系统调用。因此,过程1400可包括接收1404对半虚拟HTTP驱动器的系统调用。例如,HTTP对象可进行内核系统调用,以访问可提供用于进行HTTP请求的系统调用接口的半虚拟HTTP驱动器,所述系统调用接口与用于进行HTTP对象模型提供的HTTP请求的接口类似或一致。HTTP对象可转译配置的HTTP请求,以将请求配置格式化成适于系统调用接口。
在接收1404系统调用之后,半虚拟HTTP驱动器可以在共享存储区内的控制空间中创建请求记录,例如,在工作者控制器与请求实例之间共享的存储区,如上文所述。半虚拟HTTP驱动器可配置有控制空间所处的存储位置。半虚拟HTTP驱动器可以基于来自HTTP请求的配置信息在控制空间内创建1406请求记录。在一个实施方案中,半虚拟HTTP驱动器可基于HTTP请求配置来确定存储块大小。HTTP驱动器可尝试基于确定的大小来分配来自控制空间的存储块,并且将HTTP请求配置复制到分配的存储块。在一些实施方案中,HTTP驱动器使用无锁的比较和交换连接列表实施将分配的存储器的指标附加到主动HTTP请求记录的列表。请求记录可包括序列号、随机值和/或适于以唯一方式识别请求记录的其他标识符。在一些实施方案中,标识符可操作以进一步将请求记录与以下一个或多个相互关联:HTTP请求、HTTP请求对象,或者进行HTTP请求的应用代码。
在一个实施方案中,过程1400包括分配1408与请求记录相关联的共享存储区内的请求插槽。例如,在一些实施方案中,共享存储区可包括使用环形缓冲区组织的一个或多个大小固定的缓冲区域。HTTP驱动器可使用互斥来分配缓冲区域中的一个,例如,通过执行租用记录的比较和交换分配。通过将请求记录中的字段设置成请求插槽的地址和大小,HTTP驱动器可将请求插槽与请求记录相关联。在一个实施方案中,一个或多个大小固定的缓冲区域可包括多个缓冲区大小,每个缓冲区大小对应于该大小的一个或多个缓冲区域的列表。例如,第一特定的缓冲区大小可用于服务接收请求,并且第二特定的缓冲区大小可用于服务发送请求。
在HTTP对象模型的指导下,半虚拟HTTP驱动器可使用超级调用接口进行请求服务超级调用。HTTP驱动器可以进行超级调用,表明请求记录需要得到服务。超级调用可包括用于请求记录的标识符,从而使得超级调用处理程序可识别共享存储区中的请求记录。因此,超级调用接口可接收1410请求,并且向HTTP超级调用处理程序通知1412超级调用,从而向超级调用处理程序表明请求需要服务。在一些实施方案中,实施HTTP超级调用处理程序的工作者控制器被配置来接收相关超级调用的通知,例如,通过订阅超级调用事件分派器。工作者控制器可被配置来将接收到的通知分派给超级调用处理程序,以用于服务HTTP请求。
在接收到超级调用之后,超级调用处理程序可从共享存储区中检索1414请求记录(例如,通过使用请求记录的标识符)。例如,超级调用处理程序可走过主动HTTP请求的连接列表,以定位出请求记录,其标识符匹配被提供为超级调用参数的标识符。一旦HTTP超级调用处理程序检索到1414请求记录,超级调用处理程序可至少部分基于检索的请求记录和位于与请求记录相关联的请求插槽中的请求数据来构建本机HTTP请求。超级调用处理程序可使用第二HTTP对象模型来构建第二HTTP请求,例如,使用便携式部件(PortableComponent)(POCO)C++库或库的对象模型。例如,超级调用处理程序可使用第二HTTP对象模型来构建1416HTTP请求,并且使用位置、参数或者请求记录中包括的其他类似数据来配置HTTP请求。超级调用处理程序可以访问与请求记录相关联的请求插槽,并且基于请求插槽的内容来构建实体主体或者配置HTTP请求。
随着超级调用处理程序构建1416HTTP请求,HTTP超级调用处理程序可使用工作者控制器实施的本机网络堆栈提出1418本机HTTP请求。通过更新请求记录和相关联的请求插槽,超级调用处理程序可以返回来自第二HTTP请求的数据或结果。在一些实施方案中,HTTP驱动器等待请求记录中包括的信号杆(semaphore)。超级调用处理程序可给予第二HTTP请求来更新请求记录和请求插槽的内容。当更新完成时,超级调用处理程序可以用信号通知信号杆。一旦更新已被处理,HTTP驱动器可重置并且再次等待信号杆,例如,如果更新代表HTTP响应流的一部分的话。或者,HTTP驱动器可在更新被处理之后提出新的超级调用请求,以请求进一步的更新。
作为过程1400可被如何使用的说明性示例,在通知来自超级调用接口的此类请求之后,HTTP超级调用处理程序可以在本机网络堆栈上创建HTTP监听器。HTTP监听器可等待入站HTTP请求,并且当接收到针对入站请求接收的数据时,HTTP超级调用处理程序可使用共享存储器将数据汇集到请求实例。例如,HTTP超级调用处理程序可向半虚拟HTTP驱动器通知接收的数据,所述半虚拟HTTP驱动器随后可通过获取来自共享存储器的数据而获取所述数据,例如,通过使用HTTP超级调用处理程序写入控制空间以找到含有数据的一个或多个请求插槽的信息。数据随后可提供到应用代码,以用于可能发生的任何处理。
过程1400可适于处理各种类型的请求。例如,对于流数据而言,可以处理接收到的数据的第一块,如上所述。可进行类似的过程,其中通过超级调用处理程序的通信表明需要接收用于现存请求的额外数据。数据可传过共享存储器,如上所述。类似地,对于发送数据而言,数据将被发送的通知可通过超级调用处理程序发送。在接收到通知之后,工作者控制器可获取由实例放入共享存储器中的数据、构件本机HTTP请求以及传输数据。
图15示出根据各个实施方案的用于实施各方面的示例性环境1500的各方面。应了解,尽管网络环境用于解释的目的,但可酌情使用不同的环境来实施不同实施方案。所述环境包括电子客户端装置1502,其可包括可操作以通过合适的网络1504发送和接收请求、消息或信息并将信息传送回到装置用户的任何合适的装置。此类客户端装置的示例包括个人计算机、移动电话、手持式消息传递装置、笔记本电脑、平板计算机、机顶盒、个人数据助理、嵌入式计算机系统、电子书阅读器等等。网络可包括任何合适的网络,包括内联网、互联网、蜂窝网络、局域网或任何其他此类网络或者其组合。用于此类系统的部件可至少部分取决于选择的网络和/或环境类型。众所周知用于通过此类网络进行通信的协议和部件,本文中将不再详细论述。通过有线或无线连接及其组合均可实现网络通信。在此示例中,网络包括互联网,因为环境包括用于接收请求及为其响应内容服务的网络服务器1506,但对于其他网络,可使用服务于类似目的的替代装置,如所属领域的一般技术人员将明白。
所述环境包括至少一个应用服务器1508和数据存储设备1510。应理解,可存在若干个应用服务器、层或其他元件、过程或部件,其可形成链路或以其他方式配置,从而可交互以执行诸如从合适的数据存储设备获取数据等任务。如本文中使用的服务器可采用各种方式实施,例如,硬件装置或虚拟计算机系统。在一些上下文中,服务器可以指在计算机系统上执行的编程模块。本文中使用的术语“数据存储设备”是指能够存储、访问和检索数据的任何装置或装置的组合,其可包括任何标准、分布式或集群环境中的数据服务器、数据库、数据存储装置和数据存储媒体的任何组合和数目。应用服务器可包含任何合适的硬件和软件,用于根据需要与数据存储设备集成以便为客户端装置执行一个或多个应用的方面,以及处理应用的一些(甚至大部分)数据访问和业务逻辑。应用服务器与数据存储设备协作可提供访问控制服务,并且能够生成将被传输给用户的诸如文本、图形、音频和/或视频等内容,在此实例中,这些内容可采用超文本标记语言(“HTML”)、可扩展标记语言(“XML”)或其他合适的结构化语言的形式通过网络服务器供应给用户。处理所有请求和响应以及在客户端装置1502与应用服务器1508之间传送内容,均可由网络服务器处理。应理解,网络和应用服务器并非必需的,而仅仅是示例性部件,因为本文中论述的结构化代码可在本文中其他地方论述的任何合适的装置或主机上执行。此外,除非上下文中另外清楚地指出,否则,本文中描述为由单个装置执行的操作可由多个装置共同执行,所述多个装置可形成分布式系统。
数据存储设备1510可包括若干个单独的数据表、数据库或其他数据存储机制,以及用于存储本公开的特定方面的数据的媒体。例如,所述数据存储设备可包括用于存储生产数据1512和用户信息1516的机制,其可用来为生产侧的内容服务。所示数据存储设备还包括用于存储逻辑数据1514的机制,其可用于报告、分析或其他此类目的。应理解,可能有许多其他方面需要存储在数据存储设备中,例如,页面图像信息和访问权限信息,其可适当存储在上述机制中的任一个中或者可存储在数据存储设备1510中的额外机制中。数据存储设备1510可通过与之相关联的逻辑进行操作以从应用服务器1508接收指令,并且响应于此而获取、更新或以其他方式处理数据。在一个示例中,通过用户操作的装置,用户可提交某一类型项目的搜索请求。在这种情况下,数据存储设备可访问用户信息以验证用户身份,并且可访问目录详细信息以获取有关那种类型项目的信息。随后,信息可被返回给用户,例如,列在用户通过用户装置1502上的浏览器能够查看的网页上的结果中。在浏览器的专用页面或窗口可查看相关特定项目的信息。然而,应注意,本公开的实施方案不必限于网页的上下文,而是可以更普遍地适用于处理一般的请求,其中请求不必是针对内容的请求。
每个服务器通常将包括为服务器的一般管理和操作提供可执行程序指令的操作系统,并且通常将包括存储指令的计算机可读存储媒体(例如,硬盘、随机存取存储器、只读存储器等),所述指令在被服务器的处理器执行时允许服务器执行预期功能。操作系统的适当实施和服务器的一般功能已为人所知或可商用,并且易于被所属领域的一般技术人员实施,尤其是根据本发明。
一个实施方案中的环境是利用若干个计算机系统和部件的分布式计算环境,所述系统和部件使用一个或多个计算机网络或直接连接,借助通信链路互连。然而,所属领域的一般技术人员将了解,此类系统在部件数量比图15中所示的多或少的系统中可发挥同样的作用。因此,图15中系统1500的描述应被当作说明性的,且并不限制本发明的范围。
各个实施方案还可在各种操作环境中实施,在一些情况下,所述环境可包括可用来操作若干应用中的任一个的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可包含若干通用个人计算机中的任一个,例如,运行标准操作系统的台式、笔记本或平板计算机,以及运行手机软件且能够支持多个网络和消息传递协议的手持装置。此类系统还可包括若干个工作站,其运行各种商用操作系统和其他已知应用中的任一个,以用于开发和数据库管理等目的。这些装置还可包括其他电子装置,例如,虚拟终端、瘦客户端、游戏系统以及能够通过网络进行通信的其他装置。
本公开的各个实施方案利用所属领域的技术人员将熟悉的至少一个网络系统,以使用多种商用协议中的任一个来支持通信,例如,传输控制协议/互联网协议(“TCP/IP”)、在开放系统互联(“OSI”)模型的各个层中操作的协议、文件传输协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、公共互联网文件系统(“CIFS”)以及AppleTalk。例如,所述网络可以是局域网、广域网、虚拟专用网、互联网、内联网、外联网、公用交换电话网、红外网、无线网及其任意组合。
在利用网络服务器的实施方案中,网络服务器可运行各种服务器或中间层应用中的任一个,包括超文本传输协议(“HTTP”)服务器、FTP服务器、通用网关接口(“CGI”)服务器、数据服务器、Java服务器以及业务应用服务器。服务器还能够响应用户装置的请求来执行程序或脚本,例如,通过执行一个或多个网络应用,所述网络应用可实施为用任何编程语言(例如,C、C#或C++)或脚本语言(例如,Perl、Python或TCL)及其组合编写的一个或多个脚本或程序。服务器还可包括数据库服务器,包括但不限于可从 和商购到的那些。
所述环境可包括多种数据存储设备和其他存储器及存储媒体,如上文所述。这些可存在于多种位置,例如,在一个或多个计算机本地(和/或驻留)的存储媒体上,或者在网络中任何或所有计算机远程的存储媒体上。在一组特定的实施方案中,信息可存在于所属领域的技术人员熟悉的存储区域网(“SAN”)中。类似地,归因于计算机、服务器或其他网络装置,用于执行功能所需的文件可根据需要本地存储和/或远程存储。在系统包括计算机装置的情况下,每个此类装置均可包括可经由总线进行电耦合的硬件元件,例如,所述元件包括至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘),以及至少一个输出装置(例如,显示装置、打印机或扬声器)。此类系统还可包括诸如磁盘驱动器、光学存储装置等一个或多个存储装置,和诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)等固态存储装置,以及可移动媒体装置、存储卡、闪存卡等。
此类装置还可包括计算机可读存储媒体阅读器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等),以及上述工作存储器。计算机可读存储媒体阅读器可与下述存储媒体连接或被配置来接收所述存储媒体:代表远程、本地、固定和/或可移动存储装置的计算机可读存储媒体,以及用于临时和/或更持久地容纳、存储、传输及检索计算机可读信息的存储媒体。所述系统和各种装置通常还包括大量的软件应用、模块、服务或位于至少一个工作存储装置中的其他元件,包括运行系统和应用程序,例如,客户端应用或网络浏览器。应了解,不同于上述内容,替代实施方案可发生很多变化。例如,还可使用自定义硬件,和/或特定元件可实施在硬件、软件(包括小应用程序等可移植软件)或这两个中。此外,可连接到其他计算装置,例如,网络输入/输出装置。
用于容纳代码或部分代码的存储媒体和计算机可读媒体可包括所属领域已知或使用的任何合适的媒体,包括存储媒体和通信媒体,例如但不限于,用于存储和/或传输诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术中实施的易失性和非易失性媒体、可移动和不可移动媒体,包括RAM、ROM、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储技术、只读光盘(“CD-ROM”)、数字多功能盘(DVD)或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储装置,或者可用来存储所需信息且可被系统装置访问的任何其他媒体。基于本发明和本文中提供的教示,所属领域的一般技术人员将了解实施各项实施方案的其他方式和/或方法。
因此,说明书和附图应视为说明性而非限制性的。但显而易见的是,在不偏离权利要求书所阐释的本发明的普遍精神和范围的前提下,可对本发明作各种修改和变化。
基于以下条款,可更好地理解上述内容。
1.一种计算机实施的方法,其包括:
在配置有可执行指令的一个或多个计算机系统的控制下,
接收应用源,所述应用源包括可执行部分;
解析所述应用源,以确定所述可执行部分的执行中的变化点;
至少部分基于确定的变化点,通过虚拟机实例将所述可执行部分执行到停止点;
在所述停止点停止所述虚拟机实例;
在所述变化点处或之前得到停止的虚拟机实例的快照;以及
使用所述快照来实例化另一虚拟机实例。
2.根据条款1所述的计算机实施的方法,其中:
解析所述应用源包括用包括所述确定的变化点的一个或多个变化点的一个或多个位置给所述应用源加注释;以及
所述停止点至少部分基于有注释的应用源。
3.根据条款2所述的计算机实施的方法,其中对所述应用源加注释包括将所述应用源中提及的一个或多个功能与对应于变化点的功能目录相匹配。
4.根据前述条款中任一条款所述的计算机实施的方法,其中:
所述方法还包括将所述虚拟机实例恢复到对应于确定为安全点的所述变化点之前的执行点的状态;以及
在确定为所述安全点的所述执行点处得到所述快照。
5.根据前述条款中任一条款所述的计算机实施的方法,其中将所述可执行部分执行到所述停止点包括监控所述可执行部分的执行,以检测所述停止点。
6.根据前述条款中任一条款所述的计算机实施的方法,其中所述快照对所述虚拟机实例的存储空间的至少一部分的复本进行编码,并且包括下列各项中的一个或多个:一个或多个处理器寄存器的状态、一个或多个标记的状态、一个或多个程序计数器的状态,或者入口点地址。
7.根据前述条款中任一条款所述的计算机实施的方法,其中使用所述快照来实例化另一虚拟机实例包括:将所述快照添加到可用于虚拟机实例的实例化的应用图像存储库,以及从另一虚拟机实例的实例化存储库中检索所述快照
8.一种用于生成应用图像的计算机实施的方法,其包括:
在配置有可执行指令的一个或多个计算机系统的控制下,
识别应用源的可执行部分中的一个或多个变化点;
通过计算机系统实例来监控所述应用源的所述可执行部分的执行,以从识别的一个或多个变化点中识别出变化点;
在至少部分基于所述识别的变化点的点处获取所述计算机系统实例的快照;以及
至少部分基于获取的快照来存储应用图像,所述应用图像可用于实例化另一计算机系统实例。
9.根据条款8所述的计算机实施的方法,其中所述一个或多个变化点中的每个变化点对应于一个或多个计算机可执行指令,所述指令的执行结果可能会导致多个执行之中的不同应用行为。
10.根据条款8或9所述的计算机实施的方法,其中识别所述一个或多个变化点包括:
识别所述应用源中指定的一个或多个功能;以及
确定所述识别的一个或多个功能是否出现在被确定可能导致变化点的功能的目录中。
11.根据条款8到10中的任一条款所述的计算机实施的方法,其中获取所述快照包括在所述识别的变化点处或之前识别安全点,所述安全点被识别为以下结果:所述安全点对应于可再现的计算机系统状态,并且从所述安全点,所述应用源的所述可执行部分的执行可以在不同的计算机系统上重新开始。
12.根据条款8到11中的任一条款所述的计算机实施的方法,其中:
获取所述快照包括识别出所述识别的变化点处或之前的安全点;以及
识别所述安全点至少部分基于安全点标准,所述标准应用于在不同时间得到的所述计算机系统实例的多个快照的集合中的一个或多个快照。
13.一种系统,其包括:
一个或多个处理器;以及
存储器,所述存储器包括可执行指令,所述可执行指令在被所述一个或多个处理器执行时促使所述系统实施:
第一子系统,其被配置来:
至少部分基于应用源来实例化计算机系统实例;
监控所述应用源的可执行部分的实例化计算机实例的执行,以识别变化点;
至少部分基于所述识别的变化点来获取所述计算机系统实例的快照;以及
至少部分基于获取的快照来促使应用图像被存储,所述应用图像可用于实例化另一计算机系统实例。
14.根据条款13所述的系统,其还包括第二子系统,所述第二子系统被配置来处理所述应用源的所述可执行部分以识别变化点的集合,所述识别的变化点来自识别的变化点集合。
15.根据条款13或14所述的系统,其中实例化所述计算机系统实例包括:
至少部分基于所述应用源来选择引导程序;以及
执行选择的引导程序。
16.根据条款13到15中的任一条款所述的系统,其中:
所述系统还包括用于实例化计算机系统实例的其他系统可访问的应用图像存储库;以及
促使所述应用图像被存储包括将所述应用图像传输到所述应用图像存储库。
17.根据条款13到16中的任一条款所述的系统,其中:
用表明潜在变化点的一个或多个注释对所述应用源加注释;以及
至少部分基于所述一个或多个注释来监控所述应用源的所述可执行部分的执行。
18.根据条款13到17中的任一条款所述的系统,其中所述识别的变化点被识别作为对应于无法从所述应用源中确定得到的执行结果。
19.根据条款13到18中的任一条款所述的系统,其中监控所述应用源的所述可执行部分的所述实例化计算机实例的执行以识别所述变化点包括:由于所述实例化计算机系统实例的存储页面包括对应于所述变化点的指令,发出促使所述实例化计算机系统实例暂停的中断。
20.根据条款13到19中的任一条款所述的系统,其中监控所述应用源的所述可执行部分的所述实例化计算机实例的执行以识别所述变化点包括:在所述实例化计算机系统实例的外部,向进程通知到达所述变化点的所述执行,以使得所述进程能够暂停所述实例化计算机系统实例。
21.一种存储有指令的计算机可读存储媒体,所述指令在被计算机系统的一个或多个处理器执行时促使所述计算机系统至少进行:
获取应用源,所述应用源包括可执行部分;
促使计算机系统实例执行所述可执行部分中的至少一些;
在部分但不完全执行所述可执行部分之后获取所述计算机系统实例的快照,从而使得所述快照可用于实例化另一计算机系统实例,以便在得到所述快照的点处开始执行所述可执行部分。
22.根据条款21所述的计算机可读存储媒体,其中:
获取的应用源具有注释,所述注释表明用于停止执行所述可执行部分的一个或多个潜在点;以及
促使所述计算机系统实例执行所述可执行部分中的所述至少一些包括在获取所述快照之前根据来自所述注释中的注释而停止所述计算机系统实例。
23.根据条款21或22所述的计算机可读存储媒体,其中所述指令还促使所述计算机系统将所述计算机系统实例实例化为虚拟机。
24.根据条款21到23中的任一条款所述的计算机可读存储媒体,其中获取所述计算机系统实例的所述快照包括:
至少部分基于点处的中央处理单元状态来确定执行所述可执行部分中的所述点;以及
在确定的点处获取所述计算机系统实例的所述快照。
25.根据条款21到24中的任一条款所述的计算机可读存储媒体,其中所述获取的快照包括所述计算机系统实例的存储空间的至少一部分的复本,并且包括下列各项中的一个或多个:一个或多个处理器寄存器的状态、一个或多个标记的状态、一个或多个程序计数器的状态,或者入口点地址。
26.根据条款21到25中的任一条款所述的计算机可读存储媒体,其中所述指令还促使所述计算机系统至少部分基于所述快照而将应用图像传输到应用图像的存储库,所述应用图像每个可用于实例化虚拟机实例。
27.一种系统,其包括:
实施管理程序的计算装置;
前端监听器,其被配置来:
接收通过网络传输的请求;
针对接收的请求的至少子集中的每个请求,将对应于所述请求的工作令牌提供到所述管理程序;
其中所述管理程序被配置来:
接收来自所述前端监听器的工作令牌;
针对来自接收的工作令牌的至少子集的每个工作令牌:
至少部分基于所述工作令牌,选择可用于处理对应于所述工作令牌的请求的应用图像;
通过至少识别用于所述选择的应用图像的复制部分的入口点地址以及至少部分基于识别的入口点地址开始执行应用代码,至少部分基于所述选择的应用图像来实例化虚拟计算机系统;以及
使用所述工作令牌来从所述前端监听器获取对应于所述工作令牌的所述请求的复本,以及将对应于所述工作令牌的所述请求的所述复本提供到所述实例化的虚拟计算机系统以便由所述虚拟计算机系统处理。
28.根据条款27所述的系统,其中:
提供所述工作令牌包括:至少部分基于所述请求,从多个请求队列中选择请求队列,以及将所述工作令牌排队到选择的请求队列上。
29.根据条款27或28所述的系统,其中:
提供所述工作令牌包括将所述工作令牌排队到请求队列上;以及
接收来自所述前端监听器的工作令牌包括使所述工作令牌从所述请求队列离队。
30.根据条款27到29中的任一条款所述的系统,其中实例化所述虚拟计算机系统包括将所述选择的应用图像的至少一部分复制到用于所述虚拟计算机系统的存储分区。
31.根据条款27到30中的任一条款所述的系统,其中所述应用图像至少部分基于另一虚拟计算机系统的快照,所述另一虚拟计算机系统已经部分执行了对应于所述应用图像的应用代码的可执行部分。
32.根据条款27到31中的任一条款所述的系统,其中使用所述工作令牌来获取所述请求的所述复本包括:
将在所述工作令牌中编码的用于所述请求的标识符提供到所述前端监听器;以及
至少部分基于提供的标识符,由所述前端监听器定位出所述请求;以及
将定位出的请求传送到所述计算装置。
33.一种用于响应请求的计算机实施的方法,其包括:
在配置有可执行指令的一个或多个计算机系统的控制下,
接收对应于由接收请求的前端监听器所接收的所述请求的令牌;
作为接收到所述令牌的结果,将虚拟计算机系统实例化,以便处理所述请求;
使用所述接收的令牌来获取来自所述前端监听器的所述请求的复本;以及
使用所获取的所述请求的复本由所述虚拟计算机系统来处理所述请求。
34.根据条款33所述的计算机实施的方法,其中所述前端监听器和所述虚拟计算机系统由不同的计算装置实施。
35.根据条款33或34所述的计算机实施的方法,其中将所述虚拟计算机系统实例化包括:
从应用图像的存储库访问可用于处理所述请求的用于应用的应用图像;
将所述应用图像的至少一部分装载到为所述虚拟计算机系统分配的存储器中;
识别用于执行所述加载部分的入口点;以及
开始执行所述加载部分。
36.根据条款35所述的计算机实施的方法,其中访问所述应用图像包括至少部分基于与所述请求相关联的信息来选择所述应用图像,与所述请求相关联的所述信息包括下列各项中的至少一个:所述请求的一个或多个消息标题、所述请求的消息正文、对应于所述请求被提交到的网络地址的统一资源定位符,或所述网络地址。
37.根据条款35所述的计算机实施的方法,其中所述应用图像至少部分基于在执行对应于所述应用图像的应用代码的可执行部分之后的另一虚拟计算机系统的快照。
38.根据条款33到37中的任一条款所述的计算机实施的方法,其中接收所述令牌包括使所述令牌从各自对应于所述前端监听器接收的请求的令牌队列中离队。
39.根据条款33到38中的任一条款所述的计算机实施的方法,其还包括作为完成处理所述请求的结果,终止所述虚拟计算机系统。
40.一种存储有指令的非瞬时计算机可读存储媒体,所述指令在被计算机系统的一个或多个处理器执行时促使所述计算机系统至少实施:
控制器,其被配置来:
接收前端监听器接收到请求的通知;
针对接收的通知的至少子集中的每个通知:
将虚拟计算机系统实例化,以处理对应的请求;以及
促使实例化的虚拟计算机系统来获取来自所述前端监听器的所述请求的复本并且处理所述请求。
41.根据条款40所述的计算机可读存储媒体,其中:
所述指令还促使所述计算机系统实施管理程序;以及
所述虚拟计算机系统和所述控制器在所述管理程序的单独域中操作。
42.根据条款40或41所述的计算机可读存储媒体,其中所述控制器还被配置来至少部分基于用于请求处理的所述计算机系统的容量的一个或多个测量来管理所述计算机系统当前处理的多个请求。
43.根据条款40到42中的任一条款所述的计算机可读存储媒体,其中所述通知是对可用于定位出来自所述前端监听器的所述请求的信息进行编码的令牌。
44.根据条款40到43中的任一条款所述的计算机可读存储媒体,其中接收所述通知包括使对应的令牌从队列中离队。
45.根据条款40到44中的任一条款所述的计算机可读存储媒体,其中促使所述实例化的虚拟系统获取所述请求的所述复本包括:
检测所述虚拟计算机系统对所述请求访问的尝试;以及
使用来自所述通知的信息来获取来自所述前端监听器的所述请求的所述复本。
46.一种系统,其包括:
监听器,其被配置来:
接收请求,所述接收的请求包括每个可由不同应用服务的请求的多个子集;
针对所述接收的请求的至少子集中的每个请求:
发出所述请求的通知;
至少部分基于所述通知来接收第二请求;以及
至少部分响应于所述第二请求来提供所述请求的复本;
控制器,其被配置来:
接收来自所述监听器的发出通知;
针对所述发出通知的至少子集中的每个接收到的发出通知:
使用所述发出通知来获取对应于来自所述监听器的接收到的发出通知的请求的复本;
至少部分基于所述接收到的发出通知并且从多个应用图像,选择用于应用的应用图像,所述应用图像能够处理对应于所述接收到的发出通知的所述请求;以及
促使虚拟计算机系统至少部分基于所述选择的应用图像被实例化,并且至少部分基于所获取的对应于所述接收到的发出通知的所述请求的复本处理所述请求。
47.根据条款46所述的系统,其中所述接收的请求包括寻址到不同网络地址的请求,所述不同网络地址中的每个网络地址,每个网络地址对应于来自所述多个应用图像的不同应用图像。
48.根据条款46或47所述的系统,其中所述控制器还被配置来在所述通知与对应于所述接收到的发出通知的所述请求之间建立连接以便使所述应用能够从所述监听器获取所述请求的复本。
49.根据条款46到48中的任一条款所述的系统,其中发出通知包括将令牌排队到请求队列上。
50.根据条款46到49中的任一条款所述的系统,其中所述选择的应用图像至少部分基于另一虚拟计算机系统实例的快照。
51.根据条款46到50中的任一条款所述的系统,其中:
接收所述发出通知包括使所述发出通知从队列中离队;以及
所述控制器还被配置来作为检测用于请求处理的容量的结果,使排队的通知离队。
52.一种用于处理请求的计算机实施的方法,其包括:
在配置有可执行指令的一个或多个计算机系统的控制下,
由管理程序实施虚拟计算机系统实例和控制器,从而使得:
所述虚拟计算机系统实例缺少用于接收所述请求的协议堆栈的一个或多个层的实施;
所述控制器具有所述虚拟计算机系统实例缺少的所述协议堆栈的所述一个或多个层的实施;以及
所述虚拟计算机系统实例和所述控制器可访问共享存储区;
将从所述控制器到所述虚拟计算机系统实例的所述请求的数据放到所述存储区中;
将来自所述共享存储区的所述数据提供到所述虚拟计算机系统;
将从所述虚拟计算机系统到所述控制器的用于响应所述请求的数据放到所述共享存储区中;
将用于所述响应的所述数据从所述共享存储区提供到所述控制器;以及
使用所述控制器的所述协议堆栈的所述一个或多个层的所述实施来提供对所述请求的所述响应。
53.根据条款52所述的计算机实施的方法,其中:
所述方法还包括可访问所述虚拟计算机系统实例和所述控制器的所述管理程序的超级调用接口,将通知提供到所述工作者控制器的超级调用处理程序;以及
作为所述超级调用处理程序接收到所述通知的结果,将用于所述响应的所述数据从所述共享存储区提供到所述控制器。
54.根据条款52或53所述的计算机实施的方法,其中:
将所述请求的所述数据放入所述共享存储区包括将控制区域中的所述数据的一个或多个位置写入到所述共享存储区的所述控制区域;以及
将所述数据从所述共享存储区提供到所述虚拟计算机系统实例包括至少部分基于写入到所述控制区域的所述一个或多个位置来定位出所述数据。
55.根据条款52到54中的任一条款所述的计算机实施的方法,其中所述方法还包括:
通过所述虚拟计算机系统实例,使用第一对象模型生成第一监听器对象;以及
通过所述控制器生成第二监听器对象,以接收所述请求,所述第二监听器对象对应于所述第一监听器对象。
56.根据条款52到55中的任一条款所述的计算机实施的方法,其中所述请求是超文本传输协议请求。
57.根据条款52到56中的任一条款所述的计算机实施的方法,其中所述方法还包括:
通过所述管理程序来实施第二虚拟计算机系统实例,从而使得第二虚拟计算机系统实例和所述控制器可访问第二共享存储区;并且其中
所述协议堆栈的所述一个或多个层的所述实施由所述控制器用来处理所述第二虚拟计算机系统实例的请求。
58.一种计算机实施的方法,其包括:
在配置有可执行指令的一个或多个计算机系统的控制下,
在管理程序的第一域中实施计算机系统实例;
在所述管理程序的第二域中实施控制器,所述控制器与所述计算机系统实例共享访问存储区,并且实施协议堆栈的多个层,所述多个层包括由所述计算机系统实例实施的所述协议堆栈的共享层;
至少通过以下方式满足使用所述协议堆栈接收的请求:
使用所述协议堆栈的所述共享层和所述存储区来将用于所述请求的响应数据从所述计算机系统实例传送到所述控制器;以及
使用来自所述协议堆栈的所述多个层中的至少一个层对所述第二域中的所述响应数据执行一个或多个操作,其中所述计算机系统实例缺少对所述至少一个层的实施。
59.根据条款58所述的计算机实施的方法,其中所述请求是超文本传输协议请求。
60.根据条款58或59所述的计算机实施的方法,其中所述共享层是所述协议堆栈的应用层。
61.根据条款58到60中的任一条款所述的计算机实施的方法,其中传送用于所述请求的所述响应数据包括作为所述计算机系统实例与半虚拟装置驱动器交互的结果而将所述控制器的超级调用传输到所述管理程序的超级调用接口。
62.根据条款58到61中的任一条款所述的计算机实施的方法,其中:
所述存储区被配置来包括控制空间和多个请求插槽;
将所述请求数据从所述计算机系统传送到所述控制器包括促使所述控制器获取所述响应数据,方式是至少访问所述控制空间以确定来自所述多个请求插槽中的请求插槽,所述请求插槽中放有所述请求数据的至少一部分。
63.根据条款58到62中的任一条款所述的计算机实施的方法,其中满足所述请求包括在所述第一域中生成第一请求,所述第一请求对应于所述请求,所述请求已在所述第二域中接收到。
64.一种系统,其包括:
一个或多个处理器;以及
存储器,其包括指令,所述指令在被所述一个或多个处理器执行时促使所述系统实施:
管理程序;
在所述管理程序上操作的一个或多个计算机系统实例;
在所述管理程序上操作的控制器;
针对所述一个或多个计算机系统实例中的每个计算机系统实例,存储空间由所述计算机系统实例和所述控制器共享;
其中所述管理程序、所述计算机系统实例以及所述控制器共同被配置来通过借助从所述计算机系统实例到所述控制器的超级调用而将用于响应的数据通知给所述请求,至少部分由所述控制器满足所述计算机系统的请求,其中通过将所述请求数据放在所述存储空间可访问所述请求。
65.根据条款64所述的系统,其中所述计算机系统实例包括半虚拟装置驱动器到所述管理程序实施方案的所述超级调用接口,从而所述计算机系统实例和控制器的超级调用触发到其他所述计算机系统实例和所述控制器的对应通信。
66.根据条款64或65所述的系统,其中:
所述控制器包括协议套的第一层集的实施;
所述计算机系统实例包括所述协议套的第二层集的实施;
所述第一层集和所述第二层集不同但具有非空交叉;以及
满足所述请求包括由所述控制器使用所述协议套的所述第一层集。
67.根据条款64到66中的任一条款所述的系统,其中所述请求是HTTP请求。
68.根据条款64到67中的任一条款所述的系统,其中将所述请求数据放在所述存储空间中包括将第一数据写入所述存储空间的第一分区,以及将第二数据写入所述存储空间的第二分区,所述第一数据指明所述第二数据在所述存储空间的所述第二分区中的位置。
69.根据条款64到68中的任一条款所述的系统,其中所述控制器包括超级调用处理程序,其被配置来接收来自所述管理程序的超级调用接口的超级调用,并且因此,访问所述存储空间,以识别将被服务的请求。
70.一种存储有指令的计算机可读存储媒体,所述指令在被计算机系统的一个或多个处理器执行时促使所述计算机系统至少实施:
管理程序的第一域中的计算机系统实例;
所述管理程序的第二域中的控制器;以及
所述控制器和所述计算机系统实例可访问的存储区;
其中所述计算机系统实例和控制器共同被配置来在请求处理时协作,从而满足请求包括:
使用所述管理程序的超级调用接口和所述存储区在所述计算机系统实例与所述控制器之间传送数据;以及
促使所述计算机系统实例和所述控制器各自结合所述数据来执行一个或多个操作。
71.根据条款70所述的计算机可读存储媒体,其中所述请求是超文本传输协议请求。
72.根据条款70或71所述的计算机可读存储媒体,其中在所述计算机系统实例与所述控制器之间传送所述数据包括所述计算机系统实例与半虚拟装置驱动器交互,以便促使所述存储区中的所述数据的通知被发出到所述控制器。
73.根据条款72所述的计算机可读存储媒体,其中所述通知包括所述请求的标识符,以及其中在所述计算机系统实例与所述控制器之间传送所述数据还包括使用所述标识符来确定位置,以从存储在所述存储区中的多个数据实例中选择请求数据。
74.根据条款70到73中的任一条款所述的计算机可读存储媒体,其中:
所述控制器实施了所述计算机系统实例未实施的协议堆栈的一个或多个层;以及
所述请求处理包括使用所述协议堆栈的所述一个或多个层。
75.根据条款70到74中的任一条款所述的计算机可读存储媒体,其中:
所述指令还促使所述计算机系统实施一个或多个其他计算机系统实例;
所述协议堆栈的所述实施的一个或多个层用于针对所述一个或多个其他计算机系统实例中的每个的请求处理;以及
所述一个或多个其他计算机系统实例不可访问所述存储区。
其他变化也在本公开的精神内。因此,尽管所揭示的技术可能有多种修改和替代结构,但附图中示出并且上文详细描述了本发明的某些说明性实施方案。然而应理解,本文绝非意图将本发明限于所揭示的一种或多种特定形式,相反,本发明意图涵盖所附权利要求书所界定的本发明的精神和范围内的所有修改、替代结构以及等效物。
在描述所公开的实施方案的上下文中使用了术语“一”和“所述”以及类似的词语(尤其是在所附权利要求书中),除非本文中另有指明或上下文有明确的相反提示,否者这些术语应被解释为既涵盖单数又涵盖复数。除非另有说明,否则术语“包括”、“具有”、“包含”以及“含有”应被解释为开放性术语(即,表示“包括,但不限于”)。在未更改并且是指物理连接时,术语“连接”应被解释为部分或完全容纳于其中、附接到或接合在一起,即使是存在中介元件时也是如此。除非本文中另有说明,否则本文中所叙述的数值范围仅仅意图用作一种速记和方法,用于按个别方式提及属于相关范围的每个独立的值;并且每个独立的值都并入本说明书中,正如这些值按个别方式陈述于本文中一样。除非本文中另有指明或上下文有明确的相反提示,否则术语“集合”(例如,“项目的集合”)或“子集”的使用应被解释为包括一个或多个成员的非空集合。此外,除非本文中另有指明或上下文有明确的相反提示,否则术语对应集合的“子集”不必表示对应集合的适当子集,但子集和对应集合可以相同。
除非本文中另有指明或上下文有明确的相反提示,否则结合性语言(例如,“A、B和C中的至少一个”或“A、B及C中的至少一个”形式的短语)将在上下文中被理解为大体表示一个项目、术语等,可以是A或B或C,或者是A和B以及C的集合的任何非空子集。例如,在具有用于上述结合性短语的三个成员的集合的说明性示例中,“A、B和C中的至少一个”和“A、B及C中的至少一个”是指任一以下集合:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,这些结合性语言通常并不意图暗示某些实施方案要求分别存在A中的至少一个、B中的至少一个以及C中的一个。
除非本文中另有指明或上下文有明确的相反提示,否则本文中所述的过程的操作都可以按任何适当次序加以执行。在配置有可执行指令的一个或多个计算机系统的控制下,本文中所述的过程(或者其变化和/或组合)可执行,并且可实施为代码(例如,可执行指令、一个或多个计算机程序,或者一个或多个应用),所述代码在一个或多个处理器上统一执行、由硬件统一执行或者其组合。所述代码可存储在计算机可读存储媒体上,例如,采用包括多个可由一个或多个处理器执行的多个指令的计算机程序的形式。计算机可读存储媒体可以是非瞬时的。
除非另外主张,否则使用本文中所提供的任何以及所有实例或示范性语言(例如,“例如”)都仅仅为了更好地说明本发明的实施方案,而并非对本发明的范围加以限制。本说明书中任何措辞都不应被解释为将任一非主张的元件指示为实践本发明所必须的。
本文中描述了本发明的优选实施方案,包括发明人已知的用于实施本发明的最佳模式。阅读上述描述后,所属领域的技术人员可易于明白这些优选实施方案的变化。发明人预期技术人员酌情使用此类变化,并且发明人希望采用本文具体描述之外的其他方式实践本公开的实施方案。因此,在适用法律允许的情况下,本公开的范围包括所附权利要求书中陈述的主题的所有修改和等效物。此外,除非本文中另有指明或上下文有明确的相反提示,否则本公开的范围涵盖所有可能变化中的上述元件的任何组合。
本文所述的所有参考文献,包括公开案、专利申请案以及专利都以引用的方式并入本文中,正如将每份参考文献个别及具体地指明是通过引用的方式完整地并入本文并于本文获得陈述的那样。
Claims (15)
1.一种系统,其包括:
实施管理程序的计算装置;
前端监听器,其被配置来:
接收通过网络传输的请求;
针对接收的请求的至少子集中的每个请求,将对应于所述请求的工作令牌提供到所述管理程序;
其中所述管理程序被配置来:
接收来自所述前端监听器的工作令牌;
针对来自接收的工作令牌的至少子集的每个工作令牌:
至少部分基于所述工作令牌,选择可用于处理对应于所述工作令牌的请求的应用图像;
通过至少识别用于所述选择的应用图像的复制部分的入口点地址以及至少部分基于识别的入口点开始执行应用代码,至少部分基于所述选择的应用图像来实例化虚拟计算机系统;以及
使用所述工作令牌来从所述前端监听器获取对应于所述工作令牌的所述请求的复本,以及将对应于所述工作令牌的所述请求的所述复本提供到所述实例化的虚拟计算机系统以便由所述虚拟计算机系统处理。
2.根据权利要求1所述的系统,其中实例化所述虚拟计算机系统包括将所述选择的应用图像的至少一部分复制到用于所述虚拟计算机系统的存储分区。
3.根据权利要求1所述的系统,其中所述应用图像至少部分基于另一虚拟计算机系统的快照,所述另一虚拟计算机系统已经部分执行了对应于所述应用图像的应用代码的可执行部分。
4.根据权利要求1所述的系统,其中使用所述工作令牌来获取所述请求的所述复本包括:
将在所述工作令牌中编码的用于所述请求的标识符提供到所述前端监听器;以及
至少部分基于提供的标识符,由所述前端监听器定位出所述请求;以及
将定位出的请求传送到所述计算装置。
5.一种用于响应请求的计算机实施的方法,其包括:
在配置有可执行指令的一个或多个计算机系统的控制下,
接收对应于由接收请求的前端监听器所接收的所述请求的令牌;
作为接收到所述令牌的结果,将虚拟计算机系统实例化以便处理所述请求;
使用所述接收的令牌来获取来自所述前端监听器的所述请求的复本;以及
使用所获取的所述请求的复本由所述虚拟计算机系统来处理所述请求。
6.根据权利要求5所述的计算机实施的方法,其中所述前端监听器和所述虚拟计算机系统由不同的计算装置实施。
7.根据权利要求5所述的计算机实施的方法,其中将所述虚拟计算机系统实例化包括:
从应用图像的存储库访问可用于处理所述请求的用于应用的应用图像;
将所述应用图像的至少一部分装载到为所述虚拟计算机系统分配的存储器中;
识别用于执行所述加载部分的入口点;以及
开始执行所述加载部分。
8.根据权利要求7所述的计算机实施的方法,其中访问所述应用图像包括至少部分基于与所述请求相关联的信息来选择所述应用图像,与所述请求相关联的所述信息包括下列各项中的至少一个:所述请求的一个或多个消息标题、所述请求的消息正文、对应于所述请求被提交到的网络地址的统一资源定位符,或所述网络地址。
9.根据权利要求5所述的计算机实施的方法,其还包括作为完成处理所述请求的结果,终止所述虚拟计算机系统。
10.一种系统,其包括:
监听器,其被配置来:
接收请求,所述接收的请求包括每个可由不同应用服务的请求的多个子集;
针对所述接收的请求的至少子集中的每个请求:
发出所述请求的通知;
至少部分基于所述通知来接收第二请求;以及
至少部分响应于所述第二请求来提供所述请求的复本;
控制器,其被配置来:
接收来自所述监听器的发出通知;
针对所述发出通知的至少子集中的每个接收到的发出通知:
使用所述发出通知来获取对应于来自所述监听器的接收到的发出通知的请求的复本;
至少部分基于所述接收到的发出通知并且从多个应用图像,选择用于应用的应用图像,所述应用图像能够处理对应于所述接收到的发出通知的所述请求;以及
促使虚拟计算机系统至少部分基于所述选择的应用图像被实例化,并且至少部分基于所获取的对应于所述接收到的发出通知的所述请求的复本处理所述请求。
11.根据权利要求10所述的系统,其中所述接收的请求包括寻址到不同网络地址的请求,所述不同网络地址中的每个网络地址,每个网络地址对应于来自所述多个应用图像的不同应用图像。
12.根据权利要求10所述的系统,其中所述控制器还被配置来在所述通知与对应于所述接收到的发出通知的所述请求之间建立连接以便使所述应用能够从所述监听器获取所述请求的复本。
13.根据权利要求10所述的系统,其中发出通知包括将令牌排队到请求队列上。
14.根据权利要求10所述的系统,其中所述选择的应用图像至少部分基于另一虚拟计算机系统实例的快照。
15.根据权利要求10所述的系统,其中:
接收所述发出通知包括使所述发出通知从队列中离队;以及
所述控制器还被配置来作为检测用于请求处理的容量的结果,使排队的通知离队。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010139588.4A CN111338762B (zh) | 2013-08-12 | 2014-08-11 | 请求处理技术 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/964,977 | 2013-08-12 | ||
US13/964,977 US10346148B2 (en) | 2013-08-12 | 2013-08-12 | Per request computer system instances |
US13/964,889 | 2013-08-12 | ||
US13/964,941 US9348634B2 (en) | 2013-08-12 | 2013-08-12 | Fast-booting application image using variation points in application source code |
US13/964,941 | 2013-08-12 | ||
US13/964,889 US9280372B2 (en) | 2013-08-12 | 2013-08-12 | Request processing techniques |
PCT/US2014/050597 WO2015023607A1 (en) | 2013-08-12 | 2014-08-11 | Request processing techniques |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010139588.4A Division CN111338762B (zh) | 2013-08-12 | 2014-08-11 | 请求处理技术 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105556475A true CN105556475A (zh) | 2016-05-04 |
CN105556475B CN105556475B (zh) | 2020-03-31 |
Family
ID=52468614
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010139588.4A Active CN111338762B (zh) | 2013-08-12 | 2014-08-11 | 请求处理技术 |
CN201480052085.6A Active CN105556475B (zh) | 2013-08-12 | 2014-08-11 | 请求处理技术 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010139588.4A Active CN111338762B (zh) | 2013-08-12 | 2014-08-11 | 请求处理技术 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9280372B2 (zh) |
EP (1) | EP3033677B1 (zh) |
JP (3) | JP6419815B2 (zh) |
CN (2) | CN111338762B (zh) |
CA (1) | CA2921180C (zh) |
WO (1) | WO2015023607A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413333A (zh) * | 2018-04-28 | 2019-11-05 | 网宿科技股份有限公司 | 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置 |
CN111880864A (zh) * | 2020-07-30 | 2020-11-03 | 平安国际智慧城市科技股份有限公司 | 基于http的模型调用方法、系统、计算机设备和存储介质 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10339229B1 (en) | 2013-05-31 | 2019-07-02 | Cadence Design Systems, Inc. | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system |
US10169063B2 (en) * | 2014-02-24 | 2019-01-01 | Red Hat Israel, Ltd. | Hypervisor capability access provision |
US9690686B1 (en) * | 2014-03-31 | 2017-06-27 | Cadence Design Systems, Inc. | Method for setting breakpoints in automatically loaded software |
DE102014208848A1 (de) * | 2014-05-12 | 2015-11-12 | Robert Bosch Gmbh | Verfahren zum Überwachen eines elektronischen Sicherheitsmoduls |
US11487561B1 (en) | 2014-12-24 | 2022-11-01 | Cadence Design Systems, Inc. | Post simulation debug and analysis using a system memory model |
US10802852B1 (en) | 2015-07-07 | 2020-10-13 | Cadence Design Systems, Inc. | Method for interactive embedded software debugging through the control of simulation tracing components |
US10699211B2 (en) | 2016-02-29 | 2020-06-30 | Oracle International Corporation | Supervised method for classifying seasonal patterns |
US10331802B2 (en) | 2016-02-29 | 2019-06-25 | Oracle International Corporation | System for detecting and characterizing seasons |
US11113852B2 (en) | 2016-02-29 | 2021-09-07 | Oracle International Corporation | Systems and methods for trending patterns within time-series data |
US10885461B2 (en) | 2016-02-29 | 2021-01-05 | Oracle International Corporation | Unsupervised method for classifying seasonal patterns |
US10198339B2 (en) | 2016-05-16 | 2019-02-05 | Oracle International Corporation | Correlation-based analytic for time-series data |
US11082439B2 (en) | 2016-08-04 | 2021-08-03 | Oracle International Corporation | Unsupervised method for baselining and anomaly detection in time-series data for enterprise systems |
US10635563B2 (en) | 2016-08-04 | 2020-04-28 | Oracle International Corporation | Unsupervised method for baselining and anomaly detection in time-series data for enterprise systems |
US10785288B2 (en) | 2017-02-22 | 2020-09-22 | International Business Machines Corporation | Deferential support of request driven cloud services |
US10949436B2 (en) | 2017-02-24 | 2021-03-16 | Oracle International Corporation | Optimization for scalable analytics using time series models |
US10915830B2 (en) | 2017-02-24 | 2021-02-09 | Oracle International Corporation | Multiscale method for predictive alerting |
US10817803B2 (en) | 2017-06-02 | 2020-10-27 | Oracle International Corporation | Data driven methods and systems for what if analysis |
EP3627322A4 (en) * | 2017-06-14 | 2020-04-29 | Beijing Xiaomi Mobile Software Co., Ltd. | APPLICATION INTERACTION METHOD, INTERACTION METHOD AND DEVICE |
US11010823B2 (en) * | 2017-07-28 | 2021-05-18 | Citrix Systems, Inc. | Connector leasing for long-running software operations |
US10621005B2 (en) | 2017-08-31 | 2020-04-14 | Oracle International Corporation | Systems and methods for providing zero down time and scalability in orchestration cloud services |
US20200142746A1 (en) * | 2017-12-29 | 2020-05-07 | Virtual Instruments Corporation | Methods and system for throttling analytics processing |
US10997517B2 (en) | 2018-06-05 | 2021-05-04 | Oracle International Corporation | Methods and systems for aggregating distribution approximations |
US10963346B2 (en) | 2018-06-05 | 2021-03-30 | Oracle International Corporation | Scalable methods and systems for approximating statistical distributions |
US11074094B2 (en) | 2018-08-29 | 2021-07-27 | Red Hat, Inc. | Securing hypercall support for user space processes in virtual machines |
US11138090B2 (en) | 2018-10-23 | 2021-10-05 | Oracle International Corporation | Systems and methods for forecasting time series with variable seasonality |
US12001926B2 (en) | 2018-10-23 | 2024-06-04 | Oracle International Corporation | Systems and methods for detecting long term seasons |
US10855548B2 (en) | 2019-02-15 | 2020-12-01 | Oracle International Corporation | Systems and methods for automatically detecting, summarizing, and responding to anomalies |
CN113574515B (zh) * | 2019-03-04 | 2024-04-26 | 日立数据管理有限公司 | 用于分布式系统中的异步存储管理的系统和方法 |
US11121983B1 (en) | 2019-03-20 | 2021-09-14 | United Services Automobile Association (Usaa) | Reactive throttle infrastructure |
US11748178B2 (en) * | 2019-04-02 | 2023-09-05 | Intel Corporation | Scalable and accelerated function as a service calling architecture |
US11533326B2 (en) | 2019-05-01 | 2022-12-20 | Oracle International Corporation | Systems and methods for multivariate anomaly detection in software monitoring |
US11537940B2 (en) | 2019-05-13 | 2022-12-27 | Oracle International Corporation | Systems and methods for unsupervised anomaly detection using non-parametric tolerance intervals over a sliding window of t-digests |
US11625505B2 (en) | 2019-08-19 | 2023-04-11 | Microsoft Technology Licensing, Llc | Processor with network stack domain and system domain using separate memory regions |
US11887015B2 (en) | 2019-09-13 | 2024-01-30 | Oracle International Corporation | Automatically-generated labels for time series data and numerical lists to use in analytic and machine learning systems |
US11470118B2 (en) * | 2019-11-01 | 2022-10-11 | Microsoft Technology Licensing, Llc | Processor with network processing stack having separate binary |
US11582327B1 (en) | 2021-10-21 | 2023-02-14 | Citrix Systems, Inc. | Dynamically coordinated service maintenance operations and adaptive service polling for microservices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270104A (zh) * | 2011-07-14 | 2011-12-07 | 华中科技大学 | 虚拟化环境中动态磁盘带宽分配方法 |
US20120233282A1 (en) * | 2011-03-08 | 2012-09-13 | Rackspace Us, Inc. | Method and System for Transferring a Virtual Machine |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555385A (en) | 1993-10-27 | 1996-09-10 | International Business Machines Corporation | Allocation of address spaces within virtual machine compute system |
US5797005A (en) | 1994-12-30 | 1998-08-18 | International Business Machines Corporation | Shared queue structure for data integrity |
US6678735B1 (en) | 2000-01-26 | 2004-01-13 | Nortel Networks Limited | Method and apparatus for a sip client manager |
US20020116205A1 (en) | 2000-05-19 | 2002-08-22 | Ankireddipally Lakshmi Narasimha | Distributed transaction processing system |
US7689560B2 (en) | 2000-10-13 | 2010-03-30 | Miosoft Corporation | Persistent data storage techniques |
US20020141404A1 (en) | 2001-04-03 | 2002-10-03 | Michael Wengrovitz | Call routing using information in session initiation protocol messages |
US6886041B2 (en) | 2001-10-05 | 2005-04-26 | Bea Systems, Inc. | System for application server messaging with multiple dispatch pools |
US7103628B2 (en) | 2002-06-20 | 2006-09-05 | Jp Morgan Chase & Co. | System and method for dividing computations |
US6895472B2 (en) | 2002-06-21 | 2005-05-17 | Jp Morgan & Chase | System and method for caching results |
US7376693B2 (en) | 2002-02-08 | 2008-05-20 | Jp Morgan Chase & Company | System architecture for distributed computing and method of using the system |
US7640547B2 (en) | 2002-02-08 | 2009-12-29 | Jpmorgan Chase & Co. | System and method for allocating computing resources of a distributed computing system |
US8271882B2 (en) | 2002-04-24 | 2012-09-18 | Sap Ag | Processing life and work events |
GB0217088D0 (en) | 2002-07-24 | 2002-09-04 | Ibm | Asynchronous messaging in storage area network |
US6957113B1 (en) | 2002-09-06 | 2005-10-18 | National Semiconductor Corporation | Systems for allocating multi-function resources in a process system and methods of operating the same |
US20040205776A1 (en) | 2003-04-10 | 2004-10-14 | International Business Machines Corporation | Method and apparatus for concurrent update and activation of partition firmware on a logical partitioned data processing system |
US7467102B2 (en) | 2003-09-11 | 2008-12-16 | International Business Machines Corporation | Request type grid computing |
US20050060704A1 (en) * | 2003-09-17 | 2005-03-17 | International Business Machines Corporation | Managing processing within computing environments including initiation of virtual machines |
US7908313B2 (en) | 2004-07-21 | 2011-03-15 | The Mathworks, Inc. | Instrument-based distributed computing systems |
US7512769B1 (en) | 2004-10-06 | 2009-03-31 | Hewlett-Packard Development Company, L.P. | Process migration |
US7409719B2 (en) * | 2004-12-21 | 2008-08-05 | Microsoft Corporation | Computer security management, such as in a virtual machine or hardened operating system |
US20070250335A1 (en) | 2006-01-31 | 2007-10-25 | Brian Hodges | Workflow applications |
JP4958034B2 (ja) | 2006-04-28 | 2012-06-20 | 克秀 浅沼 | グループ分けシステム、グループ分け管理サーバ及びグループ分けプログラム |
US7885969B2 (en) | 2007-09-17 | 2011-02-08 | International Business Machines Corporation | System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer |
US8505030B2 (en) | 2007-11-16 | 2013-08-06 | Microsoft Corporation | Coordinating resources using a volatile network intermediary |
US8719841B2 (en) | 2007-11-16 | 2014-05-06 | Microsoft Corporation | Dispatch mechanism for coordinating application and communication medium state |
US9021503B2 (en) | 2007-11-16 | 2015-04-28 | Microsoft Technology Licensing, Llc | Coordinating application state and communication medium state |
US7743107B2 (en) * | 2007-12-07 | 2010-06-22 | International Business Machines Corporation | System and method for using remote module on VIOS to manage backups to remote backup servers |
US8984530B2 (en) | 2008-01-31 | 2015-03-17 | Microsoft Corporation | Queued message dispatch |
US8473594B2 (en) | 2008-05-02 | 2013-06-25 | Skytap | Multitenant hosted virtual machine infrastructure |
US8849971B2 (en) * | 2008-05-28 | 2014-09-30 | Red Hat, Inc. | Load balancing in cloud-based networks |
US8171495B2 (en) | 2008-05-29 | 2012-05-01 | Microsoft Corporation | Queue dispatch using deferred acknowledgement |
US20110004701A1 (en) | 2008-12-29 | 2011-01-06 | Debashish Panda | Provisioning highly available services for integrated enterprise and communication |
US8776090B2 (en) * | 2009-02-17 | 2014-07-08 | Broadcom Corporation | Method and system for network abstraction and virtualization for a single operating system (OS) |
US8433749B2 (en) | 2009-04-15 | 2013-04-30 | Accenture Global Services Limited | Method and system for client-side scaling of web server farm architectures in a cloud data center |
JP2010271980A (ja) | 2009-05-22 | 2010-12-02 | Access Co Ltd | 端末装置、端末装置の起動方法およびプログラム |
US8301706B2 (en) | 2009-06-15 | 2012-10-30 | Microsoft Corporation | Routing of pooled messages via an intermediary |
US8549267B2 (en) | 2009-12-22 | 2013-10-01 | Intel Corporation | Methods and apparatus to manage partial-commit checkpoints with fixup support |
US8375095B2 (en) | 2009-12-22 | 2013-02-12 | Microsoft Corporation | Out of order durable message processing |
CN102656561A (zh) | 2010-03-16 | 2012-09-05 | 松下电器产业株式会社 | 信息处理装置、虚拟机生成方法及应用发布系统 |
US20110252208A1 (en) * | 2010-04-12 | 2011-10-13 | Microsoft Corporation | Express-full backup of a cluster shared virtual machine |
US8607242B2 (en) | 2010-09-02 | 2013-12-10 | International Business Machines Corporation | Selecting cloud service providers to perform data processing jobs based on a plan for a cloud pipeline including processing stages |
US9304867B2 (en) * | 2010-09-28 | 2016-04-05 | Amazon Technologies, Inc. | System and method for providing flexible storage and retrieval of snapshot archives |
US8694821B2 (en) | 2010-12-03 | 2014-04-08 | International Business Machines Corporation | Generation of standby images of applications |
JP5742410B2 (ja) * | 2011-04-11 | 2015-07-01 | 日本電気株式会社 | フォールトトレラント計算機システム、フォールトトレラント計算機システムの制御方法、及びフォールトトレラント計算機システムの制御プログラム |
US20130067469A1 (en) | 2011-09-14 | 2013-03-14 | Microsoft Corporation | Load Balancing By Endpoints |
US8863129B2 (en) | 2011-12-06 | 2014-10-14 | International Business Machines Corporation | Automated caching and mirroring of immutable data in distributed virtual machines via native interface components |
WO2013112151A1 (en) | 2012-01-26 | 2013-08-01 | Empire Technology Development Llc | Data center with continuous world switch security |
US8881115B2 (en) | 2012-04-17 | 2014-11-04 | International Business Machines Corporation | Compiling source code for debugging with expanded snapshots |
US8839243B2 (en) | 2012-04-23 | 2014-09-16 | International Business Machines Corporation | Remediating resource overload |
US9189959B2 (en) * | 2012-06-27 | 2015-11-17 | International Business Machines Corporation | Navigation system providing a super detail mode of operation to assist user's driving |
US9563480B2 (en) * | 2012-08-21 | 2017-02-07 | Rackspace Us, Inc. | Multi-level cloud computing system |
-
2013
- 2013-08-12 US US13/964,889 patent/US9280372B2/en active Active
-
2014
- 2014-08-11 EP EP14836658.6A patent/EP3033677B1/en active Active
- 2014-08-11 CN CN202010139588.4A patent/CN111338762B/zh active Active
- 2014-08-11 CA CA2921180A patent/CA2921180C/en active Active
- 2014-08-11 WO PCT/US2014/050597 patent/WO2015023607A1/en active Application Filing
- 2014-08-11 CN CN201480052085.6A patent/CN105556475B/zh active Active
- 2014-08-11 JP JP2016533499A patent/JP6419815B2/ja active Active
-
2016
- 2016-03-04 US US15/061,932 patent/US10353725B2/en active Active
-
2018
- 2018-10-10 JP JP2018191339A patent/JP6849642B2/ja active Active
-
2019
- 2019-11-06 JP JP2019201248A patent/JP6764989B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120233282A1 (en) * | 2011-03-08 | 2012-09-13 | Rackspace Us, Inc. | Method and System for Transferring a Virtual Machine |
CN102270104A (zh) * | 2011-07-14 | 2011-12-07 | 华中科技大学 | 虚拟化环境中动态磁盘带宽分配方法 |
Non-Patent Citations (1)
Title |
---|
BO ZHAO 等: "Reducing the Delay and Power Consumption of Web Browsing on Smartphones in 3G networks", 《DISTRIBUTED COMPUTING SYSTEM (ICDCS), 2011 31ST INTERNATIONAL CONFERENCE ON, IEEE》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413333A (zh) * | 2018-04-28 | 2019-11-05 | 网宿科技股份有限公司 | 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置 |
CN110413333B (zh) * | 2018-04-28 | 2022-04-22 | 网宿科技股份有限公司 | 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置 |
CN111880864A (zh) * | 2020-07-30 | 2020-11-03 | 平安国际智慧城市科技股份有限公司 | 基于http的模型调用方法、系统、计算机设备和存储介质 |
CN111880864B (zh) * | 2020-07-30 | 2023-12-26 | 平安国际智慧城市科技股份有限公司 | 基于http的模型调用方法、系统、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3033677A4 (en) | 2017-03-22 |
CA2921180A1 (en) | 2015-02-19 |
JP2016529620A (ja) | 2016-09-23 |
US10353725B2 (en) | 2019-07-16 |
US20150046920A1 (en) | 2015-02-12 |
EP3033677B1 (en) | 2021-06-23 |
JP2019023915A (ja) | 2019-02-14 |
US9280372B2 (en) | 2016-03-08 |
JP6849642B2 (ja) | 2021-03-24 |
CN111338762B (zh) | 2024-04-23 |
CN105556475B (zh) | 2020-03-31 |
CA2921180C (en) | 2023-04-04 |
JP6764989B2 (ja) | 2020-10-07 |
JP6419815B2 (ja) | 2018-11-07 |
JP2020038692A (ja) | 2020-03-12 |
CN111338762A (zh) | 2020-06-26 |
EP3033677A1 (en) | 2016-06-22 |
WO2015023607A1 (en) | 2015-02-19 |
US20160188360A1 (en) | 2016-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105556475A (zh) | 请求处理技术 | |
US11669362B2 (en) | System for managing and scheduling containers | |
Cao et al. | A scalable multicloud storage architecture for cloud-supported medical internet of things | |
US9128765B2 (en) | Assigning restored virtual machine based on past application usage of requesting user | |
US9304819B2 (en) | Virtual deployment | |
EP3803766A1 (en) | A secure decentralized system utilizing smart contracts, a blockchain, and/or a distributed file system | |
CN101331461B (zh) | 虚拟数据中心联合体中的远程性能监视器 | |
Barati et al. | Privacy-aware cloud auditing for GDPR compliance verification in online healthcare | |
CN107567696A (zh) | 计算集群内的资源实例群组的自动扩展 | |
CN1937628B (zh) | 用于管理数据处理目标实体的方法和系统 | |
CN110083455B (zh) | 图计算处理方法、装置、介质及电子设备 | |
CN112948723A (zh) | 接口调用方法、装置及相关设备 | |
CN106412094A (zh) | 一种以公有云方式组织管理分散资源的方法 | |
US10339037B1 (en) | Recommendation engine for recommending prioritized performance test workloads based on release risk profiles | |
CN103051668A (zh) | 一种服务器资源管理系统及管理方法 | |
CN108551484B (zh) | 用户信息同步方法、装置、计算机装置及存储介质 | |
CN114039751A (zh) | 一种网络动态感知装置、系统和方法 | |
Vaidya | Handling critical issues of big data on cloud | |
Varshney et al. | Unique identifier system using Aneka platform | |
Cosulschi et al. | Running Hadoop applications in virtualization environment | |
CN117390314A (zh) | 基于人工智能的页面保活方法、装置、电子设备及介质 | |
Le et al. | OpenStack | |
CN115686592A (zh) | 小程序的维护方法及系统、存储介质、计算机设备 | |
CA3226769A1 (en) | Intent based service scaling | |
CN113971127A (zh) | 基于大数据构造的名单系统测试方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |