本地装置协调器中的按需代码执行的制作方法

文档序号:19159043发布日期:2019-11-16 01:08阅读:216来源:国知局
本地装置协调器中的按需代码执行的制作方法

相关申请的交叉引用

本申请涉及:2016年11月28日提交的且标题为“managingsecurityinmessagingprotocolcommunications”的美国专利申请no.15/362,751;2016年11月28日提交的且标题为“embeddedcodesinmessagingprotocolcommunications”的美国专利申请no.15/362,757;和2016年11月28日提交的且标题为“managingmessagingprotocolcommunications”的美国专利申请no.15/362,765(以下统称为“相关申请”)。每个相关申请的全部内容通过引用并入本文。



背景技术:

一般来说,计算装置利用一个通信网络或一系列通信网络交换数据。公司和组织操作互连许多计算装置以支持操作或向第三方提供服务的计算机网络。计算系统可以位于单个地理位置或位于多个不同的地理位置(例如,经由私有或公共通信网络互连)。具体而言,本文统称为“数据中心”的数据中心或数据处理中心可以包括许多互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私有数据中心,或者可以是代表公众或出于公众利益运营的公共数据中心。

为了促进数据中心资源的加大利用,虚拟化技术允许单个物理计算装置托管虚拟机的一个或多个实例,所述虚拟机作为独立计算装置向数据中心的用户展现并操作。利用虚拟化,单个物理计算装置可以以动态方式创建、维护、删除或以其他方式管理虚拟机。继而,用户可以从数据中心请求计算机资源,包括单个计算装置或联网计算装置的配置,并且可以被提供不同数量的虚拟机资源。

在一些环境中,经由通信网络进行通信的计算装置可以对应于具有作为计算装置的主要功能的装置,诸如台式个人计算机。在其他环境中,经由通信网络通信的计算装置的至少某一部分可以对应于具有至少一个另选主要功能的嵌入装置或薄型装置,诸如具有单独主要目的同时还提供至少有限计算功能的家用电器(例如,恒温器或冰箱)。在一些情况下,这些嵌入装置或薄型装置的本地用户接口是有限的,并且因此可能需要远程管理来实现这些装置的一些功能。然而,在某些情况下,由于与远程管理装置的通信的延时以及在远程管理装置处或在与远程管理装置的通信期间私有信息可能被无意中泄露,远程管理可能存在问题。当嵌入装置或薄型装置和远程管理装置存在于单独的通信网络上或通过公共通信网络进行通信时,这些问题可能更普遍。

附图说明

在全部附图中,参考数字可被重复使用来指示所参考元素之间的对应关系。附图被提供来示出本文所描述的示例性实施方案,并且并不意图限制本公开的范围。

图1是描绘说明性环境的框图,其中协调器可以操作以本地管理和协调被协调环境内的被协调装置的操作,并且其中协调器可以与客户端装置和服务提供商环境通信以修改协调器的操作;

图2描绘了提供图1的协调器的计算装置的总体架构;

图3a和图3b描绘了由图1的协调器管理的被协调装置的总体架构;

图4描绘了可用于为图1的协调器生成和提交配置信息的客户端装置的总体架构;

图5是描绘用于为图1的协调器注册注册服务提供商环境的管理和部署服务,以及用于经由装置影子服务向协调器通知从客户端装置获得的配置的说明性交互的流程图;

图6是描绘用于利用管理和部署服务来为协调器调配配置的说明性交互的流程图,包括可由协调器执行以实现期望功能的按需代码执行环境的多个任务;

图7是描绘用于经由协调器经由客户端装置修改被协调装置的配置的说明性交互的流程图,而不需要在被协调环境外部进行通信;

图8是描绘用于在图1的协调器上管理工作项的队列诸如执行任务的调用的说明性交互的流程图;

图9是描绘用于通过生成用于执行对任务的调用的执行环境并在执行环境中执行该任务来处理来自图8的队列的任务调用的说明性交互的流程图;

图10描绘了可以由图1的协调器实施的说明性队列处理例程;

图11描绘了可以由图1的协调器实施的说明性执行环境生成例程;

图12是描绘使用通信管理器使得第一任务执行能够调用图1的协调器上的第二任务执行的说明性交互的流程图;

图13是描绘使用通信管理器向图1的协调器上的第一任务执行的调用方提供第一任务执行的输出的说明性交互的流程图;

图14描绘了可以由图1的协调器内的通信管理器实施的说明性跨任务通信例程;

图15是描绘使用远程接口任务经由外部按需代码执行环境150上的第二任务执行调用图1的协调器上的第一任务执行的说明性交互的流程图;

图16描绘了可以由在图1的协调器上执行的远程接口任务实施的说明性外部任务调用例程;

具体实施方式

一般来说,本公开的各方面涉及存在于被协调环境内的协调器,其用于控制被协调环境内的被协调装置的操作和功能。在一些情况下,被协调装置可以对应于具有至少一个另选主要功能的嵌入装置或薄型装置,诸如具有单独主要目的的家用电器。在一些情况下,这种装置可以称为“物联网”装置或“iot”装置。被协调装置可以包括有限的本地用户接口能力,且因此可以受益于远程管理。本文公开的协调器使得能够在包括协调器和被协调装置的环境(诸如局域网或“lan”环境)内本地对被协调装置进行这种远程管理。因此,协调器的使用可以实现对被协调装置的管理,而不需要在本地环境外部进行通信,从而与使用外部或公共通信网络相比,允许降低隐私风险并提高通信速度。具体而言,本公开的各方面涉及利用协调器作为本地按需代码执行系统,使得能够快速执行可移植代码段以在协调器上实现功能。这些可移植代码段在本文可称为“任务”。在一些情况下,可利用任务来协调被协调装置的功能,诸如通过改变装置的状态。例如,在被协调装置是启用网络的灯的情况下,任务可以用于根据对协调器的输入诸如当前时间、用户输入或另一个被协调装置的状态改变灯的状态(例如,变为“开”或“关”)。协调器还可以根据许多不同的协议启用通信协调的装置和任务,并且在一些情况下提供此类协议之间的转换功能。此外,在一些情况下,协调器可以管理任务的执行位置,使得根据候选装置的能力和执行任务的要求,可以在协调器上、在被协调装置上或在远程环境(例如,远程网络计算环境)的装置上执行任务。在一些情况下,这些任务可以是用户定义的,使得用户能够根据对应于任务的用户提交的代码在协调器或被协调装置上实施各种功能。因此,协调器可以提供被协调装置的快速可重新配置的本地管理。

在一些情况中,协调器可以经由“装置影子”管理被协调装置的状态。一般来讲,装置影子可以对应于存储在远离被协调装置的位置(例如,协调器或远程装置影子服务)处的被协调装置的期望状态的数据表示。被协调装置可以被配置为与装置影子表示的状态同步,并且因此,可以预期对装置影子的改变引起被协调装置的状态的对应改变。在一些情况下,被协调装置和对应影子的同步可以经由“发布/订阅”模型通信协议诸如mqtt协议发生,该协议在本领域中是已知的。因此,被协调装置可以“订阅”用于该被协调装置的装置影子。然后,协调器可以经由“发布”到装置影子的请求获得对装置影子状态的所需改变。协调器可以经由通信协议向被协调装置通知装置影子的状态改变,并且被协调装置可以通过将本地状态与装置影子的状态同步来进行响应。例如,在将读取或修改被协调装置的状态的请求从与被协调装置的通信分离时,使用装置影子可能是有利的。说明性地,在读取或修改装置影子时,可以立即认为读取或修改被协调装置的状态的请求是成功的。然后,根据被协调装置和影子装置之间的通信协议,被协调装置所需的任何改变可以与请求异步发生。由于与装置交互的请求可以从与装置的实际通信分离,因此这些请求和装置通信也可以利用不同的通信协议。例如,可以根据高开销、高可靠性协议诸如传输控制协议(tcp)传输经由装置影子读取或修改装置状态的请求,而装置影子和被协调装置之间的通信可以经由低开销协议诸如mqtt发生。关于mqtt的用于向被协调装置传输通信的进一步细节可以在2016年8月26日提交的且标题为“executingremotecommands”的美国专利申请no.15/249213中找到(‘213申请),其全部内容通过引用并入本文。在一些情况下,利用装置影子可以提供其他益处诸如减少被协调装置使用的计算资源。例如,可以不要求被协调装置处理或甚至知道读取被协调装置的状态的请求,因为这样的请求可以由对应装置影子(例如,被协调装置)的主机处理。关于装置影子的使用的进一步细节通常可在2016年6月29日提交的且标题为“devicerepresentationmanagementusingrepresentationtypes”的美国专利申请no.15/196,700中找到(“‘700申请”),其全部内容通过引用并入本文。

根据本公开的实施方案,协调器可以与用户相关联,用户可以经由服务提供商的环境改变协调器的配置。说明性地,服务提供商环境可以由协调器的提供商操作,并且使用户能够指定协调器的各种配置参数,诸如用于协调器的被协调环境的位置、环境内的被协调装置、协调器可执行的任务、协调器应如何管理装置之间、任务之间或装置与任务之间的通信、协调器的安全信息或协调器的其他参数(诸如要在协调器处监视的量度或要在协调器处执行的日志记录)。由于协调器本身在一些情况下可能与有限的本地用户接口相关联,因此服务提供商环境通过使用户能够经由客户端装置提交用于协调器的配置,并且使得协调器被自动调配该配置。服务提供商环境还可以使单个客户端装置能够经由统一接口管理多个协调器,并且通过部署新的配置,或者通过返回或撤销先前对协调器的配置部署从而快速改变协调器的配置。

