CN112424749A - 内存占用有限情况下的按需代码执行 - Google Patents
内存占用有限情况下的按需代码执行 Download PDFInfo
- Publication number
- CN112424749A CN112424749A CN201980024760.7A CN201980024760A CN112424749A CN 112424749 A CN112424749 A CN 112424749A CN 201980024760 A CN201980024760 A CN 201980024760A CN 112424749 A CN112424749 A CN 112424749A
- Authority
- CN
- China
- Prior art keywords
- demand code
- group
- coordinator
- execution
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims description 57
- 238000013475 authorization Methods 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 230000008520 organization Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 18
- 238000004891 communication Methods 0.000 description 55
- 238000007726 management method Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 19
- 238000004590 computer program Methods 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 230000003993 interaction Effects 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
-
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
描述了用于管理协调环境以便在所提供的内存占用减少的情况下执行按需代码的系统和方法。协调器从协调装置接收个体按需代码执行请求或任务。所述协调器可处理所述按需代码执行请求,以将所述按需代码执行的至少一个子集与共享可执行代码的一个或多个组相关联。所述协调装置可实现所述个体任务的所述执行,而无需单独加载和执行所述按需可执行代码。因此,可通过减少执行所述按需任务所需的所述内存占用来在具有更有限的计算资源的计算装置上实现所述协调装置。
Description
背景技术
一般而言,计算装置利用通信网络或一系列通信网络来交换数据。公司和组织操作使许多计算装置互连以支持操作或向第三方提供服务的计算机网络。计算系统可位于单个地理位置中或位于多个不同的地理位置(例如,经由私有或公共通信网络互连)中。具体地,数据中心或数据处理中心(在本文一般称为“数据中心”)可包括许多互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表组织来操作的私有数据中心,或者可以是代表公众或为公众利益来操作的公共数据中心。
为了便于提高对数据中心资源的利用,虚拟化技术允许单个物理计算装置为数据中心的用户托管作为独立的计算装置来呈现和操作的虚拟机的一个或多个实例。通过虚拟化,单个物理计算装置可以动态方式创建、维护、删除或以其他方式管理虚拟机。继而,用户可从数据中心请求计算机资源,包括单个计算装置或网络计算装置的配置,并且可为用户提供各种数量的虚拟机资源。
在某些环境中,经由通信网络进行通信的计算装置可对应于具有主要功能的计算装置,诸如台式个人计算机。在其他环境中,经由通信网络进行通信的计算装置的至少一些部分可对应于具有至少一个替代主要功能的嵌入式装置或精简装置,诸如具有单独主要目的的家用电器(例如,恒温器或冰箱),同时至少还提供有限的计算功能。在一些情况下,这些嵌入式装置或精简装置的本地用户界面受到限制,因此可能需要远程管理来实现这些装置的一些功能。然而,由于与远程管理装置的通信延时以及在远程管理装置处或在与远程管理装置通信期间无意中公开私人信息的可能性,在某些情况下远程管理可能会出现问题。当嵌入式装置或精简装置以及远程管理装置存在于单独的通信网络上或通过公共通信网络进行通信时,这些问题可能更加普遍。
附图说明
在整个附图中,附图标记可重复使用以指示在引用元件之间的对应性。提供了附图以示出本文所述的示例实施方案且附图不旨在限制本公开的范围。
图1是描绘了协调器可操作以在协调环境内在本地管理和协调协调装置的操作的说明性环境的框图;
图2描绘了提供图1的协调器的计算装置的一般架构;
图3A和图3B描绘了由图1的协调器管理的协调装置的一般架构;
图4描绘了可用于生成和提交与管理边缘装置中的认证和授权服务的配置有关的配置信息的客户端装置的一般架构;
图5A至图5B是图1的说明性环境的框图,描绘了用于配置和执行基于组的任务的说明性交互;并且
图6是示出用于接收和处理基于组的任务的例程的流程图。
具体实施方式
一般而言,本申请对应于对通信网络中的计算装置的管理。更具体地,本申请的各方面对应于对用于在协调环境中执行按需代码的内存资源的管理。根据本公开的各方面,协调环境中包括存在于协调环境内的协调器,用于在协调环境内控制协调装置的操作和功能。在某些情况下,协调器和协调装置可对应于具有至少一个替代主要功能的嵌入式装置或精简装置,诸如具有单独主要用途的家用电器。在某些情况下,此类装置可被称为“物联网”装置或“IoT”装置。协调装置可包括有限的本地用户界面能力,并且因此可从远程管理中受益。另外,协调器可包括相对于基于服务器的计算装置的可与更有限的计算资源(诸如处理、存储器或通信)相关联的装置(诸如平板计算装置)。
本文所公开的协调器能够在包括协调器和协调装置的环境(诸如局域网或“LAN”环境)内在本地对协调装置进行这样的远程管理。在一些实施方案中并且如下面将描述的,使用协调器因此能够管理协调装置,而无需在本地环境外部进行通信,从而允许与使用外部或公共通信网络相比,降低隐私风险并提高通信速度。此外,本文所公开的协调器可用作本地化的按需代码执行系统,从而能够快速执行便携式代码段以在协调器上实现功能。这些便携式代码段在本文可被称为“任务”。在某些情况下,任务可用于诸如通过改变装置的状态来协调协调装置的功能。例如,在协调装置为支持网络的灯的情况下,任务可用于根据对协调器的输入(诸如当前时间、用户输入或另一协调装置的状态)来改变灯的状态(例如,变为“开”或“关”)。协调器可进一步根据许多不同的协议来启用通信协调装置和任务,并且在某些情况下,可在此类协议之间提供转换功能。
更进一步地,在某些情况下,协调器可管理任务的执行位置,使得可根据候选装置的能力和任务执行的要求来在协调器上、在协调装置上或在远程环境(例如,远程网络计算环境)的装置上执行任务。在某些情况下,这些任务可以是用户定义的,从而使得用户能够根据与任务相对应的用户提交的代码在协调器或协调装置上实现各种功能。因此,协调器可提供对协调装置的可快速重新配置的本地化管理。
协调器可与在服务的边缘节点上的一个或多个部件上实例化的基于网络的服务相关联,所述基于网络的服务不同于集中的认证和授权。说明性地,服务提供商环境可由协调器的提供商操作,并且可使得用户能够指定协调器的各种配置参数,诸如协调器的协调环境的位置;环境内的协调装置;可由协调器执行的任务;协调器管理装置之间、任务之间或者装置与任务之间的通信应采用的方式;协调器的安全信息;或协调器的其他参数(诸如,在协调器处将监测的度量或在协调器处将执行的日志记录)。在某些情况下,由于协调器自身可能与有限的本地化用户界面相关联,因此服务提供商环境可使得用户能够经由客户端装置提交协调器的配置并导致能够向协调器自动提供所述配置。服务提供商环境可进一步使得单个客户端装置能够经由统一界面管理多个协调器,并且能够通过部署新配置或者通过将配置的先前部署回滚或撤消到协调器来快速更改协调器的配置。有关用于实现按需代码的协调器的更多细节可在标题为“ON-DEMAND CODE EXECUTION IN A LOCALIZEDDEVICE COORDINATOR”并且于2016年11月28日提交的共同待决的美国专利申请号15/362,696中找到,所述专利申请的全部内容据此以引用的方式并入。
在某些情况下,服务提供商环境可提供与协调器的功能类似或相同的功能。例如,协调器可至少部分地基于便携式代码段或“任务”的执行而起作用。类似地,服务器提供商环境可包括用于执行相同或类似任务的按需执行代码环境。关于这种按需代码执行环境的更多细节可在标题为“PROGRAMMATIC EVENT DETECTION AND MESSAGE GENERATION FORREQUESTS TO EXECUTE PROGRAM CODE”并且于2014年9月30日提交的美国专利号9,323,556(“′556专利”)中找到,所述美国专利的全部内容据此以引用的方式并入。简而言之,为了执行任务,按需代码执行环境可维护一接收到用户请求即可立即使用的预初始化的虚拟机实例池。由于这些虚拟机的预初始化性质,与执行用户代码相关联的延迟(有时称为延时)(例如,实例和语言运行时启动时间)可显著减少,通常可减少至100毫秒级以下。
说明性地,按需代码执行环境可在一个或多个物理计算装置上维护虚拟机实例池,其中每个虚拟机实例都具有在其上加载的一个或多个软件部件(例如,操作系统、语言运行时、库等)。当按需代码执行环境接收到执行用户的程序代码(“任务”)的请求(所述请求指定了用于执行用户的程序代码的一个或多个计算约束)时,按需代码执行环境可基于所述请求所指定的一个或多个计算约束来选择用于执行用户程序代码的虚拟机实例并且可导致所述用户程序代码在所选择的虚拟机实例上执行。可在虚拟机实例上创建的隔离容器中执行所述程序代码。由于在接收到请求之前,池中的虚拟机实例已经被启动并加载了特定的操作系统和语言运行时,因此与查找可处理请求的计算能力相关联的延迟(例如,通过在虚拟机实例上创建的一个或多个容器中执行用户代码)显著减少。
按需代码执行环境可包括虚拟机实例管理器,如’556专利中更详细描述的那样,所述虚拟机实例管理器配置为接收用户代码(线程、程序等,以多种编程语言中的任一种组成)并以高度可扩展、低延时的方式执行代码,而无需用户配置虚拟机实例。具体地,虚拟机实例管理器可在接收用户代码之前以及在从用户接收到有关任何特定虚拟机实例配置的任何信息之前,根据预定的配置集来创建和配置虚拟机实例,每个配置都对应于各种运行时环境中的任一个或多个。此后,虚拟机实例管理器接收用户发起的执行代码的请求,并且基于与所述请求相关联的配置信息来识别预配置的虚拟机实例以执行代码。虚拟机实例管理器还可分配所识别的虚拟机实例以通过在所分配的虚拟机实例内部创建和配置容器来至少部分地执行用户的代码。在’556专利中更详细地描述了用于实现虚拟机实例管理器并在虚拟机实例上执行用户代码的各种实施方案。
如上面所讨论的,在某些情况下,协调器可被配置为在本地执行任务(例如,在协调器上)。由协调装置所提交的每个任务都可包括处理程序,所述处理程序便于协调器执行任务并响应于所提交的任务请求来生成处理结果。然而,如上所述,在一些实施方案中,协调装置可提交共享至少一部分可执行代码的多个任务以便在协调器处执行。对于利用更有限的计算资源实现的协调器,随着要执行的任务数量的增加,作为内存的计算资源需求可能会超出可用性。因此,协调器可能无法正确执行所有提交的任务,或者可能以不太有效的方式执行所提交的任务。更进一步地,对于包括具有替代功能的计算装置(例如平板计算装置)的协调器,扩展任务的执行可能会限制协调器执行替代功能的能力。因此,协调器和协调网络的操作可能会基于可用计算资源而受到影响。
由于与’556专利中所描述的按需代码执行环境(其例如可在数据中心中实现)相比,由协调器实现的按需代码执行环境可能与更有限的计算资源相关联,因此协调器可实现调度程序以协助确定任务执行的优先级。具体地,调度程序接收执行任务的调用,并将诸如工作项目的调用排队到工作项目队列中。然后,所述调度程序可根据调度算法选择性地使工作项目队列中的调用出列。调度程序可利用任何数量的调度算法,诸如先进先出调度、最小截止期优先调度、最短剩余时间调度、固定优先级抢占调度和轮循调度。
说明性地,可基于协调器的可用计算资源的量以及完成任务调用所需的资源量(例如,其可由任务的创建者或协调器的管理员来设置,或者可基于对任务的静态或动态分析来估计)来实现每种调度算法。在某些情况下,调度算法也可至少部分地基于由任务的创建者、协调器的管理员、调用实体等分配给任务的优先级。调度程序可根据调度算法来处理工作项目队列,并且当选择任务调用以使其出列时,通过执行与所述调用相对应的任务来完成任务调用(例如,根据所述调用的参数)。如进一步讨论的,根据本申请的各方面,协调器可通过将一个或多个协调装置所提供的个体任务的至少一部分替换为基于组的任务的多次迭代来促进附加任务的执行。
为了协助执行任务,协调器还可包括资源管理器,以监测协调器处的计算资源使用情况并管理将在其中执行任务的执行环境的生成、破坏和维护。执行环境可包括在逻辑上分配给任务执行的内存的任何部分。说明性地,执行环境可对应于“容器”、操作系统级虚拟化环境或“沙盒”环境诸如“chroot jail”或Python虚拟环境“virtualenv”。在其他情况下,执行环境可对应于虚拟机环境(例如,JAVA虚拟机、具有不同操作系统的虚拟化硬件装置等)。在又其他情况下,执行环境可以是分配给任务执行的内存空间,而不必利用虚拟化。说明性地,资源管理器可使得调度程序能够检索协调器的当前计算资源可用性信息,诸如可用内存量、(例如,中央处理单元、图形处理单元等的)处理器周期、网络带宽或其他计算资源,以便使得调度程序能够确定哪些任务调用要从工作项目队列中出列。
在某些情况下,资源管理器可向调度程序提供其他信息,诸如在协调器处发生的当前任务执行的列表。资源管理器还可接收和处理来自调度程序的请求,以获得要将任务调用传递到其中的执行环境。说明性地,在每个任务(个体或基于组)在单独的执行环境中执行并且给定任务不存在执行环境的情况下,资源管理器可确定执行给定任务所需的资源(例如,就基础计算资源如处理器容量和内存而言,以及就诸如驱动程序、运行时、实用程序、依赖关系等软件资源而言)并且可生成执行环境以提供此类资源。然后,资源管理器可将用于执行环境的识别信息返回给调度程序,使得调度程序可将执行任务的调用传递给执行环境。在某些情况下,资源管理器还可实现对现有执行环境的重新利用。例如,某些任务(包括基于组的任务)可能被“钉住”,以便针对所述任务预先生成执行环境。因此,当资源管理器接收到生成任务的执行环境的请求时,可返回针对预生成的环境的识别信息,从而减少生成执行环境所需的时间和计算资源。在某些情况下,执行环境可跨任务重新利用,诸如当两个不同的任务需要相同或类似的资源来执行时。在此类情况下,资源管理器可“清理”不同任务执行之间的执行环境,以确保执行之间的安全性。如下面将更详细描述的,资源管理器还可能能够暂停和恢复执行环境,以便可暂停低优先级任务的执行环境以将计算资源释放给高优先级任务,并且根据调度算法恢复低优先级任务的执行环境。
如上所述,根据本公开的各方面,提供了用于在内存占用减少的情况下执行按需代码的协调环境。更具体地,协调器从协调装置接收个体按需代码执行请求或任务。协调器可处理按需代码执行请求,以将按需代码执行的至少一个子集与共享可执行代码的一个或多个组相关联。例如,协调装置可传输与具有共同可执行代码的系统级任务有关的任务。协调器可维护与用于任务分组的共同可执行代码相关联的主过程(或任务),而不是为每个所接收的任务维护可执行代码并如上所述调度和管理任务。另外,协调器然后可维护个体工作项目队列,所述个体工作项目队列维护有关个体任务的状态信息。协调器可实现个体任务的执行,而无需单独加载和执行按需可执行代码。因此,可通过减少执行按需任务所需的内存占用,同时针对所请求的按需任务的执行的多次迭代维护个体状态和配置来在具有更有限的计算资源的计算装置上实现协调器。
尽管出于说明的目的,本公开中描述的一些实施方案的各方面将集中于处理认证和授权信息并生成处理结果,但相关领域的技术人员将了解,这些示例仅是说明性的,并且不一定旨在进行限制。如本领域的技术人员根据本公开将认识到的,本文所公开的实施方案提高了计算系统,特别是具有有限的本地化用户界面的计算系统由外部装置进行协调和管理的能力。
结合附图参考以下详细描述,可更好地理解本公开的前述方面以及许多所附的优点,因此将更易于了解所述方面以及优点。将参考图1至图6描述本申请的各种实施方案和方面。本申请中的任何内容都不应以要求实施方案或示例的任何特定组合的方式来解释。另外,相关领域的技术人员将认识到,本申请的一个或多个方面或实施方案可很容易相结合,并且可产生本申请的其他发明方面。
图1是说明性操作环境100的框图,所述说明性操作环境包括:一个或多个协调环境110,在所述一个或多个协调环境中,协调器114可操作来控制协调装置112;以及客户端装置102,所述客户端装置可与协调环境110进行交互(例如,以请求改变协调装置112的状态);以及服务提供商环境120,所述服务提供商环境可协助在各种协调环境110中与协调器114的通信或所述协调器的配置。
协调环境110、客户端装置和服务提供商环境120可经由网络104进行通信,所述网络可包括任何有线网络、无线网络或它们的组合。例如,网络104可以是个人区域网、局域网、广域网、空中广播网络(例如,用于无线电或电视)、电缆网络、卫星网络、蜂窝电话网络或其组合。作为另一个示例,网络104可以是可能由各种不同方操作的链接网络的可公开访问的网络,诸如互联网。在一些实施方案中,网络104可以是私有或半私有网络,诸如公司或大学内联网。网络104可包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络104可使用经由互联网或其他前述类型的网络中的任一种进行通信的协议和部件。例如,由网络104使用的协议可包括超文本传输协议(HTTP)、HTTP安全(HTTPS)、MQTT、约束应用协议(CoAP)等。经由互联网或其他前述类型的通信网络中的任一种进行通信的协议和部件是本领域的技术人员所公知的,并且因此未在本文进行更详细的描述。尽管在图1中示出了网络104的所有部件,但一个或多个部件诸如路由器可用作消息处理服务。
每个协调环境110都可包括经由执行环境110的网络(该网络在图1中未示出)进行通信的协调器114和任意数量的协调装置112。就通信网络而言,给定环境110内的协调装置112和协调器114由于它们在协调环境110内的关联而可被视为彼此“本地”。例如,给定环境110内的协调装置112和协调器114可经由LAN或其他本地化通信网络来连接。
每个协调装置112都可对应于被配置为与协调器114通信以管理协调装置112的功能的计算装置。在某些情况下,协调装置112可对应于具有稳健的本地化用户界面能力的全特征计算装置,诸如膝上型计算机、台式计算机、独立媒体播放器等。在其他情况下,协调装置112可对应于与另一主要功能相关联的精简装置或嵌入式装置,诸如嵌入在家用电器或装置内或作为附件附于家用电器或装置的装置(诸如冰箱、洗衣机、热水加热器、炉子、门锁、灯泡、电源插座、电气开关等)。在某些情况下,此类电器或装置被称为“智能”装置、IoT装置或“连接”装置。这样,协调装置112可包括有限的本地用户界面,并且可被配置用于远程管理。在某些情况下,协调装置112可以是状态性的,并且可响应于指令而操作来更改它们的状态(例如,通过从“关”变为“开”等)。
如下面更详细描述的(例如,关于图2),协调器114可对应于某个计算装置,所述计算装置执行用于协调、管理或控制协调装置112的操作的指令,而不要求将所述指令传输到在协调环境110外部行进的协调装置112(因此提高了此类指令的安全性并提高了它们的传输速度)。与协调装置类似,在某些情况下,协调器114可对应于具有稳健的本地化用户界面能力的计算装置,诸如膝上型计算机、台式计算机、服务器计算装置、平板计算机等。在其他情况下,协调装置112可对应于与另一主要功能相关联的精简装置或嵌入式装置,诸如嵌入在家用电器或装置内或作为附件附于家用电器或装置内的装置(诸如冰箱、洗衣机、热水加热器炉子、门锁、灯泡、电源插座、电气开关等)。如上所述,在至少一些实施方案中,协调器114可以是资源受约束的或可以资源受约束的方式操作。说明性地,当协调器是资源受约束的或以其他方式以资源受约束的方式操作时,协调器114可维护与用于任务分组的共同可执行代码相关联的主过程,以促进协调装置112对任务的执行。
具体地,协调器114可包括处理器和存储器,所述处理器和存储器被共同配置为管理协调装置112、客户端装置102和服务提供商网络120的装置的任何组合之间的通信。协调器还可被配置为以类似于服务提供商环境120的按需代码执行环境120的方式来启用任务的执行。这些任务可实现各种用户定义的或非用户定义的功能,包括与协调装置112、客户端装置102和服务提供商网络120的装置进行通信。在‘696申请中公开了协调器114可如何在按需执行环境中调度任务执行的说明性示例,所述申请已经以引用的方式并入本文。这样,协调器114可被配置为允许对协调装置112进行手动、自动或半自动控制。例如,协调器114可使得客户端装置102能够传输改变协调装置112的状态的请求,并且导致状态发生这样的变化。作为另一个示例,协调器114可使得用户能够指定准则,在所述准则下应改变协调装置112的状态,然后当满足所述准则时自动操作来改变协调装置112的状态。如下面将讨论的,可经由任务建立协调器114的许多功能,从而能够如用户所期望的那样快速更改这些功能。
客户端装置102可包括使得用户能够与协调环境110、服务提供商环境120或两者进行通信的各种计算装置。一般来讲,客户端装置102可以是任何计算装置,诸如台式计算机、膝上型计算机或平板计算机、个人计算机、可穿戴计算机、服务器、个人数字助理(PDA)、混合PDA/移动手机、移动手机、电子书阅读器、机顶盒、语音命令装置、相机、数字媒体播放器等。服务提供商环境120可向客户端装置102提供一个或多个用户界面、命令行界面(CLI)、应用程序编程接口(API)和/或用于与服务提供商环境120进行交互的其他编程界面,诸如用于:提交对于协调器114的配置并控制该配置的部署;提交与要在协调器114上执行的任务或服务提供商环境120的按需代码执行环境150相对应的代码;查看与协调器114有关的日志记录或监测信息;等等。类似地,协调器114可向客户端装置102提供一个或多个用户界面、命令行界面(CLI)、应用程序编程接口(API)和/或用于与协调器114进行交互的其他编程接口,诸如用于:读取协调装置112的状态、请求协调装置112的状态改变、请求协调器114导致任务的执行等。尽管一个或多个实施方案在本文可被描述为使用用户界面,但应理解,此类实施方案可另外或替代地使用任何CLI、API或其他编程界面。
服务提供商环境120可包括多个元件,用于启用对协调器114的配置、管理以及与协调器的通信。具体地,服务提供商环境120包括管理和部署服务130,用于实现协调器114向服务提供商环境120的注册以及对此类协调器114和提供任务的按需动态执行的按需代码执行环境140的配置以及协调器114上的任务的部署和提供。服务提供商环境120还可包括图1中未示出的附加部件或服务。
如图1所示,管理和部署服务130包括客户端和数据界面132以及配置数据存储装置134,它们可共同操作来启用协调器114向管理和部署服务130的注册、协调器114的配置的生成以及配置数据到协调器114的传输。说明性地,客户端和数据界面132可提供一个或多个用户界面(例如,API、CLI、GUI等),通过所述用户界面,用户可经由客户端装置102生成或提交对协调器114的配置以便存储在配置数据存储装置134中。客户端和数据界面132还可提供一个或多个界面,通过所述一个或多个界面,协调器114可获得所述配置,使得协调器114根据所获得的配置来进行重新配置。配置数据存储装置134可对应于任何持久性或基本上持久性的数据存储装置,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、网络连接存储装置(NAS)、磁带驱动器或它们的任何组合。
按需代码执行环境140可包括多个提供任务(例如,便携式代码段)的按需执行的装置。具体地,按需代码执行环境140可包括前端142,通过所述前端,用户可经由客户端装置102将任务提交给按需代码执行环境140并要求在按需代码执行环境140上执行任务。此类任务可存储在例如任务数据存储装置154中,所述任务数据存储装置可对应于任何持久性或基本上持久性的数据存储装置,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、网络附加存储装置(NAS)、磁带驱动器或它们的任何组合。虽然在图1中未示出,但按需代码执行系统140可包括多种附加部件以能够执行任务,诸如:多个执行环境(例如,在按需代码执行环境140的物理主机装置上执行的容器或虚拟机);工作人员管理器,用于管理此类执行环境;以及暖池管理器,用于协助向工作人员管理器快速地(例如,在10ms内)提供执行环境。关于按需代码执行环境的更多细节可在’556专利中找到,所述专利以引用的方式并入。
如上面所指出的,可在协调器114处的按需代码执行环境140处利用任务。如上面所指出的,任务对应于用户代码的个体集合(例如,以实现特定功能)。如本文所使用的对用户代码的引用可指代以特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可互换使用。例如,可结合用户开发的特定web应用程序或移动应用程序执行此类用户代码以实现特定功能。该代码的特定执行在本文被称为“任务执行”或简称为“执行”。通过非限制性示例的方式,可以JavaScript(例如,node.js)、Java、Python和/或Ruby(和/或另一种编程语言)编写任务。如在本申请中进一步指出的,基于组的任务对应于与用于任务分组的共同可执行代码相关联的可执行代码,并且可由协调器114代替个体任务来执行。这样的执行通过减少用于执行的个体任务的存储来减少协调器的内存约束。
可“触发”任务以便以各种方式在按需代码执行系统150或协调器114上执行任务。在一个实施方案中,客户端装置102或其他计算装置可传输执行任务的请求,所述请求一般可被称为对执行任务的“调用”。此类调用可包括要执行的用户代码(或其位置)以及一个或多个用于执行用户代码的参数。例如,调用可提供任务的用户代码以及执行任务的请求。在另一示例中,调用可通过其名称或标识符来识别先前上传的任务。在又一示例中,与任务相对应的代码可包括在任务的调用中,并且可在单独的位置上传(例如,协调器114的存储装置、网络可访问的存储服务或任务数据存储装置144),然后再由协调器114或按需代码执行系统140接收请求。协调器114或按需代码执行系统140的请求界面可接收调用以执行作为来自用户的超文本传输协议安全(HTTPS)请求的任务。同样,在执行任务时,也可处理和利用HTTPS请求中包含的任何信息(例如,标头和参数)。如上面所讨论的,可使用任何其他协议(包括例如HTTP、MQTT和CoAP)来将包含任务调用的消息传输到请求界面122。
执行任务的调用可指定一个或多个第三方库(包括本地库)与对应于所述任务的用户代码一起使用。在一个实施方案中,所述调用可向协调器114或按需代码执行系统140提供ZIP文件,所述ZIP文件包含用户代码以及与请求执行的任务相对应的任何库(和/或其存储位置的标识)。在一些实施方案中,调用包括指示将要执行的任务的程序代码、程序代码被编写的语言、与调用相关联的用户和/或保留用于执行程序代码的计算资源(例如,存储器等)的元数据。例如,任务的程序代码可被提供有由用户先前上传的、由协调器114或按需代码执行系统150(例如,标准例程)提供的、或者由第三方提供的调用。
在一些实施方案中,此类资源级约束(例如,要分配用于执行特定的用户代码的内存量)是针对特定任务指定的,并且在每次任务执行时都不会改变。在此类情况下,协调器114或按需代码执行系统140可在接收到每个个体调用之前访问此类资源级约束,并且所述个体调用可能不会指定此类资源级约束。在一些实施方案中,所述调用可指定其他约束诸如权限数据,所述权限数据指示所述调用启用来执行任务的权限或授权的种类。此类权限数据可由按需代码执行系统110使用来访问私有资源(例如,在私有网络上)。
在一些实施方案中,调用可指定处理所述调用应采用的行为。在此类实施方案中,所述调用可包括用于启用一个或多个执行模式的指示符,在所述执行模式中可执行所述调用中引用的任务。例如,所述调用可包括用于指示是否应在调试模式下执行任务的标志或标头,在所述调试模式下,可将与任务的执行相关地生成的调试和/或日志记录输出提供回给用户(例如,经由控制台用户界面)。在此类示例中,协调器114或按需代码执行系统150可检查调用并寻找标志或报头,并且如果存在的话,则协调器114或按需代码执行系统150可修改在其中执行所述任务的执行环境的行为(例如,日志记录功能),并导致输出数据被提供回给用户。在一些实施方案中,通过由协调器114或按需代码执行系统150提供给用户的用户界面将行为/模式指示符添加到调用中。基于在调用中所提供的指示,也可启用或禁用其他特征,诸如源代码分析、远程调试等。
服务提供商环境120在图1中被描绘为在分布式计算环境中操作,所述分布式计算环境包括使用一个或多个计算机网络(图1中未示出)来互连的若干个计算机系统。服务提供商环境120也可在具有比图1所示更少或更多数量的装置的计算环境内操作。因此,图1中的服务提供商环境120的描绘应被视为是说明性的且不限于本公开。例如,服务提供商环境120或其各种组成部分可实现各种Web服务部件、托管或“云”计算环境和/或点对点网络配置以实现本文所述的过程的至少一部分。
此外,服务提供商环境120可直接在硬件或由硬件装置执行的软件中实现,并且可例如包括在被配置为执行计算机可执行指令以用于执行本文将描述的各种特征的物理计算机硬件上实现的一个或多个物理或虚拟服务器。一个或多个服务器可以是地理分散或地理同位的,例如在一个或多个数据中心中。在某些情况下,一个或多个服务器可作为通常被称为“云计算环境”的快速供应和释放的计算资源的系统的一部分来操作。
图2描绘了在给定协调环境110内管理协调装置112的计算系统(一般称为协调器114)的一般架构。对协调器114的引用可包括由软件模块或任务或一个或多个装置执行的功能。图2中所描绘的协调器114的一般架构包括可用于实现本公开的各方面的计算机硬件和软件模块的布置。硬件模块可用物理电子装置来实现,如下文更详细讨论的。协调器114可包括比图2所示更多(或更少)的元件。然而,为了提供实现性公开内容,并不必要提供所有这些一般常规元件。另外,图2中所示的一般架构可用于实现图1中所示的其他部件中的一个或多个。
如图所示,协调器114包括处理单元204、网络接口206、计算机可读介质驱动器207和输入/输出装置接口208,所有这些都可通过通信总线彼此通信。网络接口206可向一个或多个网络或计算系统提供连接性。因此,处理单元204可经由网络104从其他计算系统或服务接收信息和指令。处理单元204还可向和从存储器250进行通信并且还可经由输入/输出装置接口208提供用于任选的显示器(未示出)的输出信息。输入/输出装置接口208还可接受来自任选的输入装置(未示出)的输入。
存储器250可包含计算机程序指令(其在一些实施方案中被分组为各模块),处理单元204执行所述计算机程序指令以便实现本公开的一个或多个方面。存储器250一般包括随机存取存储器(RAM)、只读存储器(ROM)和/或其他持久性、辅助性或非暂时性计算机可读介质。存储器250可存储操作系统252,所述操作系统提供计算机程序指令,以便由处理单元204用于协调器114的一般管理和操作中。存储器250还可包括计算机程序指令和其他信息以用于实现本公开的各方面。例如,在一个实施方案中,存储器250包括过程管理器254、调度程序256、部署代理258和通信管理器260。
调度程序256和部署代理258可由处理单元204执行,以选择任务以便由处理单元204执行并且管理此类任务执行。具体地,调度程序256可包括用于进行以下操作的指令:选择任务以便在给定时间点执行;以及中止任务的执行(例如,在协调器114处的资源受约束的情况下)。部署代理258可包括用于进行以下操作的指令:选择在其中执行任务的适当的执行环境270;为该执行环境270提供对在任务执行期间所需的资源的适当访问;以及导致任务在执行环境270内的执行。如应用于本申请,调度程序可代替从协调装置112所接收的个体任务执行请求,而在执行环境中执行基于组的任务。
如本文所使用的,执行环境270是指在其中执行任务的存储器250的逻辑部分。在一个实施方案中,执行环境270以编程方式分离,以便禁止第一执行环境270中的代码的执行修改与另一执行环境270相关联的内存。说明性地,执行环境270可对应于“容器”、操作系统级虚拟化环境或“沙盒”环境诸如“chroot jail”或Python虚拟环境“virtualenv”。在其他情况下,执行环境270可对应于虚拟机环境(例如,JAVA虚拟机、具有不同操作系统的虚拟化硬件装置等)。在又其他情况下,执行环境270可以是分配给任务执行的内存空间,而不必利用虚拟化。
通信管理器260可促进在协调器上执行的任务之间以及在协调器114与其他装置(例如,客户端装置102和协调装置112)之间的通信。具体地,通信管理器260可被配置为获得指向协调器114的消息,并将所述消息转发到适当的目的地。例如,通信管理器260可在任务、协调装置112、客户端装置102和服务提供商执行环境120的装置的任何组合之间路由消息。
由协调器114执行的任务被示出为在任务内存空间280内逻辑地分组,所述任务内存空间可对应于被配置为存储与每个任务相对应的代码的存储器250的逻辑单元。如图2所示,任务内存空间280可包括可由处理单元204执行以实现协调器114的功能的多个任务,包括路由器任务282、一个或多个通信管理器任务286、影子服务任务288以及一个或多个客户端提供的任务290。
路由器任务282可对应于可执行以协助消息在协调器内、到协调器以及从协调器路由的代码的一部分。在一个实施方案中,路由器任务282实现“路由表”以确定消息的适当目的地。例如,通信管理器260可将在协调器114处获得的消息(例如,由于任务执行或在输入/输出接口208处的接收而生成的消息)转发到路由器任务282,所述路由器任务可利用路由表来确定寻址到特定标识符的消息应被路由到给定任务、给定客户端装置102或给定协调装置102。路由表还可指示寻址到标识符的消息应被传输到服务提供商环境120(例如,传输到装置影子服务140或按需代码执行系统150)。在一个实施方案中,路由表可利用“主题”作为标识符,使得与特定主题相关联的消息根据针对该主题指定的路由来路由。路由表还可包括关于如何基于那些消息的来源来路由消息的信息。例如,可基于是否从第一任务、第二任务、第一协调装置112等接收到消息来以不同的方式路由寻址到给定主题的消息。通过利用路由表,路由器任务282可使得消息能够被重定向,而无需改变此类消息的发送者的操作(例如,无需为生成了消息的任务重写代码、无需修改生成了消息的协调装置112的软件等)。
通信管理器任务286可根据此类通信的协议来启用协调器114与多个不同的外部装置(例如,协调装置102)之间的通信。例如,第一通信管理器任务286可被配置为使用BLUETOOTHTM协议来管理通信,第二通信管理器可被配置为使用HTTP协议来管理通信,等等。在某些情况下,多个通信管理器任务286可共同作用来实现通信。例如,第一通信管理器任务286可启用经由TCP协议的通信,而第二通信管理器任务286可启用经由MQTT协议的通信(其利用TCP协议并且因此可利用第一通信管理器任务286)。由于不同的通信管理器任务286可改变协调器114经由不同协议进行通信的能力,并且由于可经由协调器114的重新配置来更改协调器114的任务,因此协调器114可被快速重新配置为利用多种不同的通信协议。
工作管理器任务288可促进对协调器114对共享的按需代码的执行的管理和交互。说明性地,工作管理器任务288可将传入任务与基于组的共享按需代码相关联(其一般称为基于组的按需代码)以维护工作队列,从而保持关于与基于组的按需代码的执行相关联的任务的状态信息。
除了上述任务(每个任务都可说明性地由与服务提供商环境120相关联的实体提供)之外,任务内存空间280可包括任意数量的基于组的按需代码或基于组的任务290,所述基于组的按需代码或基于组的任务可对应于用于部署到协调器114的可执行代码。这样,由客户端提供的任务290所提供的功能可根据提交用户的期望而变化。在某些情况下,客户端提供的任务290可以存储器250包括语言运行时的编码语言来编写。例如,在协调器114支持诸如node.js、Go、JAVA和Python的语言的情况下,客户端提供的任务290可包括以那些语言中的任一种编写的可执行代码。如上所述,基于组的按需代码与组织标准(诸如功能、创建者、访问的资源、结果等)相关联。在一些实施方案中,任务内存空间280可包括个体任务,所述个体任务不作为基于组的按需代码包括在内或已经作为基于组的按需代码而被明确排除。
另外,存储器250包括配置数据部分272,所述配置数据部分表示其中存储有协调器114的配置数据的存储器250的逻辑部分。所述配置数据可包括例如协调器114的当前部署版本、由任务内存空间280的任务存储的数据或在协调器114的操作中使用的其他数据。
为了启用协调器114的配置(和重新配置),存储器250还包括部署代理258。部署代理258可对应于可执行以进行以下操作的代码:向服务提供商环境120注册协调器;确定协调器114的期望配置;以及在其中协调器114的当前配置与期望配置不匹配的情况下,获得针对协调器114的配置数据并且修改存储器250以实现期望的配置。
图3A描绘了根据本申请的说明性协调装置112A的架构的一个实施方案。图3A中所描绘的协调装置112A的一般架构包括可用于实现本公开的各方面的计算机硬件和软件部件的布置。如图所示,协调装置112A包括处理单元304、网络接口306、计算机可读介质驱动器307、输入/输出装置接口320、任选的显示器302和输入装置324,所有这些都可通过通信总线彼此通信。说明性地,协调装置112A可具有更有限的功能和部件,诸如输入或输出、嵌入式装置。
网络接口306可向一个或多个网络或计算系统(诸如图1的网络104)提供连接性。因此,处理单元304可经由网络从其他计算系统或服务接收信息和指令。处理单元304还可向和从存储器310进行通信并且还可经由输入/输出装置接口320提供用于任选的显示器302的输出信息。输入/输出装置接口320还可接受来自任选的输入装置324诸如键盘、鼠标、数字笔、触摸屏等的输入。在一些实施方案中,协调装置112A可包括比图3A中所示的那些更多(或更少)的部件。例如,协调装置112的一些实施方案可省略显示器302和输入装置324,同时提供通过一个或多个替代通信信道(例如,经由网络接口306)的输入/输出能力。另外,协调装置112A也可完全省略输入和输出接口320。
存储器310可包括计算机程序指令,处理单元204执行所述计算机程序指令以便实现一个或多个实施方案。存储器310一般包括RAM、ROM或其他持久性或非暂时性存储器。存储器310可存储操作系统314,所述操作系统提供计算机程序指令,以便由处理单元304用于协调装置112A的一般管理和操作中。存储器310还可包括计算机程序指令和其他信息以用于实现本公开的各方面。例如,在一个实施方案中,存储器310包括用于访问内容的浏览器应用程序316。说明性地,浏览器应用程序316可包含完整的软件浏览器应用程序、浏览器应用程序的部分,或者仅仅可以是提供数据连接性的软件应用程序(或可执行指令)。
图3B描绘了根据本申请的说明性协调装置112B的替代架构的一个实施方案。图3B中所描绘的协调装置112B的一般架构包括可用于实现本公开的各方面的计算机硬件和软件部件的布置。然而,协调装置112B可与数量减少的部件相关联,这可能会限制协调装置112B的计算功能和操作。如图所示,协调装置112B包括与通信总线通信的处理单元350和网络接口352。与图3A的协调装置112A不同,协调装置112B可不具有计算机可读介质驱动器、输入/输出装置接口、任选的显示器或输入装置。
网络接口352可向一个或多个网络或计算系统(诸如图1的网络104)提供连接性。因此,处理单元350可经由网络从其他计算系统或服务接收信息和指令。存储器354可包括计算机程序指令,处理单元350执行所述计算机程序指令以便实现一个或多个实施方案。存储器354一般包括RAM、ROM或其他持久性或非暂时性存储器。在该实施方案中,存储器354可能必要地存储完整的操作系统,所述完整操作系统提供计算机程序指令以便由处理单元350用于协调装置112B的一般管理和操作中。而是,在一个实施方案中,存储器354包括用于访问接收和处理指令的接口软件部件356。
图4描绘了根据本申请的说明性客户端装置102的架构的一个实施方案。图4中所描绘的客户端装置102的一般架构包括可用于实现本公开的各方面的计算机硬件和软件部件的布置。如图所示,客户端装置102包括处理单元404、网络接口406、计算机可读介质驱动器407、输入/输出装置接口420、任选的显示器402和输入装置424,所有这些都可通过通信总线彼此通信。
网络接口406可向一个或多个网络或计算系统(诸如图1的网络104)提供连接性。因此,处理单元404可经由网络从其他计算系统或服务接收信息和指令。处理单元404还可向存储器410以及从所述存储器进行通信,并且还可经由输入/输出装置接口420提供用于任选的显示器402的输出信息。输入/输出装置接口420还可接受来自任选的输入装置424(诸如键盘、鼠标、数字笔等)的输入。在一些实施方案中,客户端装置102可包括比图4所示的更多(或更少)的部件。例如,协调装置112的一些实施方案可省略显示器402和输入装置424,同时提供通过一个或多个替代通信信道(例如,经由网络接口406)的输入/输出能力。另外,客户端装置102也可完全省略输入和输出接口420。
存储器410可包括计算机程序指令,处理单元204执行所述计算机程序指令以便实现一个或多个实施方案。存储器410一般包括RAM、ROM或其他持久性或非暂时性存储器。存储器410可存储操作系统414,所述操作系统提供计算机程序指令,以便由处理单元404用于客户端装置102的一般管理和操作中。存储器410还可包括计算机程序指令和其他信息以用于实现本公开的各方面。例如,在一个实施方案中,存储器410包括用于访问内容的浏览器应用程序416。说明性地,浏览器应用程序416可包含完整的软件浏览器应用程序、浏览器应用程序的部分,或者仅仅可以是提供数据连接性的软件应用程序(或可执行指令)。为了本申请的目的,客户端102可促进对基于组的按需代码或对基于组的按需代码的选择标准的配置。
现在转到图5A至图5B,将描述内容管理系统110的部件之间的说明性交互,以利用基于组的按需代码或基于组的按需任务来处理任务执行请求。更具体地,图5A至图5B将关于协调装置112、协调器114、客户端装置102和服务提供商环境120之间的交互来描述。如先前所指示的,在一个实施方案中,协调器114可被配置为执行与接收和维护授权和认证信息以及处理来自协调装置112的认证和授权请求以生成处理结果有关的任务。然而,即使出于说明性目的而使用,对交互的引用也不应限于任何特定的装置或装置组合。另外,在一些实施方案中,可省略客户端装置102或服务提供商环境120中的一个或多个。
参考图5A,将描述协调器114的初始配置。说明性地,服务提供商环境120或客户端装置可促进对基于组的按需代码的配置和协调。说明性地,协调器114的工作部件配置基于组的按需代码集。在(1)处,协调器114接收对一个或多个基于组的按需代码的配置。在一方面,所述配置可包括对被认为是基于组的按需代码的特定任务(诸如系统级任务)的识别。在另一方面,所述任务的配置是匹配标准,以用于允许协调装置确定哪些任务请求对应于基于组的按需代码。在其他方面,所述配置可包括其他搜索标准或处理指令,用于允许协调装置评估可以是基于组的按需代码的任务,或者动态地处理任务以确定任务是否对应于基于组的任务。
在(2)处,协调器114处理配置信息。在一方面,协调器114可解析并存储各种配置信息和标准。在另一方面,协调器114可请求并接收形成基于组的按需代码的任务或按需代码。在(3)处,协调器114发起对基于组的按需代码的执行。如上所述,对基于组的按需代码的执行包括对管理器部件的发起以用于注册基于组的按需代码的新的实现以及用于保持有关基于组的按需代码的每次迭代的状态信息。更具体地,管理器部件可维护工作节点或工作者管理器的实例,所述实例包括针对基于组的任务的执行的每次迭代,对基于组的任务的执行所要求的状态信息或所生成的状态信息。工作节点或工作者管理器允许协调器114的管理器部件基于来自一个或多个协调装置112的请求来管理基于组的任务的多次执行。另外,在一些实施方案中,管理器部件还可管理基于组的按需代码的多次执行,并且在基于组的按需代码的一次执行可影响其他执行的情况下进行修改。例如,如果基于组的按需代码的实例的执行未进行或未产生错误,则管理器部件可终止所述任务,从而不影响基于组的按需代码的其他执行。配置完成后,协调装置准备开始执行。
参考图5B,将描述任务的处理。在(1)处,一个或多个协调装置112传输在协调器114处执行的请求。说明性地,协调装置112利用通信协议将所述请求传输到协调器114。例如,协调装置可利用MQTT协议来识别请求并提供可用于评估请求的信息,诸如所提供的登录名、密码、生物特征信息等。协调装置112和协调器114之间的交互可能需要大量的通信。根据请求的类型,请求中包括的信息可包括标识符、先前发出的令牌、安全性信息等。
在(2)处,协调器114确定任务执行请求是否对应于基于组的任务。如果是这样,则协调器可将所述请求与基于组的按需代码相关联。在一个实施方案中,协调器114可寻找包括在请求或任务标识符中的各种标识符。在另一实施方案中,协调器114可诸如通过应用标准来处理请求,以确定所述请求是否对应于基于组的按需代码。
在(3)处,如果协调器确定所述请求对应于基于组的按需代码,则协调器114开始对基于组的按需代码的执行的迭代。如上所述,工作管理器可生成工作队列,所述工作队列跟踪基于组的按需代码的多次执行的状况或状态。任务执行的每个实例都可表示为单独的工作者任务或部件,所述单独的工作者任务或部件管理请求中所提供的输入、保持状态并生成输出。另外,在一些实施方案中,基于组的按需代码的处理程序用作主处理程序,其可与用于每个相应请求任务的本地处理程序进行交互、处理对基于组的按需代码的执行并将处理结果提供给个体处理程序。如上所述,通过利用基于组的按需代码,协调器114可在其中协调器114的内存资源受到约束或以约束方式操作的情况下改善对由协调装置112提交的任务的处理。替代地,协调器114还可通过对基于组的按需代码的多次执行并跟踪状态来增加可被处理以便执行的任务的数量。
在(4)处,协调器114生成处理结果,并将所述处理结果传输到请求客户端装置102。
现在转到图6,将描述用于处理任务以便执行的例程600。将关于协调器114说明性地描述例程600。如先前所指示的,在一个实施方案中,协调器114可被配置为执行与一个或多个基于组的按需代码有关的任务。然而,即使出于说明性目的而使用,对交互的引用也不应限于任何特定的装置或装置组合。
在框602处,协调器114接收一个或多个基于组的按需代码的配置。在一方面,所述配置可包括对被认为是基于组的按需代码的特定任务(诸如系统级任务)的识别。所述对基于组的按需代码的识别可包括对将执行的基于组的任务的接收。在另一实施方案中,所述配置可包括可用于识别基于组的任务的位置或来源的信息,诸如预存储的任务信息的库、一个或多个协调装置或服务提供商网络120。在另一方面,所述任务的配置是匹配标准,以用于允许协调装置确定哪些任务请求对应于基于组的按需代码。所述匹配标准可包括将在任务执行请求的传输中使用的标识符、任务的内容的标识符(例如,校验和或散列)、基于组的任务的创建者或分发者等。在其他方面,所述配置可包括其他搜索标准或处理指令,用于允许协调装置评估可以是基于组的按需代码的任务,或者动态地处理任务以确定任务是否对应于基于组的任务。
在框604处,协调装置处理配置信息以配置和实例化一个或多个基于组的任务。在一方面,协调器装置114可解析并存储各种配置信息和标准。在另一方面,协调器装置114可请求并接收形成基于组的按需代码的任务或按需代码。另外,协调器114发起基于组的按需代码的执行。如上所述,对基于组的按需代码的执行包括对管理器部件的发起以用于注册基于组的按需代码的新的实现以及用于保持有关基于组的按需代码的每次迭代的状态信息。更具体地,管理器部件可维护工作节点或工作者管理器的实例,所述实例包括针对基于组的任务的执行的每次迭代,对基于组的任务的执行所要求的状态信息或所生成的状态信息。工作节点或工作者管理器允许协调器114的管理器部件基于来自一个或多个协调装置112的请求来管理基于组的任务的多次执行。如下所述,在一些实施方案中,管理器部件还可管理基于组的按需代码的这种多次执行,并且在基于组的按需代码的一次执行可影响其他执行的情况下进行修改。例如,如果基于组的按需代码的实例的执行未进行或未产生错误,则管理器部件可终止所述任务,从而不影响基于组的按需代码的其他执行。在另一示例中,管理器部件可导致任务的修改,诸如改变输入的参数、处理输出或替换另一个基于组的任务。配置完成后,协调装置准备开始执行基于组的任务。
在框606处,协调器114接收在协调器114处执行的请求。说明性地,协调装置112利用通信协议将所述请求传输到协调器114。例如,协调装置可利用MQTT协议来识别请求并提供可用于评估请求的信息,诸如所提供的登录名、密码、生物特征信息等。协调装置112和协调器114之间的交互可能需要大量的通信。根据请求的类型,请求中包括的信息可包括标识符、先前发出的令牌、安全性信息等。
在判定框608处,协调器114确定任务执行请求是否对应于基于组的任务。在一个实施方案中,协调器114可寻找包括在请求或任务标识符中的各种标识符。在另一实施方案中,协调器114可诸如通过应用标准来处理请求,以确定所述请求是否对应于基于组的按需代码。在框610处,如果协调器确定所述请求对应于基于组的按需代码,则协调器114开始对基于组的按需代码的执行的迭代。如上所述,工作管理器可生成工作队列,所述工作队列跟踪基于组的按需代码的多次执行的状况或状态。任务执行的每个实例都可表示为单独的工作者任务或部件,所述单独的工作者任务或部件管理请求中所提供的输入、保持状态并生成输出。另外,在一些实施方案中,基于组的按需代码的处理程序用作主处理程序,其可与用于每个相应请求任务的本地处理程序进行交互、处理对基于组的按需代码的执行并将处理结果提供给个体处理程序。然而,通过对基于组的按需代码的多次执行,与协调器114分别执行所有任务的情况相比,由协调器执行的多个任务的执行的内存资源较少。在框612处,协调器114生成处理结果,并将所述处理结果传输到请求客户端装置102。
替代地,在判定框608处,如果协调器确定所述请求不对应于基于组的按需代码,则在框614处,协调器114开始对个体任务的执行的迭代。在框616处,协调器114生成处理结果,并将所述处理结果传输到请求客户端装置102。
在框618处,协调器114传输处理结果,并且例程600在框620处终止。
上文所描述的所有方法和过程可在由一个或多个计算机或处理器执行的软件代码模块中具体化并且经由所述软件代码模块来完全自动化。所述代码模块可存储在任何类型的非暂时性计算机可读介质或其他计算机存储装置中。所述方法中的一些或所有可以替代地在专用计算机硬件中具体化。
除非另外特别说明,否则诸如尤其“能够”、“可以”、“可能”或“也许”等条件语言在上下文中通常应理解为用于表示:某些实施方案包括某些特征、元件和/或步骤,但是其他实施方案不包括所述某些特征、元件和/或步骤。因此,此类条件语言通常并非意图暗示无论如何所述特征、元件和/或步骤都是一个或多个实施方案必需的,或者并非暗示一个或多个实施方案必须包括用于在借助和不借助用户输入或提示下决定是否包括这些特征、元件和/或步骤或者是否在任何特定实施方案中实施这些特征、元件和/或步骤的逻辑。
除非另有特别说明,否则分离性语言诸如短语“X、Y或Z中的至少一个”在上下文中应理解为通常使用的情况以表示项目、项等可以是X、Y或Z或者其任何组合(例如,X、Y和/或Z)。因此,这样的分离性语言通常不旨在且不应暗示某些实施方案要求X中的至少一个、Y中的至少一个或Z中的至少一个至每一个都存在。
除非另有明确说明,否则诸如“一”或“一个”的冠词一般被解释为包括一个或多个所描述的项目。因此,诸如“装置,所述装置被配置为”的短语旨在包括一个或多个所列举的装置。这样的一个或多个所列举的装置也可被共同地配置为执行所陈述的表述。例如,“被配置为执行表述A、B和C的处理器”可包括被配置为执行表述A的第一处理器与被配置为执行表述B和C的第二处理器共同工作。
在本文中所述和/或附图中示出的任何例程说明、元素或框应理解成潜在地代表包括用于实施方案程中的特定逻辑功能或元素的一个或多个可执行指令的模块、片段或代码部分。替代实施方案包括在本文中所述实施方案的范围内,其中如本领域中的技术人员所理解的那样,根据所涉及的功能,元素或功能可删除、或不按照所示出或讨论的顺序执行,包括基本上同步地执行或逆序执行。
应强调的是,可对上述实施方案进行许多变化和修改,其中的元素应被理解为属于其他可接受的示例。在本文中,所有这样的修改和变化意在包括在本公开的范围内,并且受随附权利要求书保护。
可鉴于以下条款对本公开的实施方案的示例进行描述。
条款1.一种用于管理对计算装置的访问的系统,所述系统包括:至少一个计算装置,所述至少一个计算装置具有处理器和存储器,所述计算装置对应于协调装置,其中所述协调装置将执行按需代码的请求传输到协调器服务;以及协调器服务,所述协调器服务在具有处理器和存储器的至少一个计算装置上实现,其中所述服务被配置为:接收针对基于组的按需代码集的配置信息;根据所述配置信息导致对所述基于组的按需代码中的至少一个的实例化;从所述协调装置接收所述执行所述按需代码的请求;将所述执行所述按需代码的请求与所述基于组的按需代码中的所述至少一个相关联;导致对所述实例化的基于组的按需代码的所述执行;以及生成与所述实例化的基于组的按需代码相对应的处理结果。
条款2.如条款1所述的系统,其中所述协调器服务基于组织标准,将所述请求与所述基于组的按需代码相关联。
条款3.如条款1或2中任一项所述的系统,其中所述协调器服务还被配置为针对对所述实例化的基于组的按需代码的所述执行维护关于状态信息的工作队列。
条款4.如条款1至3中任一项所述的系统,其中所述基于组的按需代码对应于系统级任务。
条款5.一种用于管理在协调环境中对按需代码的所述执行的方法,所述方法包括:从一个或多个协调装置接收执行按需代码的请求;将执行所述按需代码的个体请求与基于组的按需代码相关联;导致对所述实例化的基于组的按需代码的所述执行;以及生成与所述实例化的基于组的按需代码相对应的处理结果。
条款6.如条款5所述的方法,其还包括接收针对所述基于组的按需代码的配置信息。
条款7.如条款6所述的方法,其还包括根据所述配置信息,导致对所述基于组的按需代码中的至少一个的所述实例化。
条款8.如条款5至7中任一项所述的方法,其中将执行所述按需代码的所述个体请求与基于组的按需代码相关联包括基于组织标准,将所述请求关联到所述基于组的按需代码。
条款9.如条款5至8中任一项所述的方法,其还包括管理对所述基于组的按需代码的所述执行。
条款10.如条款9所述的方法,其中管理对所述基于组的按需代码的所述执行包括针对对所述实例化的基于组的按需代码的所述执行维护关于状态信息的工作队列。
条款11.如权利要求9或10中任一项所述的方法,其中管理对基于所述组的按需代码的所述执行包括导致对所述基于组的按需代码的至少一个执行的修改。
条款12.如条款5至11中任一项所述的方法,其还包括:从一个或多个协调装置接收执行按需代码的第二请求;导致对不与基于组的按需代码相关联的按需代码的所述执行;以及生成与对不与基于组的按需代码相关联的按需代码的所述执行相对应的处理结果。
条款13.一种用于在协调环境中管理任务执行的方法,所述方法包括:将执行按需代码的个体请求与基于组的按需代码相关联;导致对所述实例化的基于组的按需代码的所述执行;以及生成与所述实例化的基于组的按需代码相对应的处理结果。
条款14.如条款13所述的方法,其还包括接收针对基于组的按需代码集的配置信息。
条款15.如权利要求14所述的方法,其还包括根据所述配置信息,导致对所述基于组的按需代码中的至少一个的所述实例化。
条款16.如条款13至15中任一项所述的方法,其中将执行所述按需代码的所述个体请求与基于组的按需代码相关联包括基于组织标准,将所述请求关联到所述基于组的按需代码。
条款17.如条款13至16中任一项所述的方法,其还包括通过针对对所述实例化的基于组的按需代码的所述执行维护关于状态信息的工作队列来管理对所述基于组的按需代码的所述执行,所述请求的授权和认证信息包括处理信息。
条款18.如条款13至17中任一项所述的方法,其还包括通过导致对所述基于组的按需代码的至少一个执行的终止来管理对所述基于组的按需代码的所述执行。
条款19.如条款13至18中任一项所述的方法,其还包括:从一个或多个协调装置接收执行按需代码的第二请求;导致对不与基于组的按需代码相关联的按需代码的所述执行;以及生成与对不与基于组的按需代码相关联的按需代码的所述执行相对应的处理结果。
条款20.如条款13至19中任一项所述的方法,其中所述基于组的按需代码对应于系统级任务。
Claims (15)
1.一种用于管理对计算装置的访问的系统,所述系统包括:
计算装置,所述计算装置具有处理器和存储器,所述计算装置对应于协调装置,其中所述协调装置将执行按需代码的请求传输到协调器服务;以及,
协调器服务,所述协调器服务在具有处理器和存储器的至少一个计算装置上实现,其中所述服务被配置为:
接收针对基于组的按需代码集的配置信息;
根据所述配置信息导致对所述基于组的按需代码集中的至少一个的实例化;
从所述协调装置接收执行按需代码的请求;
将所述执行按需代码的请求与所述至少一个基于组的按需代码相关联;
导致对所述实例化的至少一个基于组的按需代码的执行;以及
生成与所述实例化的至少一个基于组的按需代码相对应的处理结果。
2.如权利要求1所述的系统,其中所述协调器服务基于组织标准,将所述请求与所述至少一个基于组的按需代码相关联。
3.如权利要求1所述的系统,其中所述协调器服务还被配置为针对对所述实例化的至少一个基于组的按需代码的所述执行维护关于状态信息的工作队列。
4.如权利要求1所述的系统,其中所述至少一个基于组的按需代码对应于系统级任务。
5.一种用于在协调环境中管理对按需代码的执行的方法,所述方法包括:
由在具有处理器和存储器的至少一个计算装置上实现的协调器服务获得用于识别与基于组的按需代码相对应的请求的组织标准;
在所述协调器服务处,从一个或多个协调装置接收执行按需代码的个体请求,其中所述一个或多个协调装置中的个体协调装置将所述执行按需代码的个体请求传输到所述协调器服务;
由所述协调器服务将所述执行按需代码的个体请求与所述基于组的按需代码相关联;
由所述协调器服务导致对所述基于组的按需代码的执行;以及
在所述协调器服务处,生成与对所述基于组的按需代码的执行相对应的处理结果,其中响应于所述个体请求而将所述处理结果提供给所述个体协调装置。
6.如权利要求5所述的方法,其还包括接收针对所述基于组的按需代码的配置信息。
7.如权利要求6所述的方法,其还包括根据所述配置信息导致对所述基于组的按需代码的实例化。
8.如权利要求5所述的方法,其还包括识别对所述基于组的按需代码的现有实例化。
9.如权利要求5所述的方法,其还包括通过针对对所述实例化的基于组的按需代码的所述执行维护关于状态信息的工作队列来管理对所述基于组的按需代码的所述执行。
10.如权利要求5所述的方法,其还包括通过导致对所述基于组的按需代码的至少一个执行的修改来管理对所述基于组的按需代码的所述执行。
11.如权利要求5所述的方法,其还包括:
在所述协调器装置处,从所述一个或多个协调装置中的一个中接收执行按需代码的另一个请求;
确定所述另一个请求不对应于所述基于组的按需代码;
导致对不与所述基于组的按需代码相关联的按需代码的执行;以及
生成与对不与所述基于组的按需代码相关联的所述按需代码的所述执行相对应的处理结果。
12.如权利要求5所述的方法,其中所述执行按需代码的个体请求包括授权和认证信息。
13.如权利要求12所述的方法,其中将所述执行按需代码的个体请求与所述基于组的按需代码相关联至少部分地基于所述授权和认证信息。
14.如权利要求5所述的方法,其还包括通过导致对所述基于组的按需代码的至少一个执行的终止来管理对所述基于组的按需代码的所述执行。
15.如权利要求5所述的方法,其中所述基于组的按需代码对应于系统级任务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/944,454 US10884788B2 (en) | 2018-04-03 | 2018-04-03 | On-demand code execution with limited memory footprint |
US15/944,454 | 2018-04-03 | ||
PCT/US2019/025201 WO2019195177A1 (en) | 2018-04-03 | 2019-04-01 | On-demand code execution with limited memory footprint |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112424749A true CN112424749A (zh) | 2021-02-26 |
Family
ID=66429539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980024760.7A Pending CN112424749A (zh) | 2018-04-03 | 2019-04-01 | 内存占用有限情况下的按需代码执行 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10884788B2 (zh) |
EP (1) | EP3776204A1 (zh) |
JP (1) | JP7275161B2 (zh) |
CN (1) | CN112424749A (zh) |
WO (1) | WO2019195177A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884788B2 (en) | 2018-04-03 | 2021-01-05 | Amazon Technologies, Inc. | On-demand code execution with limited memory footprint |
US11790082B2 (en) * | 2021-05-25 | 2023-10-17 | International Business Machines Corporation | Reasoning based workflow management |
US11860723B2 (en) * | 2021-12-28 | 2024-01-02 | Capital One Services, Llc | Systems and methods for parallelizing sequential processing requests using predicted correction data |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160092251A1 (en) * | 2014-09-30 | 2016-03-31 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
US20170177413A1 (en) * | 2015-12-21 | 2017-06-22 | Amazon Technologies, Inc. | Code execution request routing |
CN107209682A (zh) * | 2014-12-05 | 2017-09-26 | 亚马逊技术有限公司 | 资源调整的自动管理 |
US20170371706A1 (en) * | 2016-06-28 | 2017-12-28 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
CN107533470A (zh) * | 2015-02-04 | 2018-01-02 | 亚马逊技术有限公司 | 用于低延时执行程序代码的安全协议 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8191065B2 (en) * | 2009-04-06 | 2012-05-29 | Red Hat Israel, Ltd. | Managing virtual machine images |
US8694986B2 (en) * | 2011-12-15 | 2014-04-08 | Microsoft Corporation | Providing update notifications on distributed application objects |
US9304793B2 (en) * | 2013-01-16 | 2016-04-05 | Vce Company, Llc | Master automation service |
US20170090999A1 (en) * | 2015-09-25 | 2017-03-30 | Netapp, Inc. | Storage System Multiprocessing and Mutual Exclusion in a Non-Preemptive Tasking Environment |
US10452439B2 (en) * | 2016-11-28 | 2019-10-22 | Amazon Technologies, Inc. | On-demand code execution in a localized device coordinator |
US10884807B2 (en) * | 2017-04-12 | 2021-01-05 | Cisco Technology, Inc. | Serverless computing and task scheduling |
US10884788B2 (en) | 2018-04-03 | 2021-01-05 | Amazon Technologies, Inc. | On-demand code execution with limited memory footprint |
US20200228630A1 (en) * | 2020-03-27 | 2020-07-16 | Intel Corporation | Persistence service for edge architectures |
-
2018
- 2018-04-03 US US15/944,454 patent/US10884788B2/en active Active
-
2019
- 2019-04-01 CN CN201980024760.7A patent/CN112424749A/zh active Pending
- 2019-04-01 WO PCT/US2019/025201 patent/WO2019195177A1/en unknown
- 2019-04-01 EP EP19722314.2A patent/EP3776204A1/en not_active Withdrawn
- 2019-04-01 JP JP2020554070A patent/JP7275161B2/ja active Active
-
2021
- 2021-01-04 US US17/140,978 patent/US11868164B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160092251A1 (en) * | 2014-09-30 | 2016-03-31 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
CN107209682A (zh) * | 2014-12-05 | 2017-09-26 | 亚马逊技术有限公司 | 资源调整的自动管理 |
CN107533470A (zh) * | 2015-02-04 | 2018-01-02 | 亚马逊技术有限公司 | 用于低延时执行程序代码的安全协议 |
US20170177413A1 (en) * | 2015-12-21 | 2017-06-22 | Amazon Technologies, Inc. | Code execution request routing |
US20170371706A1 (en) * | 2016-06-28 | 2017-12-28 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
Also Published As
Publication number | Publication date |
---|---|
WO2019195177A1 (en) | 2019-10-10 |
US11868164B2 (en) | 2024-01-09 |
JP7275161B2 (ja) | 2023-05-17 |
US20210334126A1 (en) | 2021-10-28 |
US10884788B2 (en) | 2021-01-05 |
EP3776204A1 (en) | 2021-02-17 |
US20190303195A1 (en) | 2019-10-03 |
JP2021518014A (ja) | 2021-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3545662B1 (en) | Managing messaging protocol communications | |
US10637817B2 (en) | Managing messaging protocol communications | |
US10193839B2 (en) | Managing security in messaging protocol communications | |
US10608973B2 (en) | Embedded codes in messaging protocol communications | |
US11263034B2 (en) | Low latency computational capacity provisioning | |
US11461124B2 (en) | Security protocols for low latency execution of program code | |
US9952896B2 (en) | Asynchronous task management in an on-demand network code execution environment | |
US10282229B2 (en) | Asynchronous task management in an on-demand network code execution environment | |
US10277708B2 (en) | On-demand network code execution with cross-account aliases | |
CA2975522C (en) | Security protocols for low latency execution of program code | |
JP2020074153A (ja) | コード実行要請ルーティング | |
US20180004553A1 (en) | On-demand network code execution with cross-account aliases | |
US10318347B1 (en) | Virtualized tasks in an on-demand network code execution system | |
US11868164B2 (en) | On-demand code execution with limited memory footprint | |
CN110352401B (zh) | 具有按需代码执行能力的本地装置协调器 | |
US10979439B1 (en) | Identity management for coordinated devices in a networked environment | |
US10872142B1 (en) | Localized identity management in limited communication networks | |
US11151022B1 (en) | Testing of executable code for local device coordinator |
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 |