在一些情况下,服务提供商环境可以提供与协调器的功能类似或相同的功能。例如,协调器可以至少部分地基于可移植代码段或“任务”的执行来起作用。类似地,服务器提供商环境可以包括用于执行相同或类似任务的按需代码执行环境。关于这种按需代码执行环境的进一步细节可以在2014年9月30日提交的且标题为“programmaticeventdetectionandmessagegenerationforrequeststoexecuteprogramcode”的美国专利no.9,323,556中找到(“'556专利”),其全部内容通过引用并入本文。简而言之,为了执行任务,按需代码执行环境可以维护预初始化的虚拟机实例池,这些虚拟机实例一旦接收到用户请求即可以使用。由于这些虚拟机的预初始化性质,与执行用户代码(例如,实例和语言运行时启动时间)相关联的延迟(有时称为延时)可以显著降低,通常降低到低于100毫秒的水平。说明性地,按需代码执行环境可以在一个或多个物理计算装置上维护虚拟机实例池,其中每个虚拟机实例具有加载在其上的一个或多个软件组件(例如,操作系统、语言运行时、库等)。当按需代码执行环境接收到执行用户的程序代码的请求(“任务”)时,该请求指定用于执行用户的程序代码的一个或多个计算约束,按需代码执行环境可基于由所述请求指定的一个或多个计算约束选择虚拟机实例以用于执行用户的程序代码,并且致使用户的程序代码在所选择的虚拟机实例上执行。程序代码可在虚拟机实例上创建的隔离容器中执行。由于池中的虚拟机实例在接收到请求时早已被启动并加载了特定的操作系统和语言运行时,因此显著缩短了与查找可以处理请求的计算容量(例如,通过在虚拟机实例上创建的一个或多个容器中执行用户代码)相关联的延迟。按需代码执行环境可以包括虚拟机实例管理器,如‘556专利中更详细描述的,其被配置为接收用户代码(以各种编程语言中的任何一种编写的线程、程序等)并且以高度可扩展、低延迟的方式执行代码,而无需用户配置虚拟机实例。具体而言,虚拟机实例管理器可以在接收到用户代码之前以及从用户接收到关于任何特定虚拟机实例配置的任何信息之前,根据一组预先确定的配置创建和配置虚拟机实例,每个对应于各种运行时环境中的任何一个或多个。此后,虚拟机实例管理器接收用户发起的执行代码的请求,并且基于与该请求相关联的配置信息识别预先配置的虚拟机实例以执行代码。虚拟机实例管理器可以进一步分配识别的虚拟机实例以至少部分地通过在分配的虚拟机实例内部创建和配置容器以执行用户的代码。在‘556专利中更详细地描述了用于实施虚拟机实例管理器和在虚拟机实例上执行用户代码的各种实施方案。

由于由协调器实施的按需代码执行环境可以相比‘556专利中描述的按需代码执行环境(例如,其可以在数据中心中实施)与更有限的计算资源相关联,协调器可以实施调度器来帮助任务执行的优先化。具体而言,调度器接收执行任务的调用,并且将此类调用作为工作项排队到工作项队列上。然后,调度器可以根据调度算法选择性地使来自工作项队列的调用出队。调度器可以利用任意数量的调度算法诸如先进先出调度、最早截止时间优先调度、最短剩余时间调度、固定优先级抢占调度和轮询调度,其中的每一个在本领域中都是已知的。说明性地,每个调度算法可以基于协调器可用的计算资源量和完成任务调用所需的资源量(例如,由任务的作者或协调器的管理员设置,或者可以基于任务的静态或动态分析估计)实施。在一些情况下,调度算法还可以至少部分地基于由任务的作者、由协调器的管理员、由调用实体等分配给任务的优先级。调度器可以根据调度算法处理工作项的队列,并且当任务调用被选择出队时,通过执行对应于该调用的任务(例如,根据该调用的参数)使得完成任务调用。

为了帮助执行任务,协调器还可以包括资源管理器用于监视协调器的计算资源使用状态,并且管理任务将在其中执行的执行环境的生成、销毁和维护。执行环境可以包括逻辑上分配给任务执行的存储器的任何部分。说明性地,执行环境可以对应于“容器”、操作系统级虚拟化环境或“沙箱”环境,诸如“chrootjail”或python虚拟环境“virtualenv”。在其他情况下,执行环境可以对应于虚拟机环境(例如,java虚拟机、具有不同操作系统的虚拟化硬件装置等)。在其他情况下,执行环境可以是分配给任务执行的存储器空间,而不必利用虚拟化。说明性地,资源管理器可以使调度器能够针对协调器检索当前计算资源可用性信息,诸如可用存储器的量、(例如,中央处理单元、图形处理单元等的)处理器周期、网络带宽或其他计算资源,以便使调度器能够确定哪些任务调用要从工作项队列出队。在一些情况下,资源管理器可以向调度器提供其他信息,诸如在协调器处发生的当前任务执行的列表。资源管理器可以进一步接收和处理来自调度器的请求,以获得要向其传递任务调用的执行环境。说明性地,在每个任务在单独执行环境中执行的情况下,并且给定任务不存在执行环境的情况下,资源管理器可以确定执行给定任务所需的资源(例如,根据底层计算资源如处理器容量和存储器,并且根据软件资源诸如驱动器、运行时、实用程序、依赖项等),并且生成执行环境以提供此类资源。然后,资源管理器可以将用于执行环境的识别信息返回调度器,使得调度器可以将执行任务的调用传递给执行环境。在一些情况下,资源管理器还可以实现对现有执行环境的重新利用。例如,某些任务诸如对应于协调器的常用功能的那些可以被“固定”,使得为任务预先生成执行环境。因此,当资源管理器接收到为任务生成执行环境的请求时,可以返回预先生成环境的识别信息,从而减少生成执行环境所需的时间和计算资源。在一些情况下,可以跨任务重新利用执行环境,诸如当两个不同的任务需要相同或类似的资源用于执行时。在这种情况下,资源管理器可以在不同任务的执行之间“清理”执行环境,以确保执行之间的安全性。如下文将更详细描述的,资源管理器可以进一步启用执行环境的暂停和恢复,使得低优先级任务的执行环境可以暂停以将计算资源释放给高优先级任务,并且根据调度算法恢复。

如上所述,在一些情况下,协调器可以被配置为选择在本地(例如,在协调器上)执行任务还是通过使用服务提供商网络内的按需代码执行环境来执行任务。作为另一示例,协调器和服务提供商环境两者可以提供对应于被协调装置的装置影子,并且用户可以提交请求以改变协调器托管的装置影子或服务提供商环境内托管的装置影子中的一者或两者。在这种情况下,协调器可以用于同步对应于给定被协调装置的各种装置影子,以及被协调装置本身。例如,协调器和服务提供商环境可以实施版本向量或向量时钟协议,使得协调器可以检测在相应协调器和服务提供商环境处的装置影子处对装置影子的改变的排序(例如,作为给定顺序的顺序改变,或者作为并发改变)。然后,协调器可以响应于这种改变实施(潜在可配置的)规则以在协调器处建立装置影子的状态。例如,协调器可以被配置为使得对协调器和服务提供商环境处的相应装置影子的顺序改变导致协调器的装置影子被更新,如同相对于协调器的装置影子的顺序改变一样(例如,使得如果改变a发生在改变b之前,则不管这种改变发生在何处,改变a将被应用于协调器的装置影子,然后将应用改变b)。协调器可以被进一步配置为以预先确定和潜在可配置的方式解决并发改变。说明性地,协调器可以确定,在协调器的装置影子和服务提供商环境的装置影子发生并发改变的情况下,只要这两种改变不冲突,就应当保持这两种改变(例如,两种改变都不寻求修改保持在装置影子内的相同值)。作为进一步的说明,协调器可以确定,在协调器的装置影子和服务提供商环境的装置影子发生冲突改变的情况下,应保持对协调器的装置影子的改变,并且应当丢弃对服务提供商的装置影子的改变。本领域技术人员将认识到用于解决并发修改的各种其他机制。

在一些实施方案中,协调器可以包括通信管理器,通信管理器包括可执行代码,以促进在协调器上执行的不同任务之间的通信,或者在协调器上执行的任务和在远程环境(例如,按需代码执行系统)中执行的任务之间的通信。说明性地,通信管理器可以提供标准化接口,任务执行可以通过该接口交换信息,诸如执行任务的调用或任务执行的输出。通信管理器可以支持许多协议,使得尽管任务之间可能存在不兼容性,但任务可以彼此通信。例如,用不同编程语言编写的任务通常可能很难在彼此之间传输信息或者很难与在协调器(诸如便于任务执行的调度器)上执行的其他代码进行交互。通信管理器可以提供接口以经由众所周知的协议诸如超文本传输协议(http)促进这种通信。例如,第一任务执行可以向通信管理器传输http请求,指示执行第二任务的期望。然后,通信管理器可以诸如通过认证第一任务执行和验证调用的格式和内容来验证调用,并且如果有效,可以(例如,经由调度器的api)将调用传输到调度器以在协调器上处理。在一些情况下,通信管理器还可以促进返回所得到的第二任务的执行的输出,并且可以将输出返回到第一任务执行。例如,通信管理器可以将执行标识符分配给由第一任务执行传输的初始http请求,并且在获得第二任务执行的结果时,将输出的通知传输到第一任务执行。在其他情况下,通信管理器可以使调用任务能够查询任务执行的状态。例如,调用第二任务执行的第一任务执行可以向通信管理器传输对对应于给定执行标识符的输出的查询,并且如果可用,通信管理器可以返回该输出。在一些情况下,通信管理器可以另外或另选地返回其他信息,诸如对应于执行标识符的任务状态(例如,正在执行、成功执行、导致错误等)。除了上面提到的益处之外,通信管理器的使用可以通过处理由任务执行的排队、通信延时等导致的通信延迟提供稳健的异步任务内通信。此外,使用通信管理器可以实现根据各种任务支持的协议使用多种协议。例如,通信管理器可以支持http1.1和http2.0协议两者,并且使任务能够根据不同的协议彼此通信。随着新协议的实施,可以更新通信管理器以支持这些新协议,同时保持与旧协议的兼容性。因此,通信管理器可以在任务内通信中提供相当大的灵活性。

在一些情况下,通信管理器还可以促进与在协调器外部诸如在远程按需代码执行系统上执行的任务的通信。一般来说,从远程按需代码执行系统到协调器(或在协调器上执行的任务)的通信可能比从协调器到远程按需代码执行系统的通信更困难。说明性地,远程按需代码执行系统可以在主要基于来自外部源的通信操作的网络上实施,并且被配置为支持这种通信(例如,经由注册域名服务(dns)提供商、使用专用网络连接、实施允许外部源通信的安全策略等)。然而,协调器可以在私有网络内操作,其中外部源通信可能不那么可靠。例如,私有网络可能不利用稳健、可靠和专用的网络连接,可能不利用dns提供商(或者具有静态网络地址),并且可能实施抑制外部源通信的限制性安全策略。为了解决这些困难,协调器可以实施远程接口,该远程接口能够实现与外部通信源诸如远程按需代码执行系统进行通信。在一个实施方案中,远程接口可以实施为协调器上的任务,并且执行以发起与外部通信源的通信。由于这种通信可以由远程接口发起,因此可以至少部分地减轻私有网络上的困难诸如缺乏静态网络地址、限制性安全策略或使用网络地址转换。此外,远程接口可以提供延时和容错通信,解决私有网络的可靠性问题。说明性地,远程接口可以周期性地从远程按需代码执行系统检索请求在协调器上执行的一组任务,并且使得该组任务在协调器上执行(例如,如上所述经由向通信管理器传输请求)。远程接口可以进一步获得该组任务的执行输出,并且将输出返回到远程按需代码执行环境。因此,远程接口可以促进协调器和远程按需代码执行环境之间的通信。

如本领域技术人员根据本公开将理解的,本文公开的实施方案改进了由外部装置协调和管理计算系统(且尤其是具有有限的本地用户接口的计算系统)的能力。具体而言,本公开提供了一种高度可配置的协调器,用于以可靠的方式协调和管理被协调环境内的装置,同时减少或消除经由外部或公共通信网络通信的需求。因此,本文公开的实施方案提供对被协调装置的更具响应性的控制(例如,由于减少通信的延时),以及增加被协调装置的安全性(例如,由于不需要经由公共网络进行通信)。因此,本公开一般表示对现有数据处理系统和计算系统的改进。

此外,本文公开的协调器可以在许多情况下利用,并且提供优于现有系统的许多益处。例如,由于本地通信网络(例如,局域网或“lan”)在许多情况下提供比非本地网络(例如,广域网或“wan”)更高的带宽和更低的延时,因此使用本文公开的协调器可以使得原本不可能或不切实际的数据处理应用成为可能或实际。例如,一些当前基于网络的数据分析系统通过从各种网络连接的装置收集数据的有限部分,并且(例如,根据机器学习算法)分析这些有限部分生成关于网络连接的装置的聚合或预测数据来操作。例如,汽车制造商可以收集关于其汽车操作的有限数据,并且分析数据以帮助开发这些汽车的辅助驾驶技术。然而,这种分析通常基于有限的数据集,因为汽车在操作期间产生的数据量通常超过可用于将这种数据传输到附网分析服务的带宽。通过利用这种汽车本地的协调器,可以将分析(例如,机器学习算法的应用)应用于汽车生成的数据的更大部分或者潜在地全部。由于这种分析的输出可能小于所分析的数据,因此可以将这种输出提供给附网分析服务,以与其他各辆汽车的输出组合或聚合。因此,使用协调器可以实现对汽车数据的更大分析,而不会使汽车和附网分析服务之间的有限带宽负担过重。各种其他本地数据处理应用是可能的并且在本申请的范围内。例如,存在多种情况,其中永远在线装置可以负责监视环境,并且记录或报告此类环境中的特定事件发生(例如,相机可以利用运动检测来启动记录或长期存储该记录)。本文所述的协调器可以提供动态改变可能发生这种记录的事件发生的能力,或者提供为检测这种事件发生而执行分析的能力。例如,在由协调器管理相机的情况下,相机可以不断地向协调器提供记录,协调器可以根据用户定义的任务分析记录,并且采取由任务定义的适当动作,诸如本地存储记录、通知第三方记录中检测到的事件发生、将记录上传到网络可访问的存储装置。如本文所述,可以通过重新配置协调器改变这种分析和动作。因此,本申请的协调器可以提供对被协调装置的高度可配置的本地管理和控制。

通过参考结合附图进行的以下描述,将更易于了解同样更好地理解本公开的上述方面和许多伴随的优点。

图1是说明性操作环境100的框图,其包括其中协调器114可操作以控制被协调装置112的一个或多个被协调环境110,以及可以与被协调环境110交互(例如,请求被协调装置112的状态改变)的客户端装置102,以及可以辅助与各种被协调环境110中的协调器114通信或配置所述协调器的服务提供商环境120。

被协调环境110、客户端装置和服务提供商环境120可以经由网络104进行通信,该网络可以包括任何有线网络、无线网络或其组合。例如,网络104可以是个人区域网络、局域网、广域网、空中广播网络(例如,用于无线电或电视)、有线电视网络、卫星网络、蜂窝电话网络或其组合。作为另一示例,网络104可以是链接网络的可公开访问的网络,可能由各个不同方操作,诸如互联网。在一些实施方案中,网络104可为私有或半私有网络诸如公司或大学内联网。网络104可包括一个或多个无线网络诸如全球移动通信系统(gsm)网络、码分多址(cdma)网络、长期演进(lte)网络或任何其他类型的无线网络。网络104可以使用协议和组件经由互联网或任何其他上述类型的网络进行通信。例如,由网络104使用的协议可包括超文本传输协议(http)、http安全(https)、mqtt、受限制的应用协议(coap)等。用于经由互联网或任何其他上述类型的通信网络进行通信的协议和组件是本领域技术人员所熟知的,且因此本文不更详细描述。

虽然本文公开的一些实施方案可以利用已知协议诸如mqtt,但是根据这些协议的标准实施,其他实施方案可以改变这种协议的实施。例如,标准化mqtt可以利用“保持活动”功能,由此客户端和代理必须在阈值时间段(“保持活动”阈值)内交换正常数据或专用保持活动消息(例如,mqttping),或者假设连接断开。然而,由专用保持活动消息创建的开销在被协调环境112内可能是不期望的。因此,本申请的一些实施方案可以实施可变保持活动阈值,由此保持活动阈值随着保持活动消息被传输而增加,直到通信中发生错误。说明性地,在第一保持活动阈值到期,导致保持活动消息的客户端传输,并且客户端从代理获得保持活动响应的情况下,客户端可以将用于后续传输的保持活动阈值增加一定量(例如,50%,nms等),潜在地达到最大量。在第一保持活动阈值到期,导致保持活动消息的客户端传输,并且客户端未从代理获得保持活动响应的情况下,客户端可以将用于后续传输的保持活动阈值减小一定量(例如,50%,nms等)或减小到默认最小值。因此,当传输和确认保持活动消息时,可以增加用于后续传输的保持活动阈值,减少用于支持这种传输的带宽。mqtt的这些变化在具有低带宽或高拥塞的环境110中可能特别有益。

每个被协调环境110可以包括经由执行环境110的网络(该网络未在图1中示出)进行通信的协调器114和任意数量的被协调装置112。由于其在被协调环境110内的关联,就通信网络方面而言,给定环境110内的被协调装置112和协调器114可以被认为是彼此“本地”的。例如,给定环境110内的被协调装置112和协调器114可以经由lan或其他本地通信网络连接。根据本文描述的实施方案,被协调装置112和协调器114可以通过这样的本地通信网络彼此通信。在一些情况下,可以诸如经由传输层安全密码协议加密被协调装置112和协调器114之间的通信。说明性地,可以向协调器114调配验证协调器的数字身份的安全证书。安全证书可以由公共证书机构或私有证书机构签署(例如,由服务提供商环境120建立)。

每个被协调装置112可以对应于被配置为与协调器114通信以管理被协调装置112的功能的计算装置。在一些情况下,被协调装置112可以对应于具有稳健的本地用户接口能力的完全特征计算装置诸如膝上型计算机、台式计算机、独立媒体播放器等。在其他情况下,被协调装置112可以对应于与另一个主要功能相关联的薄型装置或嵌入装置,诸如嵌入在家用电器或装置(诸如冰箱、洗衣机、热水加热器、炉子、门锁、灯泡、电源插座、电气开关等)内或作为附件附接到家用电器或装置的装置。在某些情况下,这种电器或装置被称为“智能”装置、iot装置或“连接”装置。这样,被协调装置112可以包括有限的本地用户接口,并且被配置为用于远程管理。在一些情况下,被协调装置112可以是有状态的,并且操作以响应于指令改变它们的状态(例如,通过从“关”转到“开”等)。

如下文更详细描述的(例如,参考图2),协调器114可以对应于执行指令以协调、管理或控制被协调装置112的操作的计算装置,而不需要传输到被协调装置112的指令在被协调环境110之外行进(因此增加了这些指令的安全性并增加了它们的传输速度)。具体而言,协调器114可以包括处理器和存储器,它们被共同配置为管理被协调装置112、客户端装置102和服务提供商网络120的装置的任意组合之间的通信。协调器可以被进一步配置为以类似于服务提供商环境120的按需代码执行环境120的方式实现任务的执行。这些任务可以实施各种用户定义的或非用户定义的功能,包括与被协调装置112、客户端装置102和服务提供商网络120的装置通信。这样,协调器114可以被配置为允许对被协调装置112进行手动、自动或半自动控制。例如,协调器114可以使客户端装置102能够传输改变被协调装置112的状态的请求,并且导致这种状态改变发生。作为另一示例,协调器114可以使用户能够指定某个标准,其中在该标准下应当改变被协调装置112的状态,然后当满足该标准时,自动操作以改变被协调装置112的状态。

如下面将讨论的,协调器114的许多功能可以经由任务建立,使得能够根据用户的需要快速改变这些功能。在一些情况下,此类任务(或此类任务的依赖项诸如库、驱动器等)可以由协调器的用户提供。在其他情况下,可以通过服务提供环境120将此类任务提供给协调器114。例如,服务提供商环境150可以维护协调器114可用的任务库,以及可以应用此类任务的被协调装置112的类型(例如,所有装置、特定装置模型、特定制造商、类型或功能的装置等)。然后,服务提供商环境150可以向协调器114提供适合于协调器114的被协调环境110中的被协调装置112的所有或一些任务,或者通知用户此类任务的可用性。在一个实施方案中,用户可以向服务提供商环境150或协调器114通知被协调环境110中的被协调装置112。在另一个实施方案中,协调器114可以被配置为基于被协调环境110内的被协调装置112的传输确定被协调装置的特性。说明性地,在从被协调装置112接收到通信时(例如,响应于用户发起的配对、基于自动传输等),协调器114可以将传输的内容或格式与将格式或内容映射到不同装置时间的信息进行比较。这种映射可以由服务提供商环境150维护,并且基于从各种协调器114收集的数据进行更新。在一些情况下,不是将传输映射到装置类型,而是协调器114可用于将传输映射到适合于装置112的任务,而不管装置112的类型是否已知。例如,针对具有一个或多个被协调装置112的已建立环境110,服务提供商环境150可以收集识别这种装置112的传输的内容或格式以及用于管理这种装置112的操作的任务的数据。此后,可以针对相同或相似的传输监视新创建的被协调环境110,并且可以呈现在已建立的环境110中利用的任务,用于在新创建的环境110中的潜在使用。在其他实施方案中,协调器114可以利用标准化的发现协议诸如通用即插即用(upnp)协议集,以发现被协调环境110内的装置112。

客户端装置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和被协调装置112的状态能够稳健改变;以及按需代码执行环境150,其提供任务的按需动态执行,以及提供在协调器114上部署和调配任务。

如图1所示,管理和部署服务130包括客户端和数据接口132以及配置数据存储区134,其可以共同操作以使得能够为协调器114注册管理和部署服务130、为协调器114生成配置以及传输配置数据到协调器114。说明性地,客户端和数据接口132可以提供一个或多个用户接口(例如,api、cli、gui等),用户通过所述一个或多个用户接口经由客户端装置102可以生成或提交协调器114的配置以存储在配置数据存储区134中。客户端和数据接口132还可以提供一个或多个接口,协调器114可以通过所述一个或多个接口获得配置,从而根据获得的配置重新配置协调器114。配置数据存储区134可以对应于任何持久或基本持久的数据存储区,诸如硬盘驱动器(hdd)、固态驱动器(sdd)、附网存储装置(nas)、磁带驱动器或其任意组合。

装置影子服务140可以包括使得能够创建、维护、读取、改变或删除装置诸如协调器114或被协调装置112的“影子状态”的元素。如上所述,影子状态可以对应于表示对应装置的期望状态的数据,其可以镜像或可以不镜像装置的当前状态。例如,相对于协调器114,影子状态可以包括协调器114的期望配置版本。相对于被协调装置112,影子状态可以包括被协调装置112的期望状态(例如,开关或灯泡的开或关、锁的锁定或解锁、恒温器的期望温度等)。装置影子服务140可以使用户能够经由客户端装置102或其他实体从装置读取影子状态或修改装置的影子状态,并且可以进一步与该装置交互以使装置与影子状态同步。说明性地,装置影子服务140可以包括接口142(其可以包括例如api、cli、gui等)以及被配置为存储影子状态的影子数据存储区144,通过所述接口可以接收读取、写入、创建或删除影子状态的请求。影子数据存储区134可以对应于任何持久或基本持久的数据存储区,诸如硬盘驱动器(hdd)、固态驱动器(sdd)、附网存储装置(nas)、磁带驱动器或其任意组合。关于装置影子服务140的进一步细节可以在‘700申请中找到,该申请在上文通过引用方式并入。

按需代码执行环境150可以包括提供任务(例如,可移植代码段)的按需执行的多个装置。具体而言,按需代码执行环境150可以包括前端152,通过所述前端用户可以经由客户端装置102向按需代码执行环境150提交任务,并且请求在按需代码执行环境150上执行任务。此类任务可以存储在例如任务数据存储区154中,任务数据存储区可以对应于任何持久或基本持久的数据存储区,诸如硬盘驱动器(hdd)、固态驱动器(sdd)、附网存储装置(nas)、磁带驱动器或其任意组合。虽然未在图1中示出,但是按需代码执行系统150可以包括各种附加组件以使得能够执行任务,诸如多个执行环境(例如,在按需代码执行环境150的物理主机装置上执行的容器或虚拟机),管理这种执行环境的工作者管理器,以及帮助工作者管理器快速(例如,10ms以下)获得执行环境的预热池管理器。关于按需代码执行环境的进一步细节可以在‘556专利中找到,该专利在上文通过引用方式并入。

如上所述,可以在按需代码执行环境150和协调器114两者处利用任务。如上所述,任务对应于用户代码的各个集合(例如,以实现特定功能)。本文使用的对用户代码的引用可指以特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可以互换使用。可以例如结合用户开发的特定web应用或移动应用执行这样的用户代码以实现特定功能。该代码的特定执行在本文被称为“任务执行”或简称为“执行”。作为非限制性示例,任务可以用javascript(例如,node.js)、java、python和/或ruby(和/或另一种编程语言)编写。可以以各种方式“触发”任务以在按需代码执行系统150或协调器114上执行。在一个实施方案中,客户端装置102或其他计算装置可以传输执行任务的请求,其通常可以被称为执行任务的“调用”。这种调用可以包括待执行的用户代码(或其位置)以及将用于执行用户代码的一个或多个自变量。例如,调用可以提供任务的用户代码以及执行任务的请求。在另一示例中,调用可以通过名称或标识符识别先前上传的任务。在又一示例中,对应于任务的代码可以包括在对任务的调用中,并且在请求被协调器114或按需代码执行系统150接收之前被上传到单独位置(例如,协调器114的存储装置、网络可访问的存储服务或任务数据存储区154)。协调器114或按需代码执行系统150的请求接口可以从用户接收执行作为超文本传输安全协议(https)请求的任务的调用。而且,也可以在执行任务时处理和利用包括在https请求中的任何信息(例如,报头和参数)。如上所讨论,包括例如http、mqtt和coap的任何其他协议可以用于将包含任务调用的消息传送到请求接口122。

执行任务的调用可以指定与对应于该任务的用户代码一起使用的一个或多个第三方库(包括本地库)。在一个实施方案中,该调用可以向协调器114或按需代码执行系统150提供包含与请求执行的任务相对应的用户代码和任何库(和/或其存储位置的标识)的zip文件。在一些实施方案中,调用包括元数据,所述元数据指示要执行的任务的程序代码、编写程序代码所用的语言、与调用相关联的用户、和/或被保留用于执行程序代码的计算资源(例如,存储器等)。例如,任务的程序代码可以随调用一起提供,先前由用户上传,由协调器114或按需代码执行系统150提供(例如,标准例程),和/或由第三方提供。在一些实施方案中,这样的资源级约束(例如,将分配多少存储器来执行特定用户代码)针对特定任务指定,并且可能不会随着任务的每次执行而变化。在这种情况下,协调器140或按需代码执行系统150可以在接收到每个单独的调用之前访问这种资源级约束,并且该单独调用可以不指定这样的资源级约束。在一些实施方案中,该调用可以指定其他约束,诸如指示调用调用什么类型的许可或授权来执行任务的许可数据。按需代码执行系统110可以使用这种许可数据访问私有资源(例如,在私有网络上)。

在一些实施方案中,调用可以指定应该采用的用于处理调用的行为。在这样的实施方案中,调用可以包括用于启用一个或多个执行模式的指示符,在所述一个或多个执行模式中执行调用中引用的任务。例如,调用可以包括用于指示任务是否应当以调试模式执行的标志或报头,在调试模式中可结合任务的执行而生成的调试和/或日志输出被提供回给用户(例如,经由控制台用户接口)。在这样的示例中,协调器114或按需代码执行系统150可以检查调用并查找标志或报头,并且如果其存在,则协调器114或按需代码执行系统150可以修改在其中执行任务的执行环境的行为(例如,日志设施),并且使得输出数据被提供回用户。在一些实施方案中,行为/模式指示符由协调器114或按需代码执行系统150提供给用户的用户接口添加到调用中。基于调用中提供的指示,还可以启用或禁用其他特征诸如源代码分析、远程调试等。

服务提供商环境120在图1中被描绘成在包括若干计算机系统的分布式计算环境中操作,所述若干计算机系统使用一个或多个计算机网络互连(图1中未示出)。服务提供商环境120还可以在具有比图1中所示更少或更多数量的装置的计算环境内操作。因此,图1中对服务提供商环境120的描述应该被视为说明性的,而不是对本公开的限制。例如,服务提供商环境120或其各个组成部分可以实施各种web服务组件、托管的或“云”计算环境和/或对等网络配置,以实施本文描述的过程的至少一部分。

此外,服务提供商环境120可以直接在硬件或由硬件装置执行的软件中实施,并且可以例如包括在物理计算机硬件上实施的一个或多个物理或虚拟服务器,所述物理计算机硬件被配置为执行用于执行本文将描述的各种特征的计算机可执行指令。该一个或多个服务器可以在地理上分散或地理上共同位于例如一个或多个数据中心中。在一些情况下,该一个或多个服务器可以作为快速调配和释放的计算资源的系统的一部分操作,该系统通常被称为“云计算环境”。

图2描绘了管理给定被协调环境110内的被协调装置112的计算系统(称为协调器114)的总体架构。图2中描绘的工作者管理器140的总体架构包括可用于实施本公开的各方面的计算机硬件和软件模块的布置。硬件模块可用物理电子装置来实施,如下文更详细地讨论的。协调器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内执行任务。本文使用的执行环境270指的是在其中执行任务的存储器250的逻辑部分。在一个实施方案中,执行环境270以编程方式分离,使得禁止在第一执行环境270中代码的执行修改与另一执行环境270相关联的存储器。说明性地,执行环境270可以对应于“容器”、操作系统级虚拟化环境或“沙箱”环境,诸如“chrootjail”或python虚拟环境“virtualenv”。在其他情况下,执行环境270可以对应于虚拟机环境(例如,java虚拟机、具有不同操作系统的虚拟化硬件装置等)。在其他情况下,执行环境270可以是分配给任务执行的存储器空间,而不必利用虚拟化。

通信管理器260可以促进在协调器上执行的任务之间以及协调器114与其他装置(例如,客户端装置102和被协调装置112)之间的通信。具体而言,通信管理器260可以被配置为获得指向协调器114的消息并将消息转发到适当的目的地。例如,通信管理器260可以在任务、被协调装置112、客户端装置102和服务提供商执行环境120的装置的任意组合之间路由消息。

为了能够收集关于协调器114的操作的信息,存储器250还包括量度和日志代理259,其对应于可由协调器114执行用于监视协调器114的操作诸如任务如何在协调器114处执行以及报告关于这种操作的信息的代码。该信息可以包括例如协调器114上的任务的执行时间,以及关于这种执行的信息(例如,使用的计算资源、执行是否导致错误等)。在一些情况下,量度和日志代理259可以在本地诸如在存储器250中存储该信息,以使用户能够获得该信息。在其他情况下,量度和日志代理259代理可以在远程诸如在服务提供商环境150存储该信息。量度和日志代理259还可以实施关于监视协调器114的操作的附加功能,诸如将健康检查数据从协调器114传输到服务提供商环境150。

由协调器114执行的任务被示出为在任务存储器空间280内逻辑地分组,任务存储器空间可以对应于被配置为存储对应于每个任务的代码的存储器250的逻辑单元。如图2所示,任务存储器空间280可以包括可由处理单元204执行以实施协调器114的功能的多个任务,包括路由器任务282、一个或多个通信管理器任务286、影子服务任务288以及一个或多个客户端提供任务290。

路由器任务282可以对应于可执行以帮助在协调器114内、至协调器和从协调器路由消息的代码的一部分。在一个实施方案中,路由器任务282实施“事件流表”,以确定在协调器114接收的消息或事件的其他指示的适当目的地。例如,通信管理器260可以将在协调器114处获得的消息(例如,由于任务执行的生成或在输入/输出接口208处的接收)转发到路由器任务282,路由器任务可以利用事件流表确定应该将寻址到特定标识符的消息路由到给定任务、给定客户端装置102或给定被协调装置102。在一些情况下,事件流表还可用于指定处理给定类型的消息的方式。例如,事件流表可以指定源自特定任务或被协调装置112的消息或事件数据应该被传输到另一个任务或被协调装置112、在协调器114处被记录、被禁止、导致任务的新执行等。事件流表还可以指示满足指定标准(例如,寻址到给定标识符、包括指定标志等)的消息应该被传输到服务提供商环境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可以实施类似于装置影子服务140在本地向协调器114提供的功能。因此,影子服务任务288可以保持被协调装置112的影子状态(表示期望状态的数据),并且允许读取或写入这样的数据。影子服务任务288还可以使被协调装置112与该装置的装置影子同步。因此,通过修改被协调装置112的装置影子,可以改变被协调装置112的状态。通过读取被协调装置112的装置影子,可以确定被协调装置112的状态。在一些情况下,影子服务任务288可以进一步与给定装置的另一装置影子诸如由装置影子服务140保持的装置影子协调。例如,影子服务任务288可以将本地装置影子与存储在装置影子服务140处的装置影子同步,解决本地装置影子与存储在装置影子服务140处的装置影子之间的冲突等。

除了上述任务(每个任务可以说明性地由与服务提供商环境120相关联的实体提供)之外,任务存储器空间280可以包括任意数量的客户端提供的任务290,其可以对应于由客户端装置102生成并提交给服务提供商环境120以部署到协调器114的可执行代码。这样,由客户端提供的任务290提供的功能可以根据提交用户的期望而改变。在一些情况下,客户端提供的任务290可以用编码语言编写,存储器250针对所述编程语言包括语言运行时。例如,在协调器114支持诸如node.js、go、java和python等的语言的情况下,客户端提供的任务290可以包括以任何这些语言编写的可执行代码。

另外,存储器250包括配置数据部分272,其表示存储器250的其中存储协调器114的配置数据的逻辑部分。配置数据可以包括例如协调器114的当前部署版本、由任务存储器空间280的任务存储的数据或者在协调器114的操作中使用的其他数据。

为了实现协调器114的配置(和重新配置),存储器250还包括部署代理258。部署代理258可以对应于代码,所述代码可执行以为协调器注册服务提供商环境120,确定协调器114的期望配置,并且在协调器114的当前配置与期望配置不匹配的情况下,获得协调器114的配置数据并且修改存储器250以实施期望配置。关于部署代理258的操作的进一步细节将在下面参考图5和图6描述。

图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的被协调装置112ba不同,被协调装置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可以包括完整软件浏览器应用、浏览器应用的一部分或者仅仅是提供数据连接的软件应用(或可执行指令)。

参考图5,描绘了用于为协调器114注册装置影子服务130以便能够向协调器114部署配置以及用于经由客户端装置102a提交这种配置的说明性交互。图5的交互开始于(1),其中协调器向装置影子服务130提交注册通知,以及订阅协调器114的装置影子的请求。说明性地,交互(1)可以被实施为协调器114的注册例程的一部分,由此用户利用协调器114的输入(例如,注册按钮、屏幕、键盘/鼠标等)为协调器114注册用户在装置影子服务150上的账户。如下面将描述的,装置影子服务150此后可以向协调器114通知对由装置影子服务130维护的装置影子的改变,使得可以通过对协调器114的装置影子进行对应修改来修改协调器114的配置。

在(2)处,如果这样的影子尚不存在,则装置影子服务130为协调器114生成装置影子。说明性地,装置影子可以包括协调器114的配置版本,诸如注册时的协调器114的当前配置版本。

在(3)处,客户端装置102a在同样与协调器114相关联的用户的控制下,为协调器114生成配置。在一些情况下,可以通过使用在客户端装置102a上执行的软件(例如,文本编辑器、由服务提供商环境150提供的专用应用等),完全在客户端装置102a上生成配置。在其他情况下,可以经由客户端装置102a与管理和部署服务130之间的交互诸如经由在客户端装置102a的浏览器应用上查看的网络显示页面生成配置。

配置内容的说明性表在图5中示出为表502。如表502所示,该配置可以包括环境标识符(例如,协调器114旨在在其中操作的被协调环境110的标识符)、协调器标识符(例如,协调器114的标识符诸如序列号)、装置列表(由协调器114管理的被协调装置112的列表,包括装置112的识别信息诸如序列号),影子列表(与装置列表的被协调装置112相关联的装置影子列表)、任务列表(将被部署到协调器114的任务列表)、路由信息(由协调器114的路由器任务使用的事件流表)、日志和量度信息(用于记录关于协调器114的操作的信息的量度和日志参数列表)以及安全信息(诸如协调器在保护与服务提供商环境150的通信时或在被协调环境110内使用的安全证书)。在一些情况下,配置的每个值可以由客户端装置102a的用户手动指定。例如,用户可以指定要包括在协调器114内的多个客户端提供的任务,以及由协调器114管理的多个装置112。在其他情况下,可以经由客户端装置102a的软件或管理和部署服务130自动指定一个或多个值。例如,管理和部署服务130可以自动提供要包括在配置内的协调器标识符或影子列表。

在(4)处,将配置提交给管理和部署服务130。说明性地,提交可以经由传输配置(例如,经由上传)、经由提交网络显示页面或其他传输机制进行。在(5)处,管理和部署服务130基于提交的配置为协调器114生成配置包。例如,管理和部署服务130可以生成包括提交的配置值的数据文件(例如,zip文件、xml文件等),以便稍后传输到协调器114。管理和部署服务130还可以向配置分配版本标识符,用于将该配置与协调器114的其他配置区分开。

在(6)处,管理和部署服务130向装置影子服务130传输请求以更新协调器114的装置影子。例如,管理和部署服务130可以修改协调器114的装置影子的配置版本,以匹配分配给在交互(5)生成的配置包的配置版本。

此后,在(7)处,装置影子服务130向协调器114通知协调器114的装置影子的改变。在一个实施方案中,通知可以经由mqtt协议发生,作为消息已经被发布到与协调器相关联的主题的通知(其中消息可以表示更新的装置影子,并且主题可以对应于装置影子)。因此,可以通知协调器114存在要在协调器114处实施的新配置包。

参考图6,将描述用于在协调器114处检索和实施配置包的说明性交互。图6的交互可以发生在例如图5的交互之后。在一个实施方案中,如图2所述,图6的交互经由部署代理258的执行实施。交互开始于(1),其中协调器114从管理和部署服务130请求配置包。说明性地,可以基于配置包的版本标识符请求包,如在协调器114的装置影子内所指示的。以上参考图5描述了可以包括在配置包内的信息的示例。在(2)处,配置包从管理和部署服务130返回到协调器114。

在(3)处,协调器114检查配置包以确定配置包内引用的一个或多个任务,这些任务可以实施协调器114的功能。除了确定任务之外,协调器114可以相对于配置包采取附加动作,诸如验证配置包的有效性(例如,通过验证校验和数据、数字签名等)。

在(4)处,协调器114从按需代码执行环境150检索配置包内引用的任务。说明性地,协调器114可以利用每个任务的标识符以请求将对应于该任务的代码以及关于该任务的任何其他信息(诸如元数据)传输到协调器114。请求的任务可以包括上面参考图2描述的那些,并且可以包括例如路由器任务282、通信管理器任务286、影子服务任务288和客户端提供的任务290。在(5)处将请求的任务返回给协调器114。协调器114可以诸如通过验证任务的校验和或数字签名说明性地验证接收时任务的完整性和有效性。

在(6)处,协调器114用新获得的配置自我更新。说明性地,协调器114可以更新其存储器内的一组配置数据诸如被协调装置112的列表。协调器114可以进一步用新获得的任务替换当前一组任务,如新配置信息中所引用的。在一个实施方案中,协调器114可以执行重新启动,并且部署代理258可以用新获得的任务替换对先前任务的引用。在另一个实施方案中,协调器114可以在不执行重新启动的情况下替换任务。例如,协调器114可以利用新获得的任务满足新接收的任务调用,并且停止任何旧任务,在不使用或轻度使用那些任务时,同时根据需要用新获得的任务替换旧任务。因此,可以根据新获得的任务为协调器配置新的功能。

参考图7,将描述用于利用协调器114修改被协调装置112的状态的说明性交互。交互开始于(1),其中被协调装置112向协调器114传输注册,以及订阅被协调装置112的装置影子的请求。交互(1)可以例如作为由被协调装置112实施的注册例程的一部分发生,如由用户初始化的(例如,经由利用被协调装置112的用户接口)。

在(2)处,协调器114为被协调装置112生成表示被协调装置112的期望状态的装置影子。说明性地,装置影子可以初始表示注册时被协调装置112的当前状态。

在(3)处,可在被协调环境110内操作的客户端装置102a(例如,通过连接到被协调环境110的lan)向协调器114提交请求以修改装置影子以匹配期望的装置状态。该请求可以例如经由在客户端装置102a上执行的应用(例如,浏览器)提交,并且经由协调器114支持的任何数量的协议传输到协调器114。在(3)处,协调器114获得该请求,并且更新被协调装置112的装置影子以匹配所请求的装置状态的改变。

在(4)处,协调器114向被协调装置112通知对应装置影子的改变。说明性地,协调器114可以经由mqtt协议向被协调装置112传输通知,通知新消息(装置影子的内容)已经被发布到由被协调装置112订阅的主题(装置影子的标识符)。

在(5)处,被协调装置112更新其当前状态以匹配更新的装置影子。例如,在被协调装置112是开关或灯泡的情况下,被协调装置112可以打开或关闭以匹配期望状态。因此,通过使用装置影子,协调器114可以促进对被协调装置112的操作的改变。

参考图8,将描述用于处理在协调器114上执行任务的调用的说明性交互。具体而言,图8的交互可以由协调器114的调度器256执行,该调度器将执行任务的调用排队到工作项队列内,并且基于从资源管理器254获得的协调器114的计算资源的状态从队列中选择工作项进行处理。

图8的交互开始于(1),其中调度器256获得执行在图8中指定为“任务a”的任务的调用。该调用可包括例如任务的识别信息(例如,任务的全局唯一标识符),以及传递任务的参数或关于任务执行的其他信息(例如,指定任务的执行参数的标志)。在一些情况下,可以在调度器256处从生成调用的另一个进程或实体直接获得调用。例如,另一个进程或实体可以调用由调度器提供用于调用任务的api的函数。在其他情况下,可以经由通信管理器诸如图2的通信管理器260获得调用,该通信管理器可以用于获得第一格式(例如,http)的调用并将该调用传递给调度器256。

在接收到调用时,调度器256在(2)处将调用排队在工作项队列(以图形方式描绘为工作项队列802)中。为了说明的目的,图8中描述的工作项队列802已经被简化,并且因此仅包括对上述“任务a”的调用。然而,实际实施可以包括任意数量的工作项,这些工作项来自执行任务的任何数量的调用。

在(3)处,调度器256向资源管理器254传输请求,请求关于协调器114处的计算资源的可用性的信息,诸如在协调器114处可用(或者可用于执行任务的目的)的可用存储器的量、处理器周期、网络带宽等。资源管理器254可以在(4)处确定该信息,并且在(5)处将请求的信息返回给调度器256。在一些情况下,资源管理器254可以例如通过向协调器的操作系统查询可用的计算资源从而直接收集信息。在其他情况下,资源管理器254可以基于一组当前实施的执行环境推断可用计算资源。说明性地,资源管理器254可被配置为维护一组执行环境,在图8中以图形方式描绘为执行环境810。可以将每个执行环境分配为用于执行对应任务的环境。例如,协调器114可以当前在路由器任务环境812内执行路由器任务并且在影子服务环境814内执行影子服务任务。与工作项队列802一样,为了说明的目的,已经简化了执行环境810的图形描绘,并且实际实施可以包括与任意数量的任务相关联的任意数量的执行环境。资源管理器254可以被配置为将设定量的计算资源分配给执行环境810,并且将所述量的计算机资源的一部分分配给每个执行环境(该部分在一些情况下可以根据执行环境而变化)。例如,路由器任务环境812可以被分配1千兆字节的ram和10%的处理器周期,而影子服务任务环境814可以被分配2千兆字节的ram和5%的处理器周期。分配的计算资源的类型和量可以根据实施方案而变化。在(5)处,通过从在执行环境810上分配的总资源中减去分配给当前执行环境的计算资源,资源管理器254可以确定计算资源的可用性,并且将该信息返回给调度器256。在一些情况下,资源管理器254可以返回附加信息诸如执行环境810的当前状态以及任务是否在每个执行环境中主动执行。如下将所述,调度器可以在处理工作项队列802时利用该附加信息。

在(6)处,调度器256处理工作项队列802以确定哪些工作项(如果有)出队并进行处理。调度器256可以在处理工作项队列802时利用任意数量的调度算法,并且可以在执行调度算法时利用多个输入。例如,调度器256可以利用与执行环境810相关联的工作项队列802中的每个工作项的优先级以及当前执行任务的优先级。可以由例如任务的调用方、任务的作者或协调器114的管理员建立这些优先级。作为另一示例,调度器256可以利用计算资源的可用性确定哪些工作项要出队,以及用于处理排队工作项的计算资源的估计使用(例如,用于使项出队、将执行环境分配给经由工作项调用的任务并且在执行环境内执行该任务的计算资源的估计使用)。可以由例如任务的调用方、任务的作者或协调器114的管理员建立用于处理排队工作项的计算资源的估计使用。在一些情况下,可以自动建立用于处理排队工作项的计算资源的估计使用,诸如经由对应于工作项的代码的静态或动态分析、回顾用于使相同或类似工作项出队的历史计算资源使用等。在一些情况下,调度器256可以利用附加输入,诸如对应于工作项的任务当前是否正在协调器上执行。例如,调度器256可以被配置为仅允许给定任务的设定数量(例如,一个)的并发执行,并且因此如果任务的执行当前在执行环境810内是活动的,则可以拒绝处理对应于任务的工作项。因此,通过实施调度算法,调度器256可以获得执行任务的调用并且利用关于协调器114的状态的信息以选择处理这种调用的顺序和定时。因此,调度器256可以使得能够有序地处理执行任务的调用,即使所接收的调用的数量以其他方式将超过协调器114的计算资源。

参考与协调器114的执行环境810相关联的单个资源管理器254描述图8的交互。在一些实施方案中,调度器256可以与多个资源管理器254交互,以确定用于处理工作项队列802上的调用的计算资源的可用性,或者单个资源管理器254可以操作以监视多个装置(例如,协调器114和一个或多个被协调装置112)之间的资源可用性。说明性地,一个或多个被协调装置112可被配置为执行任务,并且可以提供资源管理器254(或者利用远程资源管理器254,诸如由协调器114提供的资源管理器)以监视被协调装置112上的计算资源的可用性,并且将该可用性报告给调度器256。然后,调度器256可以确定在被协调装置112上执行任务是否合适。在一些情况下,调度器256可被配置为在其中执行任务的执行环境的多个潜在位置之间进行选择(例如,在协调器114上或者在被协调装置112上)。说明性地,协调器114可以利用修改的调度算法分布用于在多个装置上执行的任务,其可以例如基于装置执行任务的能力(例如,根据装置的硬件、计算资源的可用性等)而改变。在一些情况下,根据分布式计算算法,多个协调器114(在相同的被协调环境110中或者跨不同环境110)可共同操作以执行任务。例如,跨多个协调器114的调度器256可以与具有额外计算容量的发现装置通信,并且将排队的工作项分布到此类装置。因此,图8的说明性示例(包括单个调度器256和资源管理器254)本质上旨在是说明性的。

参考图9,将描述用于从工作项队列中选择工作项并且执行与工作项对应的任务的说明性交互。图9的交互可以发生在例如图8的交互之后。这些交互开始于(1),其中调度器256从工作项队列802中选择工作项以进行处理。交互(1)可以例如根据调度器256实施的调度算法发生,如以上参考图9所讨论的。为了参考图9进行说明,将假设调度器256已经从工作项队列802中选择了对“任务a”的调用以进行处理。将进一步假设在协调器114处存在足够的计算资源以处理对任务a的调用。

在(2)处,调度器256向资源管理器254传输请求以生成与任务a相关联的执行环境。出于描述图9的目的,将假设不存在与任务a相关联的当前执行环境。因此,资源管理器254在(3)处确定与任务a相关联的执行环境所需的一组资源。资源可以包括例如计算资源的一部分,诸如处理器可用性和存储器。资源还可以包括数据资源诸如执行任务a所需的运行时818或驱动器和实用程序820。说明性地,在任务a对应于以给定编程语言(例如,python、go、java、javascript等)编写的代码的情况下,资源管理器254可以确定任务a的执行需要访问对应于该编程语言的运行时。在任务a对应于与协调器114的物理外围装置(诸如专用输入/输出装置)交互或管理所述物理外围装置的代码的情况下,资源管理器254可以确定任务a的执行需要访问与该物理外围装置相关联的库、驱动器或实用程序。在一个实施方案中,运行时、驱动器、实用程序或其他依赖项可以存储在任务本身的数据内(例如,在任务的容器的数据映像内)。因此,为执行环境810调配任务的数据可能足以向任务提供所有所需的依赖项。然而,在多个任务共享依赖项的情况(例如,多个任务利用相同驱动器、库、运行时等的情况),在单个任务的数据内包括依赖项可能是低效的。当协调器114具有与期望在协调器114上执行的任务数量相比有限的数据存储装置时,这可能尤其成问题。因此,在一些实施方案中,协调器114上的运行时818和驱动器和实用程序820可以存储在与执行环境810不同的协调器的存储器中。为了能够访问运行时818以及驱动器和实用程序820(或其他依赖项),资源管理器254可以为给定任务的执行环境提供对单独存储的那些运行时818以及驱动器和实用程序820(或其他依赖项)的访问。为了保持不同执行环境之间的安全性,可以限制执行环境之外的这种访问(例如,只读)。例如,在资源管理器254利用容器作为执行环境的情况下,可以向容器提供只读加载点或者到协调器114上的所需依赖项的位置的访问受限符号链接。因此,多个执行环境可以共享对给定依赖项的访问,并且相对于依赖项的单独和重复存储,可以减少协调器114的总数据存储使用。

在一些情况下,可以启用多个执行环境以共享对给定依赖项的只读访问,同时保持对该依赖项进行本地修改的能力。例如,协调器114在一些情况下可以利用联合加载(或者联合文件系统)以提供对公共存储器空间(例如,协调器114的底层文件系统)的只读访问和对本地存储器空间(例如,执行环境的一部分或与任务相关联的其他存储空间)的读取/写入访问,并且向执行环境呈现公共存储器空间和本地存储器的组合视图(“联合加载”)。具体而言,可以将本地存储器空间用作“上部”文件系统,并且可以将公共存储器空间用作“下部”文件系统。这样,对联合加载的写入可以相对于“上部”本地存储器空间发生,并且如果所请求的文件存在于“上部”本地存储器空间中,则从联合加载进行读取从“上部”本地存储器空间发生,或者如果所请求的文件不存在于本地存储器空间中,则上述读取从“下部”公共存储器空间发生。通过将whiteout数据写入“上部”本地存储器空间,联合加载可以提供删除“下部”公共存储器空间中的数据的明显能力,使得从联合加载访问数据的尝试失败,但是公共存储器空间上的底层数据无效。以这种方式,可以使多个执行环境能够访问公共数据集(例如,依赖项),同时保持在本地基础上修改和删除该公共数据集的明显能力。在一些情况下,可以利用联合加载提供写入协调器114的所有或基本上所有存储空间的明显能力。例如,联合加载可以利用根目录作为较低的公共存储器空间。在其他情况下,可以利用联合加载提供写入协调器114的少于所有存储空间的明显能力,诸如写入子目录或根目录中所有非隐藏文件的明显能力。因此,可以根据执行环境的要求修改提供给执行环境的数据。

在确定任务(在图9的示例中,任务a)的所需依赖项之后,资源管理器254在(4)处生成该任务的执行环境。如上所述,这样的执行环境是“容器”、操作系统级虚拟环境或“沙箱”环境诸如“chrootjail”或python虚拟环境“virtualenv”。如上所述,资源管理器254可以为执行环境调配执行任务所需的任何数据资源,包括对应于任务本身的代码(例如,从协调器114的数据存储装置或外部数据存储装置中检索的代码)、任务所需的任何运行时818以及任务所需的任何驱动器和实用程序820。生成的执行环境在图9中被描绘为任务a环境816。此后,在(5)处,资源管理器254可以通知调度器256已经创建了执行环境,并且向调度器256识别执行环境(即任务a环境816)。

继而,调度器256可以利用执行环境的识别信息调用在环境内执行任务。因此,在图9的交互中,调度器256可以向任务a环境816传输调用,以根据对任务的初始调用(例如,在调用被排队到工作项队列802之前)中包括的参数执行任务。因此,任务a可以在协调器114处在执行环境816内执行,以便执行与该任务相对应的代码的功能。

如上所述,在一些实施方案中,调度器256可以跨不同装置与多个资源管理器254通信以处理队列802的工作项,或者单个资源管理器254可以被配置为管理多个装置中的执行环境810。因此,在一些实施方案中,可以修改图9的交互以解决这种配置。例如,在调度器256与多个资源管理器254交互的情况下,调度器可以被配置为(例如,根据如上所述的调度算法)选择从中请求执行环境的适当资源管理器254,并且此后与适当资源管理器254交互以获得执行环境信息。作为另一示例,在调度器254与管理多个装置中的执行环境810的资源管理器254交互的情况下,资源管理器254可以被配置为在适当装置(例如,根据任务的要求和装置提供的资源选择的装置)上生成执行环境,并且返回识别执行环境的信息。因此,图9的交互可以根据被协调环境110的配置而变化。

参考图10,将描述用于处理工作项的队列(诸如在按需代码执行系统上执行任务的调用)的说明性例程1000。例程1000可以由例如在协调器114上执行的调度器256实施,如图2所示。

例程1000开始于框1002,其中调度器256获得工作项的队列。例如,每个工作项可以对应于在协调器114上执行给定任务的调用(例如,根据调用中指定的参数)。说明性地,工作项队列可以由调度器256维护和管理,使得在协调器114上执行的其他任务或软件可以将任务调用传递给协调器以将任务调用作为工作项排队到工作项队列上。

在框1004处,调度器256获得协调器114的计算可用性。计算可用性可以包括关于计算资源(处理器、存储器、带宽等)的可用性的任何量度。在一个实施方案中,直接从协调器114的操作系统接收计算可用性。在另一个实施方案中,从在协调器114上执行的应用诸如资源管理器接收计算可用性。框1004的实施还可以包括获得关于协调器114的状态的其他信息,诸如协调器114上的执行环境的状态、在那些执行环境中执行的一组任务等。

在框1006处,调度器256根据确定的计算资源可用性(以及可能的其他输入诸如在执行环境中执行的该组任务)将调度算法应用于工作项队列,以确定要出队并进行处理的一个或多个工作项。如上所述,调度器256可以在处理队列时使用任何数量的调度算法,诸如先进先出调度、最早截止时间优先调度、最短剩余时间调度、固定优先级抢占调度和轮询调度等。在一些情况下,调度算法还可以至少部分地基于由任务的作者、协调器的管理员、调用实体等分配给任务的优先级。

例程1000的实施在框1007处根据调度器256是否根据实施的调度算法确定是否将工作项从工作项队列中出队并且执行对应于该工作项的任务而变化。如果调度器256确定不应使工作项出队(例如,由于不存在足够的计算资源以执行由工作项调用的任务,并且工作项的优先级不保证为了创建更多可用计算资源而停止任何当前执行的任务),则例程1000返回到框1004,如上所述。

如果调度器256确定工作项应该出队,例如由于存在足够的计算资源以执行由工作项调用的任务,或者工作项的优先级保证使此类资源可用(例如,通过暂停当前正在执行的过程),则例程1000继续到框1008,其中调度器256获得在其中执行由工作项调用的任务的执行环境的识别信息。说明性地,调度器256可以通过向资源管理器发出请求以获得这样的识别信息,该资源管理器可以识别(并且潜在地生成)分配给给定任务的执行的执行环境,并且将执行环境的识别信息返回调度器256。下面将参考图11描述可由资源管理器实施以识别并潜在地生成执行环境的一个说明性例程。

在框1010处,调度器256将对应于出队工作项的执行任务的调用传递给在框1008处识别的执行环境。说明性地,执行环境可以(例如,借助资源管理器的动作)调配有对应于被调用任务的代码,以及这种代码的任何依赖项。因此,调度器256可以使调用到执行环境以执行代码,并且将与出队的工作项相关联的任何参数传递给代码。因此,调度器256可以使得工作项从队列中被处理。

例程100然后继续到框1012,其中该实施可以根据工作项队列的状态而改变。例如,在队列中存在更多工作项的情况下,例程1000可以返回到框1004,如上所述。在队列中不存在更多工作项的情况下,例程1000可以在框1014结束。

虽然出于说明性目的描述了例程1000的一种可能实施,但是本领域技术人员将理解,该例程1000的变型是可能的。例如,在一些情况下,例程1000可以实施为连续循环,使得只要调度器256操作它即执行。作为另一示例,例程的各个部分可以全部或部分并行运行,或者作为多个不同的例程运行。说明性地,第一例程可以操作以连续地获得资源可用性,而第二例程经由调度算法将当前已知的资源可用性应用于工作项队列,并且第三例程实施出队工作项的出队和处理(例如,获得执行环境并将调用传递给这样的环境)。因此,例程1000的框本质上旨在是说明性的。

参考图11,将描述一个说明性例程1100,用于识别并潜在地创建在其中执行任务的执行环境。例程1100可以由例如由协调器114执行的资源管理器254执行。

例程1100开始于框1102,其中资源管理器254获得对在其中执行任务的执行环境的请求。该请求可以例如根据工作项队列的处理从调度器获得,诸如上面参考图10所述。

在框1104处,资源管理器254确定要调配给执行环境的一组资源。资源可以包括例如计算资源(例如,处理器使用、存储器、带宽等)以及数据资源诸如运行时、驱动器、库或其他依赖项。例如,可以基于关于意图在执行环境中执行的任务的信息确定该组资源。例如,资源管理器254可以确定执行任务所需的一组资源(例如,由任务的作者、协调器的管理员、执行任务的调用的参数等所定义的),并且将该组资源识别为执行环境所需的资源。

在框1104处,资源管理器254确定现有执行环境是否可供利用。在一个实施方案中,资源管理器254可以仅在先前已经将现有执行环境分配用于执行该任务时利用环境来执行任务。在另一个实施方案中,资源管理器254可以在先前已经将现有执行环境分配用于执行类似任务(例如,在相同的任务类别内,诸如安全类别)时,或者当环境先前已经被调配同样需要在框1104中确定的资源时利用环境。

如果现有环境可用,则例程1100前进到框1106,其中资源管理器254根据需要更新现有执行环境以准备用于新任务执行的环境。说明性地,在框1104处所需的资源与当前调配给执行环境的资源不匹配的情况下,资源管理器254可以为环境调配附加所需的资源(并且潜在地移除对非所需资源诸如不使用的驱动器、实用程序、库等的访问)。资源管理器254可以进一步刷新或“清理”执行环境,以确保在先前任务执行期间对执行环境的改变不影响后续执行。例如,资源管理器254可以清理执行环境内的环境变量,或者清理与执行环境相关联的数据高速缓存或临时文件目录。此后,例程1100前进到框1114,其中响应于该请求诸如向调度器返回执行环境114的识别信息(例如,名称、定位符等)。例程1100然后在框1116结束。

返回到框1104,如果现有执行环境不可用,则例程1100前进到框1108,其中资源管理器254确定是否需要回收资源以生成新的执行环境。说明性地,在框1104处确定的所需计算机资源超过协调器的可用计算资源的情况下,资源管理器254可以确定应该通过停止或暂停现有执行环境来回收计算资源。在这种情况下,例程1100前进到框1110,其中资源管理器254停止另一个活动执行环境。例如,资源管理器254可以将调用或中断传递给在另一活动执行环境中执行的线程,指示执行环境将被暂停。这样的调用或中断可以使线程保存其状态,使得线程可以在稍后的时间点(例如,当计算资源可用性增加时)恢复。在其他情况下,资源管理器254可以操作以保存另一执行环境的状态。在一个实施方案中,可以例如通过获取另一执行环境的快照图像将执行环境的状态保存到协调器的存储器中。在另一个实施方案中,可以经由装置影子保存另一执行环境的状态。说明性地,在另一执行环境中执行的任务可以被协调器视为“装置”,并且与装置影子相关联。可以将另一执行环境的状态诸如环境内的变量的当前值和执行位置保存到装置影子中。因此,可以通过引用装置影子和保存值恢复在另一执行环境中执行的任务。在‘700申请中更详细地描述了装置影子的使用,该申请在上文通过引用并入。

通过停止另一执行环境,资源管理器254可以回收计算资源以供新生成的执行环境使用。例程1110然后返回到框1008,其中确定是否应该回收附加的资源。然后,例程1100可以继续在框1108和1110之间循环,直到不应该回收附加的资源(例如,直到存在足够的资源以分配给新的执行环境)。例程1100然后前进到框1112。

在框1112处,资源管理器254基于如在框1104处所确定的所需资源生成新的执行环境。如上所述,执行环境可以包括分配给任务执行的存储器的任何逻辑部分,诸如“容器”、操作系统级虚拟化环境或“沙箱”环境,诸如“chrootjail”或python虚拟环境virtualenv”。因此,在框1104处,资源管理器254可以通过指定存储器的一部分用于执行任务,并且为存储器的该部分分配所需资源以生成这样的执行环境。说明性地,资源管理器254可以为执行环境调配所需数据资源,诸如通过将数据资源复制到执行环境中或者修改执行环境,使得提供对执行环境外部的数据资源的访问(例如,通过在执行环境内放置指向外部数据资源的只读加载点)。

此后,例程1110前进到框1114,其中资源管理器254将资源环境的识别信息返回请求实体诸如调度器。例程1110然后在框1116结束。

参考图12,将描述一组说明性交互,用于利用通信管理器260使得协调器114上的第一任务执行能够调用第二任务执行。交互可以发生例如使得执行第一任务能够检测到被协调环境110的状态满足给定条件,并且响应于该条件调用执行第二任务以采取动作(例如,响应于检测到一天中的时间、居住者离开等,向被协调装置112诸如灯传输消息,以改变状态)。如上所述,使用通信管理器260来促进这些任务内通信可有助于提供异步通信的稳健处理,并且能够在任务间通信或执行任务的调用中使用各种不同协议。

交互开始于(1),其中在图12中表示为任务a1202的第一任务生成调用消息,调用协调器114上的任务执行。调用消息可以是通信管理器支持的任何格式,并且可以指定例如要传递给任务执行的参数或关于所请求的执行的元数据(诸如分配给执行的优先级)。在一个实施方案中,调用消息是http请求消息。在一些情况下,调用消息可以诸如经由任务的唯一标识符指定要被调用的任务。在其他情况下,可以通过使用调用消息的目的地(例如,消息被传输到的uri)而不是经由消息本身的内容指定要被调用的任务。消息所使用的请求方法可以指定相对于消息采取的期望动作。例如,可以利用httppost请求来请求任务的执行,而其他请求方法可以与其他功能相关联(例如,可以利用httpget请求来请求来自任务的输出,如下面将参考图13描述的)。说明性地,可以至少部分地经由对任务a1202的库或其他代码依赖项的调用促进在任务a1202处生成调用消息,其可以由协调器114的提供商创作(例如,与协调器114的最终用户、任务a1202的作者等相反,其可能不同于协调器114的提供商)。例如,任务a1202可以使用软件开发工具包生成,这使得任务a1202包括提供“执行任务”函数的库,当被调用时,将生成用于传输到通信管理器260的调用消息。

在(2)处,任务a1202将调用消息传输到与通信管理器260相关联的uri。说明性地,通信管理器260可以实施在协调器114的指定端口上监听请求的http服务器,并且任务a1202可以向uri传输调用消息,该uri包括协调器114以及指定端口的网络地址或域名(例如,“localhost:8888”)。在一些情况下,uri还可以包括要调用的任务的识别信息。例如,协调器114上的每个任务可以与协调器114上的不同资源路径相关联,使得任务a1202与路径“/task_a”相关联、任务b与路径“/task_b”相关联等。因此,通过将调用消息传输到与被调用任务相关联的路径,可以向通信管理器260通知被调用的任务。在图12的说明性示例中,假设任务a1202的执行需要调用任务b的执行。因此,任务a1202的执行可以将调用消息传输到与任务b相关联的uri诸如“localhost:8888/task_b”。如上所述,用于传输调用的请求方法可以指定关于被调用任务的期望动作。例如,对与任务相关联的uri的“post”方法请求可以指示发起任务的执行的期望(例如,根据请求中包括的参数或元数据)。

在(3)处,在接收到调用消息时,通信管理器260识别对应于调用消息的被调用任务。说明性地,通信管理器260可以维护将调用消息的路径或uri(例如,“localhost:8888/task_b”或“/task_b”)与协调器114上的任务的对应标识符(例如,名称“任务b”或对应于任务的唯一标识符,例如由调度器256使用的)相关联的映射或其他信息。此后,在(4)处,通信管理器260可以根据调用消息的内容生成对所识别的任务的调用(例如,利用包括在调用消息中的参数,指定包括在调用消息内的执行参数或元数据等)。然后,通信管理器260可以将任务调用传输到调度器256以置于工作项队列800中。调度器256然后可以例如根据图8和图9的交互导致被调用任务的执行。说明性地,通信管理器260可以通过使用编程接口(例如,api)生成并向调度器256传输任务调用。例如,通信管理器260可以调用对应于代码的函数以将任务调用传递给调度器256,其中函数的参数指定要传递给任务执行的参数、用于处理调用的参数(例如,优先级)等。在一些情况下,生成的调用可以包括执行标识符,其可用于跟踪对应于调用的任务执行。执行标识符可以对应于例如分配给调用的唯一号码或字母数字串,并且可用于(例如)报告对应于调用的任务执行的输出或结果,如下面参考图13所讨论的。在一个实施方案中,执行标识符由通信管理器260分配给调用。在另一个实施方案中,执行标识符由调用任务诸如任务a1202分配给调用。

在(6)处,通信管理器260还可以向调用任务任务a1202返回确认。确认可以例如指示通信管理器260接收并成功处理了调用消息,并且因此执行任务的调用已经被传输到调度器256并且被置于工作项队列800上。在其他情况下,确认可以指示调用消息的非成功处理,诸如在消息中检测到错误,在由通信管理器260处理消息时检测到错误,或者由调度器256处理消息时检测到错误。确认消息还可以包括对应于调用消息的执行标识符(例如,在通信管理器260已经分配了执行标识符的情况下)。

虽然关于图12描述了说明性的交互,但是本公开的实施方案可以包括附加的或另选的交互。例如,通信管理器260在一些情况下可以验证调用消息,诸如通过根据许多已知的认证消息中的任何一个来认证调用消息。如上所述,在一些实施方案中,通信管理器260可以根据多个协议(或相同协议的多个版本)启用调用消息的传输。此外,通信管理器260在一些情况下可以实现调用消息或其他信息的安全传输,诸如通过在安全套接字层(ssl)/传输层安全性(tls)上实施http,在本领域中称为“https”。

除了使第一任务执行能够传输第二任务执行的请求之外,使第一任务执行能够获得第二任务执行的结果或输出可能是有益的。例如,第一任务的执行可以传输对第二任务(诸如与被协调装置112交互并获得该装置112的状态的任务)的执行的调用。因此,第一任务的执行可以受益于从第二任务的执行接收到装置112的状态。如在上面讨论的图12的交互中,任务执行之间的数据传输可能会引起困难,诸如语言之间的不兼容性或与异步执行相关联的延迟。因此,通信管理器260可以进一步使得能够将任务的输出或结果(例如,第二任务的执行)提供给调用任务(例如,第一任务的执行)。

将参考图13描述使用通信管理器260提供任务执行的输出或结果的交互。具体而言,图13的交互可以使得被标识为图13的任务b1204的任务执行能够向被标识为图13的任务a1202的调用任务执行报告执行的输出或结果。在一些情况下,图13的交互可以在任务a1202传输执行任务b1204的请求之后发生。在图13的说明性示例中,出于说明性目的描绘了一种交互的潜在排序,其中在通信管理器260处接收到输出之前,任务a1202向通信管理器260传输请求,以从任务b1204获得输出。例如,在任务a1202和通信管理器260利用http“长轮询”的情况下,可发生这种交互的排序,其中任务a1202通过这种技术发起与通信管理器260的http连接,而不需要立即响应,使得通信管理器260可以使用现有http连接通知任务a1202新的信息(例如,任务b1204的输出)。其他交互排序是可能的。例如,任务a1202可以在通信管理器260已经获得任务b1204的输出之后向通信管理器260传输请求以获得该输出,在这种情况下,通信管理器260可以立即响应于该请求。作为另一示例,在一些实施方案中,通信管理器260可以利用“推送”通信机制向任务a1202通知任务b1204的输出,而不需要任务a1202发起与通信管理器260的连接。因此,图13中描绘的排序本质上旨在是说明性的。

在(2)处,任务a1202将响应请求消息传输到通信管理器260。说明性地,在响应请求消息是http消息的情况下,可以将消息传输到与通信管理器260相关联的uri(例如,“localhost:8888”)。在一些情况下,响应请求消息可以包括标识从中寻求输出的任务执行的执行标识符。例如,响应请求消息可以包括执行标识符作为http消息内的报头,该http消息寻址到与从中请求输出的任务相关联的uri。在其他情况下,向其传输消息的uri可以包括执行标识符作为uri内的路径的一部分。例如,可以将对应于执行标识符“1”的任务执行的输出请求传输到“http://localhost:8888/1”,其中执行标识符在协调器114处的任务之间是唯一的。在执行标识符在任务之间不是唯一的情况下,或者当以其他方式需要时,从中请求输出的任务的标识符也可以包括在uri路径中。例如,对“任务b”的执行“1”的输出的请求可以被传输到“http://localhost:8888/task_b/1.”。该请求可以说明性地包括用于在通信管理器260处处理请求的参数,诸如请求的超时时段,使得如果通信管理器260在超时时段内没有获得响应,则错误消息被返回到任务a1202。在一些情况下,该请求可以包括指定通信管理器260响应于该请求何时以及是否应该将信息返回任务a1202的标准,诸如仅在任务b1204的输出符合指定标准(例如,绝对值、阈值、值范围等)时通知任务a1202。如上所述,响应请求消息的传输可以根据http长轮询技术发生,使得保持任务a1202和通信管理器260之间的连接,而不需要通信管理器260立即响应于该消息。

在图13的说明性示例中,在(3)处,任务b1204生成输出。输出可以是通过执行对应于任务b1204的代码生成的任何数据,诸如处理传递给任务b1204的输入的结果(例如,作为执行任务b1204的调用的一部分)、在任务b1204执行期间从被协调装置112获得的数据(例如,其中任务b1204对应于与被协调装置112交互的代码)等。在(4)处,使用分配给任务b1204的执行的执行标识符将输出传输到通信管理器260。说明性地,可以利用httppost方法将任务b的输出作为http请求传输,其中内容包括输出。在一个实施方案中,该请求可以包括对应于生成输出的任务的执行标识符(例如,作为请求的报头)。请求可以被传输到与执行标识符和/或与任务b1204相关联的uri,其可以匹配上面关于交互(2)所讨论的uri(例如,“http://localhost:8888/1”或“http://localhost:8888/task_b”)。

在(5)处,通信管理器260将由任务b1204提供的输出与由任务a1202传输的请求消息进行匹配,诸如通过检测两个消息都被传输到公共uri并且包括公共执行标识符(例如,uri内或报头字段内)。在(6)处,通信管理器生成对任务a1202的请求消息的响应,包括由任务b1204提供的输出。在图13所描绘的实施方案中,其中在交互(2)处传输的响应请求消息表示http长轮询技术的实施,在交互(6)处生成的响应可以是对交互(2)的请求消息的响应。在其他实施方案中,交互(6)可以包括生成独立传输的消息(例如,到任务a1202的“推送”消息)。

在(7)处,在通信管理器206处生成的响应(包括任务b1204的输出)被传输到任务a1202。因此,任务a1202可以获得由任务b1204生成的输出,并且可以启用任务内通信。如将从以上描述中理解的,使用通信管理器260实现任务内通信可以包括许多益处。例如,每个任务(例如,任务a1202和任务b1204)可以经由不同协议或相同协议的不同版本与通信管理器260通信。此外,图13中描绘的任务内通信不依赖于任务的特定语言,并且可以在用不同语言编写的任务之间进行,只要每种语言都可以实施通信管理器260支持的协议。另外,通信管理器260的功能不依赖于任务内通信的内容(例如,消息主体),而是可以仅基于传输通信的地址或与通信相关联的报头值来操作。以这种方式,任务能够传输任何格式的数据,而不需要改变通信管理器260的功能。此外,本文描述的通信管理器260可以代表任务实施各种功能,使得那些任务不需要自己实施那些功能。例如,通信管理器206可以认证与一个或多个任务的通信,验证来自任务的请求,并且实施关于请求的超时或错误控制(例如,以实现稳健的异步调用)。在一些情况下,通信管理器260可以实施“服务质量”保证,诸如通过重新传输与任务的失败通信以确保任务接收和处理通信。因此,通信管理器260相对于各个任务执行之间的直接通信提供了显著优点。

参考图14,将描述说明性跨任务通信例程1400。例程1400可以例如由通信管理器260实施,以实现协调器114上的任务执行之间的通信。

例程1400开始于框1402,其中通信管理器260获得寻址到与任务相关联的uri的调用消息。说明性地,调用消息可以是对uri的httppost请求,所述uri包括协调器114的域名、与由通信管理器260实施的http服务器相关联的端口以及与被调用任务相关联的路径(例如,采用“http://<domain>:<port>/<path>”的格式)。在框1403,通信管理器260获得将与调用相关联的执行标识符,该执行标识符可以被用来(如下所述)返回到调用实体诸如调用任务、对应于调用的执行的输出或结果。在一个实施方案中,执行标识符在调用消息内传输(例如,作为post请求的内容)。在另一个实施方案中,执行标识符由通信管理器260分配给调用,并且可以返回到调用实体(例如,作为对post请求的确认或响应的一部分)。

在框1404处,响应于调用消息,通信管理器260基于调用消息被传输到的uri确定要被调用的任务。例如,通信管理器260可以维护将uri(例如,“/task_identifier”)的路径关联到协调器114处维护的特定任务(例如,“任务x”)的映射或其他信息。因此,响应于调用消息,通过检查传输调用消息的路径,通信管理器260可以确定要调用的任务。

在框1406处,通信管理器260生成执行在框1404中识别的任务的调用,并且将调用传输到协调器114的调度器(如上所述,调度器可以用于排队调用并且使得根据工作项队列执行被调用任务)。说明性地,该调用可以包括要传递给任务的执行的参数,或者关于应该如何执行任务的参数(例如,分配给执行的优先级)。例如,可以从在框1402处获得的调用消息获得这样的参数。该调用还可以包括在框1403处获得的与调用相关联的执行标识符,使得由调用发起的任务执行可以通过引用执行标识符向通信管理器260报告调用的结果。

在框1408处,通信管理器260通过引用执行标识符获得关于对应于调用的任务执行的输出或其他数据。说明性地,输出可以作为httppost消息传输到对应于通信管理器260的服务器,寻址到包括执行标识符的路径,并且包括对应于输出的内容。在另一个实施方案中,输出可以作为httppost消息传输,其中内容包括执行标识符。

在框1410处,通信管理器260将输出返回到调用消息的源。在一个实施方案中,通信管理器260可以返回输出作为对该输出请求的响应,其中该请求包括执行标识符。例如,通信管理器260可以返回输出作为对传输到uri的包括执行标识符的httpget方法消息的响应。在另一个实施方案中,通信管理器260可以向从其接收到调用消息的实体独立地(例如,作为“推送”通知)传输输出。虽然在图14中描述了返回到调用消息的源,但是通信管理器260可以另外或另选地将输出返回到另一个目的地。例如,在通信管理器260处接收的调用消息或另一通信(例如,引用执行标识符的另一通信)可以指定对应于执行标识符的输出的另选目的地,并且例程1400可以包括将输出返回到该另选目的地。说明性地,另选目的地的使用可以实现任务之间的输出的重新路由。例如,第一任务可以调用第二任务的执行,并且将先前建立的执行标识符(例如,对应于第三任务的执行)作为参数传递给第二任务。然后,第二任务可以利用执行标识符以获得第三任务的输出,即使第二任务最初不负责调用第三任务的执行。因此,将输出返回到调用消息源只是输出的一个可能目的地。在返回输出之后,例程1400可以在框1412处结束。

参考图15,描绘了用于在按需代码执行环境150上执行的任务和在协调器114上执行(或将要执行)的任务之间实现任务内通信的说明性交互。如上所述,在一些情况下(并且在某些配置下),在按需代码执行环境150处执行的任务可能难以与协调器114通信。例如,协调器114可以不与公共可寻址网络相关联,可以受制于限制从被协调环境120外部建立到协调器114的通信的安全策略,或者可以不保持与按需代码执行环境150的可靠通信(例如,在与按需代码执行环境150通信时可能受制于高网络延时或传输错误)。为了解决这些困难,协调器114可以实施在协调器114上执行的远程接口任务1202,以连续地、间歇地或周期性地从按需代码执行系统检索请求,从而在协调器114上执行任务,并且将这种执行的结果报告给按需代码执行环境150。

图15的交互开始于(1),其中按需代码执行环境150获得在协调器114执行任务的调用。说明性地,该调用可以通过在按需代码执行环境150处执行的任务获得,或者通过(例如,经由按需代码执行环境150的api)向按需代码执行环境150传输调用的客户端装置102获得。该调用可以包括例如要调用的任务的识别信息,以及在其上执行任务的协调器114的识别信息。在一些情况下,该调用还可以包括其他信息,诸如在执行之前或期间传递给任务的参数,或者用于控制任务如何执行的参数(例如,任务的优先级)。要调用的任务的识别信息可以包括例如协调器114上、按需代码执行环境150上或两者上的任务的名称或其他标识符。协调器114的识别信息可以包括例如协调器114的名称或其他标识符,或者协调器114在其中操作的被协调环境110的名称或其他标识符(例如,在这样的环境110中仅包括单个协调器114的情况下)。在一些情况下,协调器114的识别信息可以包括按需代码执行环境150上与协调器114相关联的账户的指定。

在(2)处,按需代码执行环境150识别应向其传输调用的协调器114。说明性地,按需代码执行环境150可以从调用中提取协调器114的识别信息,以便确定应该向其传输调用的特定协调器114。此后,在(3),按需代码执行环境150将调用排队到调用队列中等待供协调器114检索。说明性地,按需代码执行环境150可以为启用用于从按需代码执行环境150获得任务调用的每个协调器114生成等待传输到协调器114的调用队列。因此,按需代码执行环境150可以将当前获得的调用置于对应于目的地协调器114的队列上。在一些情况下,按需代码执行环境150可以根据先进先出调度算法操作队列。在其他情况下,按需代码执行环境150可以将其他调度算法(诸如上面讨论的那些)应用于队列。

在(4),在协调器114上执行的远程接口任务1202将请求传输到按需代码执行环境150,以检索在按需代码执行环境150中排队的任务调用。根据本文描述的实施方案,远程接口任务1202可以被实施为协调器114处的任务。说明性地,远程接口任务1202可以对应于可执行以连续地、间歇地或周期性地与按需代码执行环境150交互,以检索在按需代码执行环境150处排队的任务调用以供在协调器114上执行的代码。在一个实施方案中,检索任务调用的请求可以是寻址到按需代码执行环境150的uri的http请求(例如,get方法请求)。说明性地,uri可以包括由按需代码执行环境150指定为对应于协调器114的路径。

在(5)处,按需代码执行环境150响应于请求将排队的调用返回到远程接口任务1202。在一个实施方案中,按需代码执行环境150可以将所有排队的任务调用返回到协调器114。在另一个实施方案中,按需代码执行环境150可以仅包括来自协调器114的每个请求的阈值数量的排队任务调用(例如,来自队列的最高排序的调用,或者最高排序的n个调用)。

在(6)处,远程接口任务1202生成对应于从按需代码执行环境150检索的调用的调用消息。在一个实施方案中,协调器114可以根据协调器114使用的格式,利用来自检索到的调用的信息生成新调用。例如,如上所述,协调器114可以包括通信管理器260,其被配置为根据给定格式获得执行任务的调用(例如,作为寻址到uri的httppost请求,所述uri识别被调用任务并且包括关于任务执行的参数作为请求内容)。因此,远程接口任务1202可以利用来自检索到的调用的信息(例如,由按需代码执行环境150传输的http包的内容)根据通信管理器260使用的格式生成新调用。在另一个实施方案中,按需代码执行环境150可以被配置为将任务调用作为封装的数据包返回,使得其可以是被解封装的远程接口任务1202并且在协调器114内传输,而不需要独立生成新调用。

在(7)处,协调器114将调用传输到通信管理器260。可以根据上述实施方案传输调用(例如,作为寻址到识别被调用任务的uri的httppost请求)。此后,通信管理器260可以操作以使得调用在协调器114的工作项队列上排队,并且在协调器114的执行环境中执行。上面参考图8至图13描述了用于处理执行任务的调用的交互。因此,经由图15的交互,按需代码执行环境150可以操作以使得在协调器114上执行任务。

虽然在图15中描绘了经由按需代码执行环境150使用远程接口任务1202在协调器114上发起任务执行的说明性交互,但是在一些情况下,远程接口任务1202可以实施附加功能。例如,远程接口任务1202可操作以获得协调器114处任务执行的输出或结果(例如,根据图13的交互),并且将这样的输出或结果返回到按需代码执行环境150。说明性地,该输出或结果可以返回到按需代码执行环境150并且包括任务的执行标识符(其可以例如由调用实体或按需代码执行环境150分配)。按需代码执行环境150可以进一步用于将输出或结果返回到调用实体,类似于上面参考图13所描述的。

参考图16,将描述说明性外部任务调用例程1600。例程1600可以例如通过按需代码执行环境150(例如,经由按需代码执行环境150的前端152)实施。例程1600开始于1602,其中按需代码执行环境150为协调器114生成任务调用队列。任务调用队列可以实施为按需代码执行环境150的存储器内的逻辑结构,并且被配置为存储在协调器114处执行任务的调用。任务调用队列可以与资源标识符诸如uri相关联,以使装置能够请求在队列对应的协调器114上执行任务。

在框1604处,按需代码执行环境150获得在协调器114上执行任务的调用。该调用可以例如经由按需代码执行环境150的api获得,并且可以由客户端装置102、在按需代码执行环境150上执行的任务、在协调器114上执行的任务或者其他装置生成。该调用可以包括要传递给任务的参数,或者关于任务的执行的参数(例如,优先级)。

在框1606处,按需代码执行环境150将调用排队到对应于任务要在其上执行的协调器114的任务调用队列中。在一些情况下,按需代码执行环境150可以在将调用置于队列之前采取附加动作,诸如验证调用(例如,以确保其包括适当的认证信息、格式化等)或分配执行标识符给调用。然后,在框1608处,按需代码执行环境150可以将调度算法应用于队列,以根据确定的排序对队列内的调用进行排序。调度算法可以包括例如加权循环算法。

在框1610处,按需代码执行环境150从协调器114获得请求以提供在对应于协调器114的队列上的调用。例如,可以通过在协调器114上执行的远程接口任务生成该请求。在一个实施方案中,该请求是寻址到对应于该队列的uri的httpget方法请求。

此后,在框1612处,按需代码执行环境150根据调度算法根据队列的排序传输队列中的调用。在一个实施方案中,按需代码执行环境150可以将所有排队的调用传输到协调器114。在另一个实施方案中,按需代码执行环境150可以响应于给定请求仅向协调器114传输阈值数量(例如,一个)调用,并且协调器114可以传输多个请求以接收排队的调用。说明性地,调用的传输可以包括将调用封装成适于通过公共网络(例如,网络104)传输到协调器的格式,使得调用可以在协调器114处解封装并且传输到协调器114的通信管理器,而无需独立地重新创建调用。因此,协调器114可以(例如,经由远程接口任务)获得执行任务的调用,如提交给按需代码执行环境150。此后,协调器114可以根据上述实施方案处理调用,以便承担期望的功能诸如管理被协调装置112的操作。然后,例程1600可以在框1614处结束。

如上所述,按需代码执行环境150在一些情况下可以实施附加功能,诸如检索在协调器114上执行的任务的输出。在这种情况下,可以修改例程1600以包括附加元素,或者可以由按需代码执行环境150实施新例程以便于检索在协调器114处执行的任务的输出。例如,按需代码执行环境150可以等待通过远程接口任务(例如,作为寻址到包括任务的执行标识符的uri的httppost方法请求)递送到按需代码执行环境150的任务输出的报告。然后,按需代码执行环境150可以将输出的通知传输到调用实体(例如,作为“推送”通知),或者可以存储输出,使得调用实体可以通过(例如,经由寻址到包括任务的执行标识符的uri的httpget方法请求)从按需代码执行环境150请求输出从而检索输出。因此,在一些情况下,按需代码执行环境150可以与协调器114的通信管理器类似地操作。在其他实施方案中,按需代码执行环境150可以排除这种功能,并且在协调器114上执行的远程接口任务可以经由其他机制报告任务执行的输出,诸如将这种输出存储在可经由网络104访问的附网存储系统上。

本公开的各种示例性实施方案可以通过以下条款描述:

条款1.一种远程配置管理被协调装置的操作的协调器计算装置的系统,所述系统包括:

非暂时数据存储区,其包括所述协调器计算装置的装置影子,所述装置影子指示所述协调器计算装置的期望配置的版本标识符;

部署装置,其与所述非暂时数据存储区通信,所述部署装置包括配置有计算机可执行指令的处理器,所述计算机可执行指令用于:

获得所述协调器计算装置的配置信息,所述配置信息指示将由所述协调器计算装置管理的一个或多个被协调装置以及将由所述协调器计算装置执行以管理所述一个或多个被协调装置的一个或多个任务,其中所述一个或多个任务的各个任务对应于可由所述协调器计算装置执行的代码,并且其中所述配置信息进一步指定事件流表,所述事件流表指示用于确定所述协调器计算装置响应于从所述一个或多个任务的执行获得的消息要采取的动作的标准;

生成包括所述配置信息的配置包,其中所述配置包与附加版本标识符相关联;

修改所述装置影子以指示所述期望配置对应于所述附加版本标识符;

通知所述协调器计算装置所述修改的装置影子;

从所述协调器计算装置获得对所述配置包的请求;并且

向所述协调器计算装置传输所述配置包,其中所述协调器计算装置被配置为利用所述配置包检索所述配置包内指示的将由所述协调器计算装置执行以管理所述一个或多个被协调装置的

所述一个或多个任务。

条款2.如条款1所述的系统,其中所述处理器进一步配置有计算机可执行指令以获得所述协调器计算装置对与所述装置影子对应的主题的订阅,并且其中所述处理器被配置为向所述协调器计算装置通知所述修改的装置影子作为所述主题的发布的通知。

条款3.如条款2所述的系统,其中经由mqtt协议传输所述通知。

条款4.如条款1所述的系统,其中所述被协调装置包括通用计算装置、薄型装置或与另选主要功能相关联的嵌入装置中的至少一个。

条款5.如条款1所述的系统,其还包括所述协调器计算装置,其中所述协调器计算装置包括处理器和存储器,其被共同配置为管理所述被协调装置的状态。

条款6.一种计算机实施的方法,其包括:

获得协调器计算装置的注册,其中所述协调器计算装置与被协调环境相关联,所述被协调环境包括要由所述协调器计算装置管理的一个或多个被协调装置;

为所述协调器计算装置生成装置影子,所述装置影子指示所述协调器计算装置的期望配置的版本标识符;

获得所述协调器计算装置的配置信息,所述配置信息指示将由所述协调器计算装置执行以管理所述一个或多个被协调装置的一个或多个任务,其中所述一个或多个任务的各个任务对应于可由所述协调器计算装置执行的代码;

生成包括所述配置信息的配置包,其中所述配置包与附加版本标识符相关联;

修改所述装置影子以指示所述期望配置对应于所述附加版本标识符;

通知所述协调器计算装置对所述装置影子的修改;

从所述协调器计算装置获得对所述配置包的请求;并且

向所述协调器计算装置传输所述配置包,其中所述协调器计算装置被配置为利用所述配置包检索所述配置包内指示的将由所述协调器计算装置执行以管理所述一个或多个被协调装置的所述一个或多个任务。

条款7.如条款6所述的计算机实施的方法,其中所述配置包还包括事件流表,所述事件流表指示用于确定所述协调器计算装置响应于在所述协调器计算装置处从所述一个或多个任务的任务或所述一个或多个被协调装置的被协调装置中的至少一个获得的消息要采取的动作的标准。

条款8.如条款6所述的计算机实施的方法,其中所述配置包还包括要在所述被协调装置和所述协调器计算装置之间的通信中使用的安全证书。

条款9.如条款6所述的计算机实施的方法,其中所述配置包还包括将由所述协调器计算装置维护的一组装置影子的指示,所述一组装置影子中的各个装置影子对应于所述一个或多个被协调装置中的各个被协调装置。

条款10.如条款6所述的计算机实施的方法,其中获得所述协调器计算装置的所述注册包括获得所述协调器计算装置对与所述装置影子对应的主题的订阅,并且其中向所述协调器计算装置通知所述修改的装置影子包括向所述协调器计算装置传输关于所述主题的发布的通知。

条款11.如条款6所述的计算机实施的方法,其还包括:

从与所述协调器计算装置的用户相关联的客户端计算中获得所述一个或多个任务的至少一个任务;

响应于所述协调器计算装置处的所述配置包的处理,接收对所述至少一个任务的请求;并且

向所述协调器计算装置提供所述至少一个任务。

条款12.如条款6所述的计算机实施的方法,其还包括:

获得所述协调器计算装置的更新的配置信息;

从所述更新的配置信息生成更新的配置包,其中所述配置包与更新的版本标识符相关联;

修改所述装置影子以指示所述期望配置对应于所述更新的版本标识符;

通知所述协调器计算装置对所述装置影子的修改;

从所述协调器计算装置获得对所述配置包的请求;并且

将所述更新的配置包传输到所述协调器计算装置。

条款13.包括计算机可执行指令的非暂时计算机可读介质,当由部署系统执行时,所述计算机可执行指令使得所述部署系统:

为协调器计算装置生成装置影子,所述装置影子指示所述协调器计算装置的期望配置的版本标识符,其中所述协调器计算装置与包括将由所述协调器计算装置管理的一个或多个被协调装置的被协调环境相关联;

获得所述协调器计算装置的配置信息,所述配置信息指示将由所述协调器计算装置执行以管理所述一个或多个被协调装置的一个或多个任务,其中所述一个或多个任务的各个任务对应于可由所述协调器计算装置执行的代码;

修改所述装置影子以指示所述期望配置对应于所述附加版本标识符;

通知所述协调器计算装置所述修改的装置影子;

从所述协调器计算装置获得对所述配置包的请求;并且

向所述协调器计算装置传输所述配置包,其中所述协调器计算装置被配置为利用所述配置包检索所述配置包内指示的将由所述协调器计算装置执行以管理所述一个或多个被协调装置的所述一个或多个任务。

条款14.如条款13所述的非暂时计算机可读介质,其中所述计算机可执行指令进一步使得所述部署系统:

获得对应于所述一个或多个任务的可执行代码,其中所述一个或多个任务包括:

所述协调器计算装置可执行的第一任务,用于为所述一个或多个被协调装置的各个被协调装置生成装置影子;以及

所述协调器计算装置可执行的第二任务,用于路由寻址到所述一个或多个被协调装置中的至少一个或者所述一个或多个任务中的至少一个的消息;

从所述协调器计算装置获得对所述一个或多个任务的请求;并且

将所述一个或多个任务传输到所述协调器计算装置。

条款15.如条款14所述的非暂时计算机可读介质,其中所述一个或多个任务还包括可由所述协调器计算装置执行的第三任务,用于根据与所述任务相关联的协议实现通信。

条款16.如条款14所述的非暂时计算机可读介质,其中所述配置包还包括将由所述协调器计算装置维护的一组装置影子的指示,所述一组装置影子中的各个装置影子对应于所述一个或多个被协调装置中的各个被协调装置。

条款17.如条款14所述的非暂时计算机可读介质,其中所述计算机可执行指令进一步使得所述部署系统获得所述协调器计算装置对与所述装置影子对应的主题的订阅,并且其中所述计算机可执行指令使得所述部署系统通过向所述协调器计算装置传输关于所述主题的发布的通知向所述协调器计算装置通知所述修改的装置影子。

条款18.如条款14所述的非暂时计算机可读介质,其中所述计算机可执行指令进一步使得所述部署系统:

从与所述协调器计算装置的用户相关联的客户端计算中获得所述一个或多个任务的至少一个任务;

响应于所述协调器计算装置处的所述配置包的处理,接收对所述至少一个任务的请求;并且

向所述协调器计算装置提供所述至少一个任务。

条款19.如条款14所述的非暂时计算机可读介质,其中所述计算机可执行指令进一步使得所述部署系统:

获得所述协调器计算装置的更新的配置信息;

从所述更新的配置信息生成更新的配置包,其中所述配置包与更新的版本标识符相关联;

修改所述装置影子以指示所述期望配置对应于所述更新的版本标识符;

通知所述协调器计算装置对所述装置影子的修改;

从所述协调器计算装置获得对所述配置包的请求;并且

将所述更新的配置包传输到所述协调器计算装置。

条款20.如条款14所述的非暂时计算机可读介质,其中所述一个或多个任务中的至少一个任务可在所述协调器计算装置上和在不同于所述协调器计算装置的按需代码执行系统内执行。

条款21.一种用于管理协调器计算装置内的资源的系统,所述协调器计算装置被配置为管理被协调环境内的一个或多个被协调装置,所述系统包括:

包括对应于以下项的计算机可执行指令的非暂时数据存储区:

调度器,当被执行时,实施调用队列以在所述协调器上执行一个或多个任务,其中所述一个或多个任务的各个任务对应于所述协调器计算装置可执行以管理所述被协调环境内的所述一个或多个被协调装置的操作的代码;

资源管理器,当被执行时,生成在其中执行所述一个或多个任务的执行环境;

处理器,其与所述非暂时数据存储区通信并且被配置为执行所述调度器,其中所述调度器的执行使得所述处理器:

将一组任务调用排队到所述队列内,各个任务调用对应于执行所述一个或多个任务的任务的调用;

从所述资源管理器获得所述协调器上的计算资源的可用性;

至少部分地基于计算资源的所述可用性将调度算法应用于所述队列,以选择所述一组任务调用的至少一个任务调用以进行处理;

指示所述资源管理器选择在其中执行对应于所述至少一个任务调用的任务的执行环境;并且

在所述执行环境内执行对应于所述至少一个任务调用的所述任务;

其中所述处理器被进一步配置为执行所述资源管理器,以便生成在其中执行对应于所述至少一个任务调用的所述任务的所述执行环境,并且其中所述执行环境的生成包括为所述执行环境调配执行对应于所述至少一个任务调用的所述任务所需的数据资源。

条款22.如条款21所述的系统,其中所述被协调装置包括通用计算装置、薄型装置或与另选主要功能相关联的嵌入装置中的至少一个。

条款23.如条款21所述的系统,其中向所述执行环境调配执行对应于所述至少一个任务调用的所述任务所需的数据资源包括为所述执行环境调配对应于所述任务的所述可执行代码。

条款24.如条款21所述的系统,其中为所述执行环境调配执行对应于所述至少一个任务调用的所述任务所需的数据资源包括为所述执行环境调配驱动器、代码库、对应于运行时环境的数据或代码实用程序中的至少一个。

条款25.如条款21所述的系统,其中所述执行环境对应于软件容器。

条款26.如条款25所述的系统,其中所述数据资源存储在所述软件容器外部,并且其中为所述执行环境调配执行对应于所述至少一个任务调用的所述任务所需的数据资源包括将所述软件容器与对所述数据资源的只读访问相关联。

条款27.如条款26所述的系统,其中将所述软件容器与对所述数据资源的只读访问相关联包括生成联合加载,其组合对所述数据资源的只读访问和对附加存储器空间的读取/写入访问,同时向所述执行环境呈现所述数据资源和所述附加存储器空间的组合视图。

条款28.如条款21所述的系统,其中所述执行环境是第一执行环境,并且其中所述资源管理器的执行进一步使得所述处理器:

获得对在其中执行第二任务的第二执行环境的请求;

检测到所述第一任务已经停止执行;并且

选择所述第一执行环境以履行所述请求。

条款29.包括计算机可执行指令的非暂时计算机可读介质,所述计算机可执行指令包括:

可由计算系统执行以实施资源管理器的第一指令,其中所述资源管理器的实施使得所述计算系统:

获得对在其中执行一个或多个任务的第一任务的执行环境的请求,其中所述一个或多个任务的各个任务对应于所述计算系统可执行的代码;

确定执行所述任务所需的一组数据资源;并且

至少部分地通过为所述执行环境调配对所述一组数据资源的访问生成用于执行所述任务的执行环境;

可由所述计算系统执行以实施调度器的第二指令,其中所述调度器的实施使得所述计算系统:

将一组任务调用排队到队列内,各个任务调用对应于执行所述一个或多个任务的任务的调用;

获得所述计算系统上的计算资源的可用性;

至少部分地基于计算资源的所述可用性将调度算法应用于所述队列,以选择所述一组任务调用的任务调用以进行处理,其中所述任务调用对应于执行所述第一任务的调用;

传输对在其中执行所述第一任务的所述执行环境的所述请求;并且

在所述执行环境内执行所述第一任务。

条款30.如条款29所述的非暂时计算机可读介质,其中所述执行环境是第一执行环境,并且其中所述资源管理器的实施进一步使得所述计算系统:

获得对在其中执行第二任务的第二执行环境的请求;

检测到所述第一任务已经停止执行;并且

选择所述第一执行环境以履行所述请求。

条款31.如条款30所述的非暂时计算机可读介质,其中至少部分地基于检测到所述第二任务和所述第一任务对应于相同任务选择所述第一执行环境。

条款32.如条款30所述的非暂时计算机可读介质,其中至少部分地基于检测到所述第二任务依赖于所述第一执行环境可用的数据资源选择所述第一执行环境。

条款33.如条款30所述的非暂时计算机可读介质,其中所述资源管理器的实施进一步使得所述计算系统:

确定所述执行环境所需的计算资源的可用性低于阈值水平;并且

暂停与所述计算资源的使用相关联的第二执行环境。

条款34.如条款33所述的非暂时计算机可读介质,其中所述计算资源包括处理器可用性、存储器可用性或网络带宽可用性中的至少一个。

条款35.如条款33所述的非暂时计算机可读介质,其中所述第二执行环境的暂停包括生成所述第二执行环境的快照图像数据或将所述第二执行环境的状态保存到装置影子中的至少一个。

条款36.如条款30所述的非暂时计算机可读介质,其中所述资源管理器的实施进一步使得所述计算系统生成所述执行环境,并且其中生成所述执行环境包括生成联合加载,所述联合加载组合对所述一组数据资源的只读访问和对附加存储器空间的读取/写入访问,同时向所述执行环境呈现所述一组数据资源和所述附加存储器空间的组合视图。

条款37.一种计算机实施的方法,其包括:

将一组任务调用排队到队列内,各个任务调用对应于执行所述一个或多个任务的任务的调用;

获得所述计算系统上的计算资源的可用性;

至少部分地基于计算资源的所述可用性将调度算法应用于所述队列,以选择所述一组任务调用的任务调用以进行处理,其中所述任务调用对应于执行所述第一任务的调用;

确定执行所述任务所需的一组数据资源;并且

至少部分地通过为所述执行环境调配对所述一组数据资源的访问生成用于执行所述任务的执行环境;

在所述执行环境内执行所述第一任务。

条款38.如条款37所述的计算机实施的方法,其中所述一组数据资源包括数据资源或计算资源中的至少一个。

条款39.如条款37所述的计算机实施的方法,其中所述执行环境对应于软件容器,并且其中为所述执行环境调配对所述一组数据资源的访问包括将所述软件容器与对所述一组数据资源的只读访问相关联。

条款40.如条款39所述的计算机实施的方法,其中将所述软件容器与对所述一组数据资源的只读访问相关联包括生成联合加载,其组合对所述一组数据资源的只读访问和对附加存储器空间的读取/写入访问,同时向所述执行环境呈现所述一组数据资源和所述附加存储器空间的组合视图。

条款41.如条款37所述的计算机实施的方法,其中所述执行环境是第一执行环境,并且其中所述计算机实施的方法还包括:

获得对在其中执行第二任务的第二执行环境的请求;

检测到所述第一任务已经停止执行;并且

选择所述第一执行环境以履行所述请求。

条款42.如条款41所述的计算机实施的方法,其中至少部分地基于检测到所述第二任务和所述第一任务对应于相同任务或者所述第二任务依赖于所述第一执行环境可用的数据资源中的至少一个选择所述第一执行环境。

条款43.如条款37所述的计算机实施的方法,其还包括:

确定所述执行环境所需的计算资源的可用性低于阈值水平;并且

暂停与所述计算资源的使用相关联的第二执行环境。

条款44.如条款43所述的计算机实施的方法,其中暂停所述第二执行环境包括生成所述第二执行环境的快照图像数据或将所述第二执行环境的状态保存到装置影子中的至少一个。

条款45.如条款43所述的计算机实施的方法,其还包括:

在所述队列内排队调用以恢复执行所述第二执行环境;并且

至少部分地基于所述计算资源的可用性处理所述队列,以选择恢复所述第二执行环境的所述执行的所述调用;并且

恢复所述第二执行环境的所述执行。

条款46.一种协调器计算装置,其实施通信管理器,所述通信管理器实现所述协调器计算装置上的任务的执行之间的通信,其中所述协调器计算装置被配置为管理被协调环境内的一个或多个被协调装置,所述系统包括:

非暂时数据存储区,其包括对应于所述通信管理器的计算机可执行指令,所述计算机可执行指令在被执行时实现在所述协调器计算装置上执行的任务之间的通信,其中各个任务对应于所述协调器计算装置可执行以管理所述一个或多个被协调装置的操作的代码;

处理器,其与所述非暂时数据存储区通信并且被配置为执行所述通信管理器,其中所述通信管理器的执行使得所述处理器:

从所述协调器计算装置上的第一任务的执行获得调用消息,其中所述调用消息被寻址到与第二任务相关联的资源标识符,并且其中所述调用消息包括要传递给所述第二任务的执行的参数;

从至少所述调用消息被寻址到的所述资源标识符识别所述第二任务;

导致在所述协调器计算装置上执行所述第二任务;

将执行标识符传输到所述第二任务的所述执行;

从所述第二任务的所述执行获得返回消息,其中所述返回消息指定所述执行标识符;

至少部分地基于包括所述执行标识符的所述资源标识符,将所述返回消息识别为所述第二任务的所述执行的输出;并且

将所述第二任务的所述执行的所述输出返回到所述第一任务的所述执行。

条款47.如条款46所述的协调器计算装置,其中所述调用消息或所述返回消息中的至少一个是超文本传输协议(http)消息。

条款48.如条款46所述的协调器计算装置,其中所述处理器被进一步配置为生成用于所述第一任务和所述第二任务的所述相应执行的执行环境,并且其中所述执行环境彼此隔离。

条款49.如条款46所述的协调器计算装置,其中所述通信管理器的执行进一步使得所述处理器验证所述调用消息内的安全信息。

条款50.如条款46所述的协调器计算装置,其中所述返回消息通过将所述执行标识符包括在所述返回消息被传输到的地址或所述返回消息的报头字段中的至少一个中指定所述执行标识符。

条款51.非暂时计算机可读介质,其包括可由协调器计算装置执行以实施通信管理器的指令,所述通信管理器实现所述协调器计算装置上的任务的执行之间的通信,其中各个任务对应于可由所述协调器计算装置执行以管理所述一个或多个被协调装置的操作的代码,并且其中所述指令的执行使得所述协调器计算装置:

从所述协调器计算装置上的第一任务的执行获得调用消息,其中所述调用消息被寻址到与第二任务相关联的资源标识符;

从至少所述调用消息被寻址到的所述资源标识符识别所述第二任务;

导致在所述协调器计算装置上执行所述第二任务;

从所述第二任务的所述执行获得返回消息,其中所述返回消息包括与所述第二任务的所述执行相关联的执行标识符;

至少部分地基于包括所述执行标识符的所述资源标识符,将所述返回消息识别为所述第二任务的所述执行的输出;并且

将所述第二任务的所述执行的所述输出返回到所述第一任务的所述执行。

条款52.如条款51所述的非暂时计算机可读介质,其中所述指令的执行进一步使得所述协调器计算装置从所述第一任务的所述执行获得返回请求消息,并且其中响应于所述返回请求消息,所述第二任务的所述执行的所述输出被返回到所述第一任务的所述执行。

条款53.如条款52所述的非暂时计算机可读介质,其中所述返回请求消息被寻址到包括所述执行标识符的所述资源标识符。

条款54.如条款52所述的非暂时计算机可读介质,其中在获得所述返回消息之前获得所述返回请求消息。

条款55.如条款52所述的非暂时计算机可读介质,其中所述调用消息包括要分配给所述第二任务的所述执行的优先级。

条款56.如条款52所述的非暂时计算机可读介质,其中与所述第二任务相关联的所述资源标识符包括与所述协调器计算装置相关联的域名、与所述通信管理器相关联的端口以及与所述第二任务相关联的路径。

条款57.如条款52所述的非暂时计算机可读介质,其中与所述第二任务相关联的所述资源标识符是统一资源标识符。

条款58.如条款52所述的非暂时计算机可读介质,其中所述第一任务对应于和所述第二任务是相同任务。

条款59.一种计算机实施的方法,用于实现所述协调器计算装置上的任务执行之间的通信,其中各个任务对应于所述协调器计算装置可执行的代码,所述计算机实施的方法包括:

从所述协调器计算装置上的第一任务的执行获得调用消息,其中所述调用消息被寻址到与第二任务相关联的资源标识符;

从至少所述调用消息被寻址到的所述资源标识符识别所述第二任务;

导致在所述协调器计算装置上执行所述第二任务;

从所述第二任务的所述执行获得返回消息,其中所述返回消息包括与所述第二任务的所述执行相关联的执行标识符;

至少部分地基于包括所述执行标识符的所述资源标识符,将所述返回消息识别为所述第二任务的所述执行的输出;并且

将所述第二任务的所述执行的所述输出返回到所述第一任务的所述执行。

条款60.如条款59所述的计算机实施的方法,其还包括将所述执行标识符分配给所述第二任务的所述执行或在所述调用消息内识别所述执行标识符中的至少一个。

条款61.如条款59所述的计算机实施的方法,其还包括将所述执行标识符传递给所述第二任务的所述执行。

条款62.如条款59所述的计算机实施的方法,其中导致在所述协调器计算装置上执行所述第二任务包括生成用于所述协调器计算装置上所述第二任务的所述执行的执行环境。

条款63.如条款59所述的计算机实施的方法,其中将所述第二任务的所述执行的所述输出返回到所述第一任务的所述执行包括将所述输出作为推送消息返回到所述第一任务。

条款64.如条款59所述的计算机实施的方法,其中所述第一任务对应于第一编程语言的代码,并且所述第二任务对应于第二编程语言的代码。

条款65.如条款59所述的计算机实施的方法,其还包括从所述第一任务的所述执行获得返回请求消息,其中响应于所述返回请求消息,将所述第二任务的所述执行的所述输出返回到所述第一任务的所述执行。

条款66.如条款59所述的计算机实施的方法,其中在获得所述返回消息之前获得所述返回请求消息。

条款67.一种协调器计算装置,其实施远程接口,所述远程接口实现在所述协调器计算装置上远程调用任务,其中所述协调器计算装置被配置为管理被协调环境内的一个或多个被协调装置,并且其中各个任务对应于可由所述协调器计算装置执行以管理所述一个或多个被协调装置的操作的代码,所述协调器计算装置包括:

非暂时数据存储区,其包括对应于所述远程接口的计算机可执行指令,当被执行时,所述计算机可执行指令实现在所述协调器计算装置上远程调用任务;

处理器,其与所述非暂时数据存储区通信并且被配置为执行所述远程接口,其中所述远程接口的执行使得所述处理器:

向远离所述协调器计算装置的按需代码执行环境传输查询,以获得在所述协调器计算装置上执行第一任务的调用,其中所述查询被寻址到与维护在所述按需代码执行环境中的到所述协调器计算装置的调用队列相关联的资源标识符;

获得在所述协调器计算装置上执行所述第一任务的所述调用,其中所述调用包括要传递给所述第二任务的执行的参数;

确定与第二任务和所述协调器计算装置相关联的资源标识符;并且

生成对应于在所述协调器计算装置上执行所述第一任务的所述调用的调用消息,其中所述调用消息被寻址到与所述第二任务相关联的所述资源标识符,其中所述调用消息包括要传递给所述第二任务的执行的所述参数,并且其中所述调用消息导致在所述协调器计算装置上执行所述第一任务。

条款68.如条款67所述的协调器计算装置,其中所述远程接口的执行进一步使得所述处理器:

获得对应于所述第二任务的所述执行的执行标识符;

从所述第二任务的所述执行获得返回消息,其中所述消息被寻址到包括所述执行标识符的资源标识符;

至少部分地基于包括所述执行标识符的所述资源标识符,将所述返回消息识别为所述第二任务的所述执行的输出;并且

将所述第二任务的所述执行的所述输出返回到按需代码执行环境。

条款69.如条款68所述的协调器计算装置,其中所述远程接口的执行使得所述处理器通过生成所述执行标识符或者在执行所述第一任务的所述调用内检测到所述执行标识符中的至少一个获得所述执行标识符。

条款70.如条款67所述的协调器计算装置,其中所述调用消息是寻址到与所述第二任务相关联的所述资源标识符的超文本传输协议(http)消息。

条款71.非暂时计算机可读介质,其包括可由协调器计算装置执行以实施远程接口的指令,所述远程接口实现在所述协调器计算装置上远程调用任务,其中各个任务对应于可由所述协调器计算装置执行以管理所述一个或多个被协调装置的操作的代码,并且其中所述指令的执行使得所述协调器计算装置:

向远离所述协调器计算装置的按需代码执行环境传输查询,用于获得在所述协调器计算装置上执行第一任务的调用,其中所述查询被寻址到与维护在所述按需代码执行环境中的到所述协调器计算装置的调用队列相关联的资源标识符;

获得在所述协调器计算装置上执行所述第一任务的所述调用;

确定与第二任务和所述协调器计算装置相关联的资源标识符;并且

生成与在所述协调器计算装置上执行所述第一任务的所述调用对应的调用消息,其中所述调用消息被寻址到与所述第二任务相关联的所述资源标识符。

条款72.如条款71所述的非暂时计算机可读介质,其中所述指令的执行进一步使得所述协调器计算装置:

从所述第二任务的所述执行获得返回消息,其中所述消息被寻址到包括对应于所述第二任务的所述执行的执行标识符的资源标识符;

至少部分地基于包括所述执行标识符的所述资源标识符,将所述返回消息识别为所述第二任务的所述执行的输出;并且

将所述第二任务的所述执行的所述输出返回到按需代码执行环境。

条款73.如条款71所述的非暂时计算机可读介质,其中所述指令的执行使得所述协调器计算装置至少部分地通过将所述输出传输到按需代码执行环境上的包括所述执行标识符的第二资源标识符,从而将所述第二任务的所述执行的所述输出返回到所述按需代码执行环境。

条款74.如条款71所述的非暂时计算机可读介质,其中所述指令的执行使得所述协调器计算装置:

生成寻址到所述资源标识符的返回请求消息,所述资源标识符包括对应于所述第二任务的所述执行的所述执行标识符;并且

将所述返回请求消息传输到所述资源标识符。

条款75.如条款71所述的非暂时计算机可读介质,其中所述调用消息包括要分配给所述第二任务的所述执行的优先级。

条款76.如条款71所述的非暂时计算机可读介质,其中与所述第二任务和所述协调器计算装置相关联的所述资源标识符包括与所述协调器计算装置相关联的域名、与所述通信管理器相关联的端口以及与所述第一任务相关联的路径。

条款77.如条款71所述的非暂时计算机可读介质,其中与所述第二任务相关联的所述资源标识符是统一资源标识符。

条款78.如条款71所述的非暂时计算机可读介质,其中所述指令的执行使得所述协调器计算装置生成用于执行所述第一任务的执行环境,以在所述执行环境内执行所述第一任务。

条款79.一种计算机实施的方法,其由协调器计算装置实施,以实现所述协调器计算装置上的任务的远程调用,其中各个任务对应于所述协调器计算装置可执行的代码,所述计算机实施的方法包括:

向远离所述协调器计算装置的按需代码执行环境传输查询,用于获得在所述协调器计算装置上执行第一任务的调用,其中所述查询被寻址到与维护在所述按需代码执行环境中的到所述协调器计算装置的调用队列相关联的资源标识符;

获得在所述协调器计算装置上执行所述第一任务的所述调用;

确定与第二任务和所述协调器计算装置相关联的资源标识符;并且

生成与在所述协调器计算装置上执行所述第一任务的所述调用对应的调用消息,其中所述调用消息被寻址到与所述第二任务相关联的所述资源标识符。

条款80.如条款79所述的计算机实施的方法,其还包括将执行标识符分配给所述第一任务的执行或在所述调用内识别所述执行标识符中的至少一个。

条款81.如条款80所述的计算机实施的方法,其中所述调用消息包括所述执行标识符。

条款82.如条款79所述的计算机实施的方法,其还包括响应于所述调用消息在所述协调器计算装置上执行所述第一任务,其中包括在所述协调器计算装置上执行所述第一任务包括生成用于所述协调器计算装置上所述第一任务的执行的执行环境。

条款83.如条款79所述的计算机实施的方法,其还包括:

从所述第一任务的执行获得返回消息,其中所述消息被寻址到包括对应于所述第一任务的所述执行的执行标识符的资源标识符;

至少部分地基于包括所述执行标识符的所述资源标识符,将所述返回消息识别为所述第一任务的所述执行的输出;并且

将所述第二任务的所述执行的所述输出返回到按需代码执行环境。

条款84.如条款83所述的计算机实施的方法,其还包括生成返回请求消息并且将所述返回请求消息传输到所述资源标识符,所述资源标识符包括对应于所述第一任务的所述执行的所述执行标识符。

条款85.如条款83所述的计算机实施的方法,其中将所述第二任务的所述执行的所述输出返回到按需代码执行环境包括将所述输出传输到所述按需代码执行环境上的包括所述执行标识符的第二资源标识符。

条款86.如条款79所述的计算机实施的方法,其中生成所述调用消息包括从所述获得的调用中解封装所述调用消息。

条款87.一种协调器计算装置,其被配置为管理被协调环境内的一个或多个被协调装置,所述协调器计算装置包括:

非暂时数据存储区,其包括:

管理所述一个或多个被协调装置的操作的一个或多个任务,其中各个任务对应于所述协调器计算装置可执行的代码;以及事件流信息,其指定所述协调器计算装置响应于所述一个或多个被协调装置的第一被协调装置的输入而采取的动作;以及

处理器,其与所述非暂时数据存储区通信,所述处理器配置有计算机可执行指令,所述计算机可执行指令用于:

获得所述协调器计算装置的配置包,所述配置包识别所述一个或多个被协调装置和所述一个或多个任务;

从网络可访问的数据存储区中检索所述配置包中识别的所述一个或多个任务;

将所述一个或多个任务存储在所述非暂时数据存储区中;

获得所述第一被协调装置的所述输入;

响应于所述输入,至少部分地基于所述事件流信息识别要执行的所述一个或多个任务的第一任务;

生成对应于所述第一任务的执行环境;并且

在所述执行环境中执行所述第一任务。

条款88.如条款87所述的协调器计算装置,其中所述处理器进一步配置有计算机可执行指令,所述计算机可执行指令用于:

获得所述第一任务的执行的输出;

至少部分地基于所述事件流信息,识别要向其传输所述输出的所述一个或多个被协调装置的被协调装置;并且

将所述输出传输到所述被协调装置。

条款89.如条款88所述的协调器计算装置,其中所述输出作为mqtt通知传输。

条款90.如条款87所述的协调器计算装置,其中所述一个或多个被协调装置包括通用计算装置、薄型装置或与另选主要功能相关联的嵌入装置中的至少一个。

条款91.非暂时计算机可读介质,其包括用于管理被协调环境内的一个或多个被协调装置的指令,当由与所述被协调环境相关联的协调器计算装置执行时,使得所述协调器计算装置:

获得所述协调器计算装置的配置包,所述配置包识别所述一个或多个被协调装置、管理所述一个或多个被协调装置的操作的一个或多个任务,其中各个任务对应于所述协调器计算装置可执行的代码,以及指定所述协调器计算装置响应于所述一个或多个被协调装置的第一被协调装置的输入而采取的动作的事件流信息;

从网络可访问的数据存储区中检索所述配置包中识别的所述一个或多个任务;

获得所述第一被协调装置的所述输入;

响应于所述输入,从至少所述事件流信息识别要执行的所述一个或多个任务的第一任务;

生成对应于所述第一任务的执行环境;并且

在所述执行环境中执行所述第一任务。

条款92.如条款91所述的非暂时计算机可读介质,其中所述指令在被执行时使得所述协调器计算装置:

从所述第一任务获得输出消息;

参考所述事件流信息以识别要向其传输所述输出消息的第二任务或第二被协调装置中的至少一个;并且

将所述输出消息传输到所述第二任务或第二被协调装置中的至少一个。

条款93.如条款92所述的非暂时计算机可读介质,其中所述指令在被执行时使得所述协调器计算装置将所述输出消息传递给在所述协调器计算装置上执行的路由器任务,并且其中所述路由器任务可执行以参考所述事件流信息以识别所述至少一个第二任务或第二被协调装置。

条款94.如条款91所述的非暂时计算机可读介质,其中所述指令在被执行时使得所述协调器计算装置生成所述执行环境,作为与所述协调器计算装置上的其他任务的执行环境隔离的容器。

条款95.如条款94所述的非暂时计算机可读介质,其中所述指令在被执行时使得所述协调器计算装置为所述执行环境调配对执行所述第一任务所需的数据资源的访问。

条款96.如条款91所述的非暂时计算机可读介质,其中所述指令在被执行时使得所述协调器计算装置:

订阅指示所述协调器计算装置的期望状态的装置影子服务;并且

获得已在所述装置影子服务处修改所述期望状态的通知;

其中所述指令在被执行时使得所述协调器计算装置响应于所述期望状态已被修改的所述通知获得所述配置包。

条款97.如条款91所述的非暂时计算机可读介质,其中所述指令在被执行时使得所述协调器计算装置:

将对所述第一任务的调用排队到工作项队列中;并且

将调度算法应用于所述工作项队列,以选择从所述工作项队列中出队的所述第一任务。

条款98.如条款91所述的非暂时计算机可读介质,其中所述第一任务是影子服务任务,其可执行以使得所述协调器计算装置:

确定所述第一被协调装置的期望状态;

修改所述第一被协调装置的装置影子,以指示所述期望状态;并且

将所述期望状态的通知传输到所述第一被协调装置。

条款99.如条款91所述的非暂时计算机可读介质,其中响应于所述第一被协调装置对对应于所述装置影子的主题的订阅,传输对所述第一被协调装置的所述通知。

条款100.一种计算机实施的方法,其由协调器计算装置实施以管理被协调环境内的一个或多个被协调装置,所述计算机实施的方法包括:

获得所述协调器计算装置的配置包,所述配置包识别所述一个或多个被协调装置、管理所述一个或多个被协调装置的操作的一个或多个任务,其中各个任务对应于所述协调器计算装置可执行的代码,以及指定所述协调器计算装置响应于所述一个或多个被协调装置的第一被协调装置的输入而采取的动作的事件流信息;

从网络可访问的数据存储区中检索所述配置包中识别的所述一个或多个任务;

获得所述第一被协调装置的所述输入;

响应于所述输入,从至少所述事件流信息识别要执行的所述一个或多个任务的第一任务;

生成对应于所述第一任务的执行环境;并且

在所述执行环境中执行所述第一任务。

条款101.如条款100所述的计算机实施的方法,其还包括:

从所述第一任务获得输出消息;

参考所述事件流信息以识别要向其传输所述输出消息的第二任务或第二被协调装置中的至少一个;并且

将所述输出消息传输到所述第二任务或第二被协调装置中的至少一个。

条款102.如条款101所述的计算机实施的方法,其中参考所述事件流信息以识别要向其传输所述输出的所述第二任务或所述第二被协调装置中的至少一个包括将所述输出消息传递给在所述协调器计算装置上执行的路由器任务,并且其中所述路由器任务可执行以参考所述事件流表从而识别所述至少一个第二任务或第二被协调装置。

条款103.如条款100所述的计算机实施的方法,其中生成对应于所述第一任务的所述执行环境包括生成与所述协调器计算装置上的其他任务的执行环境隔离的容器。

条款104.如条款100所述的计算机实施的方法,其还包括为所述执行环境调配对执行所述第一任务所需的数据资源的访问。

条款105.如条款100所述的计算机实施的方法,其还包括:

订阅指示所述协调器计算装置的期望状态的装置影子服务;并且

获得已在所述装置影子服务处修改所述期望状态的通知;

其中至少部分地基于所述通知获得配置包。

条款106.如条款100所述的计算机实施的方法,其还包括:

确定所述第一被协调装置的期望状态;

修改所述第一被协调装置的装置影子,以指示所述期望状态;并且

将所述期望状态的通知传输到所述第一被协调装置。

虽然上面可以独立地描述各种功能,但是可以设想这些功能可以独立地或者以任何组合实施。此外,设想这些功能可以与相关申请中描述的功能、装置或环境相结合,所述相关申请在上文通过引用方式并入。例如,本文描述的协调器计算装置可以实施相关申请中描述的主题,以使得能够解释接收的消息(例如,来自被协调装置的mqtt消息),从而潜在地通过使用专用消息主题确定消息应该被转发到的装置或任务的子集。作为另一示例,协调器计算装置可以进一步利用包括在(例如,从被协调装置或任务执行)接收的消息内的安全信息确定是否应该在接收方之间转发消息。作为又一示例,协调器计算装置可以使得能够在消息内(例如,主题字段内)使用嵌入代码实现消息的可变处理,潜在地不需要检查消息主体。根据本公开内容,本领域技术人员将理解,本文描述的功能的许多组合是可能的。

上面描述的所有方法和过程可以体现在由一个或多个计算机或处理器执行的软件代码模块中,并且经由所述软件代码模块完全自动化。代码模块可存储在任何类型的非暂时计算机可读介质或其他计算机存储装置中。方法中的一些或全部可另选地在专用计算机硬件中体现。

除非另外特别说明,否则条件语言诸如“能够”、“可以”、“可能”或“可”在上下文中被理解为通常用于表示某些实施方案包括,而其他实施方案不包括某些特征、元素和/或步骤。因此,这样的条件语言通常不意图暗指以任何方式一个或多个实施方案需要特征、元素和/或步骤,或者一个或多个实施方案有必要包括用于在具有或不具有用户输入或提示的情况下决定这些特征、元素和/或步骤是否包括在任何特定实施方案中或将在其中执行的逻辑。

除非另外特别说明,否则诸如短语“x、y或z中的至少一个”的分离性语言在上下文中通常应理解为用于呈现项目、项等可以是x、y或z或它们的任意组合(例如,x、y和/或z)。因此,此类分离性语言一般并非意在并且不应该暗示某些实施方案需要x中的至少一个、y中的至少一个或z中的至少一个每个存在。

除非另外明确地陈述,否则诸如‘一(a)’或‘一(an)’的冠词通常应被解释为包括一个或多个所描述项目。因此,诸如“被配置为……的装置”的短语意图包括一个或多个所列举装置。这类一个或多个所列举装置也可被共同地配置为执行所陈述列举项。例如,“被配置为执行列举项a、b和c的处理器”可包括被配置为执行列举项a的第一处理器与被配置为执行列举项b和c的第二处理器相结合地工作。

本文描述的和/或附图中描绘的流程图中的任何例程描述、元素或方框应被理解为潜在地表示代码的模块、片段或部分,其包括一个或多个可执行指令以用于实施例程中的特定逻辑功能或元素。另选实施包括在本文描述的实施方案的范围内,其中可以删除元素或功能或者以不按照所示和所述顺序执行所述元素或功能,包括基本上同步或相反顺序,具体取决于本领域技术人员将理解的所涉及的功能。

应当强调的是,可以对上述实施方案作出许多变化和修改,其中的元素将被理解为是其他可接受的示例。本文中所有这些修改和变化都旨在包括在本公开的范围内并且由以下权利要求保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1