CN110326255A - 管理消息传递协议通信 - Google Patents

管理消息传递协议通信 Download PDF

Info

Publication number
CN110326255A
CN110326255A CN201780075588.9A CN201780075588A CN110326255A CN 110326255 A CN110326255 A CN 110326255A CN 201780075588 A CN201780075588 A CN 201780075588A CN 110326255 A CN110326255 A CN 110326255A
Authority
CN
China
Prior art keywords
message
coordinator
coordinated
topic
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780075588.9A
Other languages
English (en)
Other versions
CN110326255B (zh
Inventor
郭裕仁
马克·约翰·布鲁克
詹姆斯·克里斯托弗·索伦森
马克·爱德华·拉芬
阿姆布·坦登
乔纳森·I·图罗
崔京焕
W·Z·麦克莱纳恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/362,757 external-priority patent/US10608973B2/en
Priority claimed from US15/362,751 external-priority patent/US10193839B2/en
Priority claimed from US15/362,765 external-priority patent/US10637817B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN110326255A publication Critical patent/CN110326255A/zh
Application granted granted Critical
Publication of CN110326255B publication Critical patent/CN110326255B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/06Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Abstract

描述了用于管理在通信网络中的计算装置之间传输的数据的系统和方法。管理组件可配置将由装置交换的消息的通信路径中的一个或多个装置,以解释嵌入在所述通信消息中的代码。接收装置可查看传入消息并处理所述消息,以根据业务规则或逻辑确定将如何路由所述通信消息或以其他方式处理所述通信消息。

Description

管理消息传递协议通信
相关申请的交叉引用
本申请涉及:2016年11月28日提交的并且标题为“MANAGIN G SECURITY INMESSAGING PROTOCOL COMMUNICATION S”的美国专利申请号15/362,751;2016年11月28日提交的并且标题为“EMBEDDED CODES IN MESSAGING PROTOCOL COMMUN ICATIONS”的美国专利申请号15/362,757;2016年11月28日提交的并且标题为“MAGAGING MESSAGINGPROTOCOL COMMUNIC ATIONS”的美国专利申请号15/362,765;2016年11月28日提交的并且标题为“LOCALIZED DEVICE COORDINATOR WITH ON-DEM AND CODE EXECUTIONCAPABILITIES”的美国专利申请号15/362,709;2016年11月28日提交的并且标题为“ON-DEMAND CODE EXECUTION IN A LOCALIZED DEVICE COORDINATOR”的美国专利申请号15/362,696,2016年11月28日提交的并且标题为“IN TRA-CODE COMMUNICATION IN ALOCALIZED DEVICE CO ORDINATOR”的美国专利申请号15/362,708;2016年11月28日提交的标题为“REMOTE INVOCATION OF CODE EXECUTION IN A LOCALIZED DEVICE COORDINATOR”的美国专利申请号15/362,707(以下统称为“相关申请”)。每个相关申请的全部内容通过引用并入本文。
背景技术
一般来说,计算装置利用一个通信网络或一系列通信网络交换数据。公司和组织操作互连许多计算装置以支持操作或向第三方提供服务的计算机网络。计算系统可位于单个地理位置中或者位于多个不同的地理位置中(例如,通过私有或公共通信网络加以互连)。具体来说,本文统称为“数据中心”的数据中心或数据处理中心可包括许多互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私有数据中心,或者可以是代表公众或出于公众利益运营的公共数据中心。
为了提高数据中心资源的利用率,虚拟化技术允许单个物理计算装置托管虚拟机的一个或多个实例,所述虚拟机作为独立计算装置向数据中心的用户展现并操作。利用虚拟化,单个物理计算装置可以以动态方式创建、维护、删除或以其他方式管理虚拟机。继而,用户可从数据中心请求计算机资源,包括单个计算装置或联网计算装置的配置,并且可被提供不同数量的虚拟机资源。
在一些环境中,通过通信网络通信的计算装置可对应于具有作为计算装置的主要功能的装置,诸如台式个人计算机。在其他环境中,通过通信网络通信的计算装置的至少某一部分可对应于具有至少一个另选主要功能的嵌入装置或薄型装置,诸如具有单独的主要目的,同时还提供至少有限的计算功能的家用电器(例如,恒温器或冰箱)。在一些情况下,这些嵌入装置或薄型装置的本地用户接口是有限的,因此可能需要远程管理来实现这些装置的一些功能。然而,在某些情况下,由于与远程管理装置的通信的延时以及在远程管理装置处或在与远程管理装置的通信期间私有信息可能被无意中泄露,远程管理可能存在问题。当嵌入装置或薄型装置和远程管理装置存在于单独的通信网络上或通过公共通信网络进行通信时,这些问题可能更普遍。
附图说明
在全部附图中,附图标记可被重复使用来指示所参考元件之间的对应关系。附图被提供来示出本文所述的示例性实施方案,并且并不意图限制本公开的范围。
图1是描绘说明性环境的框图,其中协调器可操作以对被协调环境内的被协调装置的操作进行本地管理和协调,并且其中协调器可与客户端装置和服务提供商环境通信以修改协调器的操作;
图2描绘提供图1的协调器的计算装置的总体架构;
图3A和3B描绘由图1的协调器管理的被协调装置的总体架构;
图4描绘可用于生成和提交与通信协议相关的配置信息的客户端装置的总体架构;
图5描绘可用于处理根据消息传递协议并且利用嵌入代码发送的通信的计算装置的总体架构;
图6A至图6D是图1的说明性环境的框图,其描绘用于根据利用嵌入代码的消息传递协议来交换通信的说明性交互;
图7是示出根据说明性实施方案的由消息处理服务组件实现的远程执行消息传递例程的流程图;
图8是示出根据说明性实施方案的由客户端计算装置或被协调装置实现的远程执行消息传递例程的流程图;
图9是描绘说明性环境的框图,其中协调器可操作以对被协调环境内的被协调装置的操作进行本地管理和协调,并且其中协调器可与客户端装置和服务提供商环境通信以修改协调器的操作;
图10描绘提供图1的协调器的计算装置的总体架构;
图11A和11B描绘由图9的协调器管理的被协调装置的总体架构;
图12描绘可用于生成和提交与通信协议相关的配置信息的客户端装置的总体架构;
图13描绘可用于处理根据消息传递协议并且利用嵌入代码发送的通信的计算装置的总体架构;
图14A至图14D是图9的说明性环境的框图,其描绘用于根据利用嵌入代码的消息传递协议来交换通信的说明性交互;
图15是示出根据说明性实施方案的由消息处理服务组件实现的远程执行消息传递例程的流程图;
图16是示出根据说明性实施方案的由客户端计算装置或被协调装置实现的远程执行消息传递例程的流程图;
图17是描绘说明性环境的框图,其中协调器可操作以对被协调环境内的被协调装置的操作进行本地管理和协调,并且其中协调器可与客户端装置和服务提供商环境通信以修改协调器的操作;
图18描绘提供图17的协调器的计算装置的总体架构;
图19A和19B描绘由图17的协调器管理的被协调装置的总体架构;
图20描绘可用于生成和提交与通信协议相关的配置信息的客户端装置的总体架构;
图21描绘可用于处理根据消息传递协议并且利用嵌入代码发送的通信的计算装置的总体架构;
图22A至图22D是图17的说明性环境的框图,其描绘用于根据利用嵌入代码的消息传递协议来交换通信的说明性交互;
图23是示出根据说明性实施方案的由消息处理服务组件实现的远程执行消息传递例程的流程图;并且
图24是示出根据说明性实施方案的由客户端计算装置或被协调装置实现的远程执行消息传递例程的流程图。
具体实施方式
一般来说,本申请对应于在通信网络中的计算装置之间传输的数据的管理。更具体来说,本申请的各方面对应于利用消息传递协议来促进对客户端计算装置的管理。说明性地,一个或多个客户端装置利用消息传递协议(诸如MQTT消息传递协议)来交换内容。根据本申请的各方面,管理组件可被配置为促进向已订阅接收按话题组织的消息的一组接收计算装置进行的单独消息传递。更具体来说,说明性地,管理装置可查看按话题组织的传入消息并利用通信组件,所述通信组件可选择已订阅接收与所述话题相关联的消息的单独接收装置。通过充分利用现有的消息传递协议,本申请的各方面减轻了对客户端装置和管理装置参与单独的装置到装置通信的需要。
参考说明性示例,包括一个或多个客户端计算装置的被协调环境与提供一个或多个消息处理服务的服务提供商通信。被协调环境包括协调器,所述协调器促进对被协调环境内的单独被协调装置的管理,包括来自消息处理服务的消息的分发。协调器通过充分利用标准消息传递协议来促进与被协调装置的通信交换。在一个实施方案中,协调器可利用MQTT消息传递协议。说明性地,消息传递协议可包括装置向协调器注册来接收与根据指定话题发布的消息相关的内容的能力。一般来说,当协调器接收到与话题相关的内容时,协调器通常将内容转发或发布到所有已注册装置。
根据消息传递协议的更典型的实现方式,协调器可在消息代理容量中操作,简单地使注册的话题与传入消息中所标识的话题相匹配,而无需另外的处理。更具体来说,如果一组被协调装置已订阅接收与由特定话题定义的任务或一组任务的执行相关的消息,则实现更传统的消息传递协议的协调器将匹配整组被协调装置的注册并相应地转发消息。如下面将详细解释的,根据本申请的各方面,协调器或其他消息处理组件可配置有可执行代码或指令,所述可执行代码或指令致使协调器确定如何将传入消息路由到一组被标识的已注册装置。。
继续参考前面的示例,为了促进内容的递送,由协调器接收的通信可利用另外的信息来确定所述一组已注册的一组被协调装置中的哪一个应当接收消息。根据本申请,通信的话题部分由定义通信主题的一个或多个标签或文本级别组成。然后,协调器可利用路由表和业务规则来标识将被发布并指向被协调装置的子集的单独话题。
在一些情况下,被协调装置可对应于具有至少一个另选主要功能的嵌入装置或薄型装置,诸如具有单独的主要目的的家用电器。在一些情况下,这类装置可被称为“物联网”装置或“IoT”装置。被协调装置可包括有限的本地用户接口能力,因此可受益于远程管理。本文所公开的协调器使得能够在包括协调器和被协调装置的环境(诸如局域网或“LAN”环境)内本地对被协调装置进行这种远程管理。因此,协调器的使用可实现对被协调装置的管理,而不需要在本地环境外部进行通信,从而与使用外部或公共通信网络相比,允许降低隐私风险并提高通信速度。
此外,本文所公开的协调器可用作本地化的按需代码执行系统,从而使得能够快速执行可移植代码段以在协调器上实现功能。这些可移植代码段在本文中可称为“任务”。在一些情况下,任务可用于诸如通过改变装置的状态来协调被协调装置的功能。例如,在被协调装置是具备网络功能的灯的情况下,任务可用于根据对协调器的输入(诸如当前时间、用户输入或另一个被协调装置的状态)来改变灯的状态(例如,“开”或“关”)。协调器还可根据许多不同的协议来实现通信协调的装置和任务,并且在一些情况下提供这类协议之间的转换功能。此外,协调器在一些情况下可管理任务的执行位置,使得可根据候选装置的能力和执行任务的要求在协调器上、在被协调装置上或在远程环境(例如,远程网络计算环境)的装置上执行任务。在一些情况下,这些任务可以是用户定义的,从而使得用户能够根据对应于任务的用户提交的代码在协调器或被协调装置上实现各种功能。因此,协调器可提供对被协调装置的可快速重新配置的本地化管理。
在一些情况下,协调器可通过“装置影子”来管理被协调装置的状态。通常,装置影子可对应于存储在远离被协调装置的位置(例如,协调器或远程装置影子服务)处的被协调装置的期望状态的数据表示。被协调装置可被配置为与由装置影子表示的状态同步,并且因此,可预期对装置影子的改变会引起被协调装置的状态的对应改变。在一些情况下,被协调装置与对应影子的同步可通过“发布/订阅”模型通信协议(诸如MQTT协议)发生,所述协议在本领域中是已知的。因此,被协调装置可“订阅”所述被协调装置的装置影子。然后,协调器可通过向装置影子进行“发布”的请求来获得对装置影子的状态的期望改变。协调器可通过通信协议向被协调装置通知装置影子的状态改变,并且被协调装置可通过使本地状态与装置影子的状态同步来进行响应。装置影子的使用可能有利于例如使读取或修改被协调装置的状态的请求与与被协调装置的通信分离。说明性地,在读取或修改装置影子时,可立即认为读取或修改被协调装置的状态的请求是成功的。然后,根据被协调装置与影子装置之间的通信协议,被协调装置所需的任何改变可与请求异步发生。因为与装置交互的请求可与实际与装置的通信分离,所以这些请求和装置通信也可利用不同的通信协议。例如,可根据高开销、高可靠性协议(诸如传输控制协议(TCP))传输通过装置影子读取或修改装置状态的请求,而装置影子与被协调装置之间的通信可通过低开销协议(诸如MQTT)发生。
根据本公开的实施方案,协调器可与用户相关联,用户可通过服务提供商的环境改变协调器的配置。说明性地,服务提供商环境可由协调器的提供商操作,并且使用户能够指定协调器的各种配置参数,诸如用于协调器的被协调环境的位置、环境内的被协调装置、协调器可执行的任务、协调器应如何管理装置之间、任务之间或装置与任务之间的通信、协调器的安全信息或协调器的其他参数(诸如要在协调器处监视的量度或要在协调器处执行的日志记录)。由于协调器本身在一些情况下可能与有限的本地用户接口相关联,因此服务提供商环境通过使用户能够通过客户端装置提交用于协调器的配置,并且使得协调器被自动调配所述配置。服务提供商环境还可使单个客户端装置能够通过统一接口管理多个协调器,并且通过部署新的配置,或者通过返回或撤销先前对协调器的配置部署从而快速改变协调器的配置。
在一些情况下,服务提供商环境可提供与协调器的功能类似或相同的功能。例如,协调器可至少部分地基于可移植代码段或“任务”的执行来起作用。类似地,服务器提供商环境可包括用于执行相同或类似任务的按需代码执行环境。关于这种按需代码执行环境的进一步细节可在2014年9月30日提交的和标题为“PROGRAMMATIC EVENT DETECTION ANDMESSAGE GENERATION FOR REQUESTS TO EXECUTE PROGRAM CODE”的美国专利No.9,323,556中找到(“'556专利”),其全部内容通过引用并入本文。简而言之,为了执行任务,按需代码执行环境可维护预初始化的虚拟机实例池,这些虚拟机实例一旦接收到用户请求即可使用。由于这些虚拟机的预初始化性质,与执行用户代码(例如,实例和语言运行时启动时间)相关联的延迟(有时称为延时)可显著降低,通常降低到低于100毫秒的水平。
说明性地,按需代码执行环境可在一个或多个物理计算装置上维护虚拟机实例池,其中每个虚拟机实例具有加载在其上的一个或多个软件组件(例如,操作系统、语言运行时、库等)。当按需代码执行环境接收到执行用户的程序代码的请求(“任务”)时,所述请求指定用于执行用户的程序代码的一个或多个计算约束,按需代码执行环境可基于由所述请求指定的一个或多个计算约束选择虚拟机实例以用于执行用户的程序代码,并且致使用户的程序代码在所选择的虚拟机实例上执行。程序代码可在虚拟机实例上创建的隔离容器中执行。由于池中的虚拟机实例在接收到请求时早已被启动并加载了特定的操作系统和语言运行时,因此显著缩短了与查找可处理请求的计算容量(例如,通过在虚拟机实例上创建的一个或多个容器中执行用户代码)相关联的延迟。
按需代码执行环境可包括虚拟机实例管理器,如‘556专利中更详细描述的,其被配置为接收用户代码(以各种编程语言中的任何一种编写的线程、程序等)并且以高度可扩展、低延迟的方式执行代码,而无需用户配置虚拟机实例。具体而言,虚拟机实例管理器可在接收到用户代码之前以及从用户接收到关于任何特定虚拟机实例配置的任何信息之前,根据一组预先确定的配置创建和配置虚拟机实例,每个对应于各种运行时环境中的任何一个或多个。此后,虚拟机实例管理器接收用户发起的执行代码的请求,并且基于与所述请求相关联的配置信息识别预先配置的虚拟机实例以执行代码。虚拟机实例管理器可进一步分配识别的虚拟机实例以至少部分地通过在分配的虚拟机实例内部创建和配置容器以执行用户的代码。在‘556专利中更详细地描述了用于实施虚拟机实例管理器和在虚拟机实例上执行用户代码的各种实施方案。
如以上所讨论,在一些情况下,协调器可被配置为选择是在本地(例如,在协调器上)执行任务还是通过使用服务提供商网络内的按需代码执行环境来执行任务。例如,协调器可用作消息处理服务组件并处理所接收通信内与任务相关的嵌入代码,以确定如何转发到注册来接收这类通信的不同被协调装置。作为另一示例,协调器和服务提供商环境都可提供对应于被协调装置的装置影子,并且用户可提交改变由协调器托管的装置影子或者在服务提供商环境内托管的装置影子中的一者或两者的请求。在这样的情况下,协调器可用于使对应于给定被协调装置的各种装置影子以及被协调装置本身同步。
根据本申请的另外的方面,包括一个或多个被协调环境的通信环境与提供一个或多个消息处理服务的服务提供商通信。消息处理服务通过充分利用标准消息传递协议来促进与被协调装置网络的通信交换。在一个实施方案中,消息处理服务可利用MQTT消息传递协议。说明性地,消息传递协议可包括单独协调网络中的协调器接收与根据指定话题发布的消息相关的内容的能力。一般来说,当消息处理服务接收到与话题相关的内容时,消息处理服务通常将内容转发或发布到所有已注册装置。
继续参考前面的实例,为了促进内容的递送,由消息处理服务接收的通信可利用另外的信息来确定所述一组已注册的一组协调器中的哪一个应当接收消息。根据本申请,通信的话题部分由定义通信主题的一个或多个标签或文本级别组成。然后,消息处理服务可利用路由表和业务规则来标识将被发布并指向协调器的子集的单独话题。
尽管出于说明的目的,本公开中描述的一些实施方案的各方面将集中于MQTT消息传递协议和装置的其他配置,但是相关领域的技术人员将理解,这些示例仅是说明性的而不一定意图是限制性的。如本领域技术人员根据本公开将理解的,本文所公开的实施方案改进了计算系统的能力,尤其是将由外部装置协调和管理的具有有限的本地化用户接口的计算系统。
当结合附图参阅以下描述时,可更好地理解本公开的上述方面和许多伴随的优点,因此将更易于了解所述方面和优点。将参考图1至图24描述本申请的各种实施方案和方面。本申请中的任何内容都不应以需要实施方案或示例的任何特定组合的方式来解释。另外,相关领域的技术人员将理解,本申请的一个或多个方面或实施方案可易于组合并且可产生本申请的另外的创造性方面。
图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)等。用于通过互联网或任何其他上述类型的通信网络进行通信的协议和组件是本领域技术人员所熟知的,且因此本文不更详细描述。尽管图1中示出了网络104的所有组件,但是组件中的一个或多个(诸如路由器)可用作消息处理服务。
每个被协调环境110可包括通过执行环境110的网络(所述网络未在图1中示出)进行通信的协调器114和任意数量的被协调装置112。由于其在被协调环境110内的关联,就通信网络方面而言,给定环境110内的被协调装置112和协调器114可被认为是彼此“本地”的。例如,给定环境110内的被协调装置112和协调器114可通过LAN或其他本地化通信网络加以连接。
每个被协调装置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的许多功能可通过任务建立,从而使得能够根据用户的需要快速改变这些功能。
客户端装置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)、磁带驱动器或其任意组合。关于装置影子的使用的进一步细节通常可在2016年6月29日提交的标题为“Device Representation Management UsingRepresentation Types”的美国专利申请号15/196,700(“'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可对应于“容器”、操作系统级虚拟化环境或“沙箱”环境,诸如“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,所述路由器任务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可实施类似于装置影子服务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以实施期望配置。
图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描绘用于实现本文描述的消息处理服务组件的说明性计算装置的架构的一个实施方案。如前所述,环境中的一个或多个计算装置可用作消息处理服务,诸如MQTT代理。在其他实施方案中,消息处理服务可在网络连接组件中实现。因此,图5中描绘的消息处理服务的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。如图所示,远程命令服务114包括处理单元504、网络接口506、计算机可读介质驱动器507、输入/输出装置接口520、可选显示器502和输入装置524,它们全部都可通过通信总线彼此通信。远程命令服务114的组件可以是物理硬件组件或在虚拟化环境中实现。
网络接口506可提供到一个或多个网络或计算系统(诸如图1的网络150)的连接性。因此,处理单元504可通过网络从其他计算系统或服务接收信息和指令。处理单元504还可往返存储器510通信,并且进一步通过输入/输出装置接口520提供用于可选显示器502的输出信息。输入/输出装置接口520还可接受来自诸如键盘、鼠标、数字笔等的可选输入装置524的输入。在一些实施方案中,远程命令服务114可包括比图5示出的组件更多(或更少)的组件。例如,远程命令服务114的一些实施方案可省略显示器202和输入装置224,同时通过一个或多个另选通信渠道(例如,通过网络接口506)提供输入/输出能力。
存储器510可包括计算机程序指令,处理单元504执行所述计算机程序指令以便实现一个或多个实施方案。存储器510通常包括RAM、ROM或其他永久性或非暂时性存储器。存储器510可存储操作系统514,所述操作系统514提供计算机程序指令以供处理单元504在中间服务器114的一般管理和操作中使用。存储器510还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器510包括用于接收和处理来自客户端装置102的内容请求的客户端接口软件512。另外,存储器510包括用于处理在通信中接收的嵌入代码的嵌入代码处理组件516。说明性地,嵌入代码处理组件516可包括用于处理话题部分通信以解析嵌入代码的指令和用于实现已经为特定代码配置的动作或功能的指令。
现在转向图6A至图6D,将描述用于处理内容消息的内容管理系统110的组件之间的说明性交互。更具体来说,将关于被协调装置112、客户端装置102和消息处理服务600之间的交互来描述图6A至图6C。如前所述,消息处理服务600可由包括协调器114或其他网络装备的各种装置实现。另外,被协调装置112可对应于被协调装置112(图3A)、被协调装置112(图3B)或其组合。然而,对交互的引用不应限于任何特定装置或装置组合,即使用于说明的目的。
参考图6A,将描述消息处理服务600的初始配置。说明性地,客户端或系统管理员利用有助于解释所接收通信的话题部分中的嵌入代码的信息来配置消息处理服务600。根据说明性实施方案,可根据MQTT消息传递协议形成通信,而不管用于跨通信网络104传输消息的实际通信协议是什么。特定于MQTT协议,每个消息与话题部分相关联,所述话题部分具有定义通信或以其他方式与通信相关联的一个或多个级别。下面的示例包括第一级别“基本级别”,接下来是一系列另外的级别,“级别1”至“级别n”。每个另外的级别由话题分隔符划定边界。
基本级别/级别1/级别2/级别3..../级别n
如前所述,在传统的MQTT协议中,接收消息的消息处理服务600将尝试使话题与已经注册来接收由话题发布的消息的一个或多个接收方装置相匹配。消息处理服务600可将确定限制为所有级别的精确匹配或者一个或多个级别的部分匹配。
根据本申请,除了描述通信主题的多个级别的传统标识之外,通信的话题部分包括一个或多个嵌入代码或指令。嵌入代码或指令可呈话题部分的由话题分隔符划定边界的级别的形式。嵌入代码可包括将其标识为嵌入代码而不是另外的级别的关键字或字符。在其他实施方案中,可在话题部分中的特定位置(例如,第一级别)处分配嵌入代码。这类话题部分的示例可包括但不限于:
代码/基本级别/级别1/级别2/级别3..../级别n
代码....代码/基本级别/级别1/级别2/级别3..../级别n
特殊字符_代码/基本级别/级别1/级别2/级别3..../级别n
现在参考图6A,在(1)处,对应于管理员或客户的客户端装置102可将配置信息传输到消息处理服务600。说明性地,配置信息对应于一个或多个指令、逻辑规则或处理步骤,所述一个或多个指令、逻辑规则或处理步骤定义消息处理服务600可基于匹配所接收消息的话题部分中的嵌入代码或标识符而对消息采取的一组动作。例如,消息处理服务600的一种配置可包括以下定义:如果没有网络连接性可用,是否应当由本地被协调装置112实现对应于所指派的任务的通信,或者如果网络连接性可用,是否应当由网络装置实现所指派的任务。在这个示例中,两个装置可订阅接收具有对应话题的内容消息,但是哪个装置接收消息可取决于对嵌入代码所标识的规则的评估。
在另一个示例中,消息处理服务600可被配置为基于标识与用于获取这种信息的指令相对应的一个或多个嵌入代码来获得另外的信息,诸如成本信息、路由信息、工作负载、服务级别信息等。在又一示例中,消息处理服务600可被配置为基于获得命令消息处理服务600执行可执行代码或指令以实现这种修改的嵌入代码来修改所接收消息的有效载荷部分的部分。说明性地,有效载荷部分的修改可包括:基于对标准的评估或可执行代码的添加/排除来选择可执行代码的特定部分。例如,消息处理服务600可基于时间标准(例如,在中午之前)或基于某种先决条件(例如,另一装置已经完成代码执行来执行代码的第一部分。在这方面,在消息传递协议的传统实现方式中,_消息处理服务600不对所接收消息进行任何另外的处理。另外,根据本申请,消息处理服务600可配置有由管理员通过客户端装置102指定的广泛多种另外的功能。
在(2)处,消息处理服务600处理配置信息并存储配置以用于后续处理。在这方面,消息处理服务600可维持嵌入代码的数据库或矩阵以用于匹配。另外,消息处理服务600可维持在标识了匹配的嵌入代码时将执行的另外的处理指令或可执行代码。在其他实施方案中,消息处理服务600可在标识了嵌入代码时利用诸如API的接口获得另外的指令或可执行代码。
参考图6B,将描述接收方装置(被协调装置112’和112”)的初始配置。在(1)处,被协调装置112’和112’'生成装置连接请求并将所述请求传输到消息处理服务600。说明性地,装置连接请求对应于与消息处理服务600对被协调装置112’和112”进行认证和授权相关联的建立过程。另外,在一些实施方案中,逻辑网络100可包括另外的网关组件,所述网关组件独立地或作为内容管理系统110的一部分管理向消息处理服务600进行的消息传输。这类网关组件可实现安全功能、负载平衡或其他网络处理服务。
在(2)处,消息处理服务600诸如通过验证安全信息、请求另外的信息或确定请求客户端计算装置102的特性来处理连接请求。在(3)处,如果连接请求是可接受的并被授权,则消息处理服务600将连接确认传输到请求消息处理服务600。在这方面,一旦被授权,客户端计算装置和消息处理服务600就可在诸如MQTT的消息传递协议中所定义的过程内开始通信。
现在参考图6C,在接收到连接确认之后,在(1)处,被协调装置112’和112”将一个或多个话题注册请求传输到消息处理服务600。说明性地,话题注册是根据消息传递协议定义的,使得被协调装置112’和112”可注册来接收由任何数量的内容提供商根据特定话题发布的内容。当应用于本申请时,被协调装置112’和112”注册来获得一个或多个话题。出于说明的目的,将提供示例,使得基于消息中的嵌入代码,将消息转发到已注册的被协调装置112’和112”将是不同的。
在注册之后的某个时刻,在(2)处,单独的计算装置602将一段或多段内容发布到消息处理服务600。说明性地,计算装置600可对应于被协调装置、基于网络的装置等。每一段已发布的内容都与话题相关联。出于说明性示例的目的,至少一个已发布的内容与内容/消息的话题部分中的嵌入代码相关联。
在(3)处,消息处理服务600使已注册的话题与已发布的话题相匹配,以确定客户端计算装置102应当接收具有更新话题的已发布内容。在(4)处,消息处理服务600解析通信的话题部分以标识一个或多个嵌入代码。在一些实施方案中,消息处理服务600可包括用于解析话题部分的功能。在其他实施方案中,消息处理服务600可利用另外的服务或组件来促进解析。
在(5)处,消息处理服务600处理解析后的嵌入代码。如上所述,消息处理服务600可匹配嵌入代码,然后执行已经基于匹配的嵌入代码来配置的代码或指令。为了对利用嵌入代码进行消息路由功能进行说明,参考图6D,在(6)处,消息处理服务600可将消息转发到被协调装置112”而不是被协调装置112’。例如,如果嵌入代码对应于网络连接性在被协调装置112’和112”处是否可用的确定,则用作消息处理服务600的协调器组件114可确定对应于任务的消息应当被发送到本地被协调装置而不是基于网络的任务处理器。
如前所述,在其他实施方案中,接收方装置也可被配置为处理消息的话题部分中的嵌入代码或其他信息。与上述过程类似,在这方面,被协调装置112”可用作消息处理组件600,以在(6)处解析消息的话题部分并在(7)处处理解析后的嵌入代码。如上所述,消息处理服务600可匹配嵌入代码,然后执行已经基于匹配的嵌入代码来配置的代码或指令。另外,在说明性示例的这个部分中,被协调装置112”可利用嵌入代码诸如通过以下操作来处理消息的有效载荷部分:修改可执行代码部分,排除或选择特定可执行代码部分,将定时考虑因素应用于可执行部分的执行,应用逻辑规则或考虑另外的标准作为执行代码部分的先决条件等。相关领域的技术人员将理解,虽然图6D示出了处理嵌入代码以影响消息的路由和利用嵌入代码处理有效载荷,但是两个实施方案无需一起实施。因此,可实现对嵌入代码的处理以影响路由,而无需接收方装置对嵌入代码的另外的处理。同样,可实现接收方装置对嵌入代码信息的处理,而不需要利用嵌入代码来影响路由。图7是示出根据说明性实施方案的由消息处理服务600实现的远程执行消息传递例程700的流程图。例程700示出了在消息路由期间在消息传递协议中利用嵌入代码信息。在框702处,消息处理服务600获得包括与装置(诸如被协调装置112或任何其他计算装置102)远程执行内容相关的至少一个话题的注册信息。如前所述,装置将一个或多个话题注册请求传输到消息处理服务600。说明性地,话题注册是根据消息传递协议定义的,使得装置可注册来接收由任何数量的内容提供商根据特定话题发布的内容。
在注册之后的某个时刻,在框704处,消息处理服务600获得具有话题部分的一个或多个发布。说明性地,某个计算装置602(图6C)将一段或多段内容发布到消息处理服务600。每一段已发布的内容都与话题相关联。出于说明性示例的目的,至少一个已发布的内容与对应于客户端计算装置102的已注册话题的嵌入代码相关联。另外,与话题相关联的所述一段已发布的内容包括内容的有效载荷部分。这类有效载荷部分的示例可包括将由被协调装置或网络装置执行的任务。
在框706处,消息处理服务600使已注册的话题与已发布的话题相匹配,以确定一个或多个装置应当接收具有话题的已发布内容以形成应当接收已发布的话题的客户端装置集。说明性地,由于消息处理服务600是根据诸如MQTT的消息传递协议配置的,因此可以消息传递协议所指示的方式完成使注册与话题发布相匹配。
在框708处,消息处理服务600标识消息的话题部分中的一个或多个嵌入代码。说明性地,消息处理服务600解析通信的话题部分以标识一个或多个嵌入代码。在一些实施方案中,消息处理服务600可包括用于解析话题部分的功能。例如,消息处理服务600可利用查找表来标识对应的嵌入代码。在其他实施方案中,消息处理服务600可利用另外的服务或组件来促进解析。
在框710处,消息处理服务600处理解析后的嵌入代码。如上所述,消息处理服务600可匹配嵌入代码,然后执行已经基于匹配的嵌入代码来配置的代码或指令。已经根据嵌入代码的处理结果标识了各种示例,包括但不限于,选择接收消息的注册装置,与消息传输相关的定时,消息的修改,考虑另外的标准等。
在框712处,消息处理服务600传输已发布的内容。类似地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在其他示例中,消息处理服务600可利用单独的传输协议。接收方装置处理所接收的已发布内容。
在框714处,消息处理服务600获得对应于消息的处理的处理结果。说明性地,客户端计算装置通过消息传递协议生成和发布与指示代码的处理结果的信息相关的内容。在一些实施方案中,处理结果可对应于代码的执行是否成功进行的二元确定。在另一个实施方案中,处理结果可包括指示代码/指令的执行的一个或多个值或者详述关于代码/指令的执行的信息的日志。以与结合更新话题的发布所描述的方式类似的方式,一个或多个处理结果的发布可与特定话题相关联,所述话题通常被称为“处理结果话题”。
在框716处,消息处理服务600使已注册的话题与已发布的话题相匹配,以确定管理装置104应当接收具有处理结果话题的已发布内容并传输所述已发布内容。说明性地,已发布内容的传输也是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在框720处,例程600终止。
图8是示出根据说明性实施方案的由被协调装置112或其他计算装置实施的远程执行消息传递例程800的流程图。如前所述,在本申请中,被协调装置112或其他计算装置可被视为消息处理服务600,以在消息处理中利用嵌入代码信息,而与其他组件是否也在消息路由中利用嵌入代码信息无关。然而,在这个示例中对被协调装置112的标识不应被解释为对例程800的应用的限制。在框802处,被协调装置112将一个或多个话题注册请求传输到消息处理服务600。如上所述,话题注册是根据消息传递协议定义的,使得被协调装置112可注册来接收由任何数量的内容提供商根据特定话题发布的内容。
响应于接收到已发布的内容,消息处理服务600使已注册的话题与已发布的话题相匹配,以确定客户端被协调装置112应当接收具有更新话题的已发布内容。如前所述,消息处理服务600还处理话题部分中的任何嵌入代码。在框804处,被协调装置112从消息处理服务600接收已发布的内容。说明性地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。
作为内容执行的执行的一部分或在内容执行之后,在框806处,被协调装置112处理嵌入代码并获得远程执行的结果。在一些实施方案中,处理结果可对应于代码的执行是否成功进行的二元确定。在另一个实施方案中,处理结果可包括指示代码/指令的执行的一个或多个值或者详述关于代码/指令的执行的信息的日志。在一些实施方案中,被协调装置112还可利用嵌入代码来修改处理消息的有效载荷部分的方式。在这种示例中,被协调装置112可实现与归因于消息处理服务600的功能类似的功能,以解析嵌入代码并实现结果。例如,被协调装置112可利用嵌入代码诸如通过以下操作来处理消息的有效载荷部分:修改可执行代码部分,排除或选择特定可执行代码部分,将定时考虑因素应用于可执行部分的执行,应用逻辑规则或考虑另外的标准作为执行代码部分的先决条件等。
在框808处,被协调装置112通过消息传递协议发布与指示代码的处理结果的信息相关的内容。说明性地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在框810处,例程800终止。
图9是说明性操作环境100的框图,所述操作环境100包括其中协调器914可操作以控制被协调装置912的一个或多个被协调环境910,以及可与被协调环境910交互(例如,以请求被协调装置912的状态改变)的客户端装置902,以及可协助与各种被协调环境910中的协调器914通信或配置所述协调器914的服务提供商环境920。
被协调环境910、客户端装置和服务提供商环境920可通过网络904进行通信,所述网络904可包括任何有线网络、无线网络或其组合。例如,网络904可以是个人局域网、局域网、广域网、空中广播网(例如,用于无线电或电视)、电缆网络、卫星网络、蜂窝电话网络或其组合。作为另一示例,网络904可以是可能由各种不同方操作的链接网络中的公共可访问网络(诸如互联网)。在一些实施方案中,网络904可以是私有或半私有网络,诸如公司或大学内联网。网络904可包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络904可使用协议和组件来通过互联网或任何其他前述类型的网络进行通信。例如,由网络904使用的协议可包括超文本传输协议(HTTP)、安全HTTP(HTTPS)、MQTT、受限制的应用协议(CoAP)等。用于通过互联网或任何其他前述类型的通信网络进行通信的协议和组件是本领域技术人员所熟知的,并且因此不在本文中进行更详细的描述。尽管图1中示出了网络904的所有组件,但是组件中的一个或多个(诸如路由器)可用作消息处理服务。
每个被协调环境910可包括通过执行环境910的网络(所述网络未在图1中示出)进行通信的协调器914和任何数量的被协调装置912。由于它们在被协调环境910内的关联,给定环境910内的被协调装置912和协调器914在通信网络方面可被认为相对于彼此是“本地”的。例如,给定环境910内的被协调装置912和协调器914可通过LAN或其他本地化通信网络加以连接。
每个被协调装置912可对应于被配置为与协调器914通信以管理被协调装置912的功能的计算装置。在一些情况下,被协调装置912可对应于具有强大的本地化用户接口能力的功能完备的计算装置,诸如膝上型计算机、台式机、独立媒体播放器等。在其他情况下,被协调装置912可对应于与另一主要功能相关联的薄型装置或嵌入装置,诸如嵌入在家用电器或装置(诸如冰箱、洗衣机、热水加热器、炉子、门锁、灯泡、电源插座、电开关等)内或作为附件附接到所述家用电器或装置的装置。在一些情境中,这类电器或装置被称为“智能”装置、IoT装置或“已连接”装置。这样,被协调装置912可包括有限的本地用户接口,并且被配置用于远程管理。在一些情况下,被协调装置912可以是有状态的,并且响应于指令而操作以改变它们的状态(例如,通过从“关”转为“开”等)。
如下面更详细描述的(例如,关于图10),协调器914可对应于执行指令以协调、管理或控制被协调装置912的操作的计算装置,而不需要传输到被协调装置912的指令在被协调环境910之外行进(因此增加了这些指令的安全性并增加了它们的传输速度)。具体来说,协调器914可包括处理器和存储器,所述处理器和存储器共同被配置来管理被协调装置912、客户端装置902和服务提供商网络920的装置的任何组合之间的通信。协调器还可被配置为以与服务提供商环境920的按需代码执行环境920类似的方式实现任务的执行。这些任务可实现各种用户定义的或非用户定义的功能,包括与被协调装置912、客户端装置902和服务提供商网络920的装置通信。这样,协调器914可被配置为允许对被协调装置912进行手动、自动或半自动控制。例如,协调器914可使得客户端装置902能够传输改变被协调装置912的状态的请求,并且致使这种状态改变发生。作为另一示例,协调器914可使得用户能够指定应当改变被协调装置912的状态的标准,然后在满足标准时自动操作以改变被协调装置912的状态。如下面将讨论的,协调器914的许多功能可通过任务建立,从而使得能够根据用户的需要快速改变这些功能。
客户端装置902可包括使得用户能够与被协调环境910、服务提供商环境920或两者通信的各种计算装置。通常,客户端装置902可以是任何计算装置,诸如台式计算机、膝上型计算机或平板计算机、个人计算机、可穿戴计算机、服务器、个人数字助理(PDA)、混合型PDA/移动电话、移动电话、电子书阅读器、机顶盒、语音命令装置、照相机、数字媒体播放器等。服务提供商环境920可向客户端装置902提供一个或多个用户接口、命令行接口(CLI)、应用程序编程接口(API)和/或用于与服务提供商环境920交互的其他可编程接口,诸如用来提交协调器914的配置并控制所述配置的部署,提交对应于要在协调器914上或服务提供商环境920的按需代码执行环境950上执行的任务的代码,查看与协调器914相关的日志记录或监控信息等。类似地,协调器914可向客户端装置902提供一个或多个用户接口、命令行接口(CLI)、应用程序编程接口(API)和/或用于与协调器914交互的其他可编程接口,诸如用来读取被协调装置912的状态,请求被协调装置912的状态改变,请求协调器914引起任务的执行等。虽然本文中可将一个或多个实施方案描述为使用用户接口,但是应当理解,这些实施方案可另外或另选地使用任何CLI、API或其他可编程接口。
服务提供商环境920可包括多个元件以使得能够配置、管理协调器914并且与协调器914通信。具体来说,服务提供商环境920包括使得能够向服务提供商环境920注册协调器914并且配置这类协调器914的管理和部署服务930,使得能够强制改变协调器914和被协调装置912的状态的装置影子服务940,以及提供任务的按需、动态执行和任务在协调器914上的部署和供应的按需代码执行环境950。
如图9所示,管理和部署服务930包括客户端和数据接口932以及配置数据存储库934,所述客户端和数据接口932以及配置数据存储库934可共同操作以使得能够向管理和部署服务930注册协调器914,生成协调器914的配置,并且将配置数据传输到协调器914。说明性地,客户端和数据接口932可提供一个或多个用户接口(例如,API、CLI、GUI等),用户可通过所述用户接口经由客户端装置902生成或提交协调器914的配置以用于存储在配置数据存储库934中。客户端和数据接口932还可提供一个或多个接口,协调器914可通过所述接口获得配置,使得根据所获得的配置重新配置协调器914。配置数据存储库934可对应于任何持久的或基本上持久的数据存储库,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、附网存储装置(NAS)、磁带驱动器或其任何组合。
装置影子服务940可包括使得能够创建、维持、读取、改变或删除装置(诸如协调器914或被协调装置912)的“影子状态”的元件。如以上所讨论,影子状态可对应于表示对应装置的期望状态的数据,所述期望状态可能或可能不镜像装置的当前状态。例如,关于协调器914,影子状态可包括协调器914的期望配置版本。关于被协调装置912,影子状态可包括被协调装置912的期望状态(例如,开关或灯泡的开或关、锁的锁定或解锁、恒温器的期望温度等)。装置影子服务940可使得用户能够通过客户端装置902或其他实体读取或修改装置的影子状态,并且还可与所述装置交互以使装置与影子状态同步。说明性地,装置影子服务940可包括接口942(其可包括例如API、CLI、GUI等)以及被配置来存储影子状态的影子数据存储库944,通过所述接口942可接收读取、写入、创建或删除影子状态的请求。影子数据存储库934可对应于任何持久的或基本上持久的数据存储库,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、附网存储装置(NAS)、磁带驱动器或其任何组合。关于装置影子的使用的进一步细节通常可在2016年6月29日提交的标题为“Device Representation Management UsingRepresentation Types”的美国专利申请号15/196,700(“'700申请”)中找到,所述申请的全部内容以引用的方式并入本文。
按需代码执行环境950可包括提供任务(例如,可移植代码段)的按需执行的多个装置。具体来说,按需代码执行环境950可包括前端952,用户可通过前端952经由客户端装置902将任务提交给按需代码执行环境950,并且调用任务在按需代码执行环境950上的执行。这类任务可存储在例如任务数据存储库954中,所述任务数据存储库954可对应于任何持久的或基本上持久的数据存储库,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、附网存储装置(NAS)、磁带驱动器或其任何组合。虽然未在图9中示出,但是按需代码执行系统950可包括各种另外的组件以使得能够执行任务,所述另外的组件诸如多个执行环境(例如,在按需代码执行环境950的物理主机装置上执行的容器或虚拟机),管理这类执行环境的工作者管理器,以及协助快速地(例如,不到10ms)使执行环境可供工作者管理器使用的加热池管理器。关于按需代码执行环境的进一步细节可在'556专利中找到,所述专利以引用的方式并入上文。
如上所述,在按需代码执行环境950和协调器914处都可利用任务。如上所述,任务对应于用户代码的单独集合(例如,用来实现特定功能)。对如本文所用的用户代码的引用可指用特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可互换使用。可例如结合由用户开发的特定web应用程序或移动应用程序来执行这种用户代码以实现特定功能。所述代码的特定执行在本文中称为“任务执行”或简称为“执行”。作为非限制性示例,可用JavaScript(例如,node.js)、Java、Python和/或Ruby(和/或另一种编程语言)编写任务。可以各种方式“触发”任务以在按需代码执行系统950或协调器914上执行。在一个实施方案中,客户端装置902或其他计算装置可传输执行任务的请求,所述请求通常可称为对执行任务的“调用”。这类调用可包括将要执行的用户代码(或其位置)和将要用于执行用户代码的一个或多个变元。例如,调用可连同执行任务的请求一起提供任务的用户代码。在另一个示例中,调用可通过任务的名称或标识符来标识先前上传的任务。在又一个示例中,对应于任务的代码可被包括在对任务的调用中,并且在由协调器914或按需代码执行系统950接收请求之前被上传到单独的位置(例如,协调器914的存储装置、网络可访问的存储服务或任务数据存储库954)中。协调器914或按需代码执行系统950的请求接口可从用户接收作为安全超文本传输协议(HTTPS)请求的对执行任务的调用。此外,当执行任务时,还可处理并利用包括在HTTPS请求中的任何信息(例如,报头和参数)。如以上所讨论,可使用任何其他协议(包括例如HTTP、MQTT和CoAP)来将包含任务调用的消息传递到请求接口922。
对执行任务的调用可指定将要与对应于任务的用户代码一起使用的一个或多个第三方库(包括本机库)。在一个实施方案中,调用可向协调器914或按需代码执行系统950提供ZIP文件,这个ZIP文件包含对应于请求执行的任务的用户代码和任何库(和/或其存储位置的标识)。在一些实施方案中,调用包括指示将要执行的任务的程序代码、编写程序代码的语言、与调用相关联的用户和/或专供执行程序代码使用的计算资源(例如,存储器等)的元数据。例如,任务的程序代码可通过调用提供,先前由用户上传,由协调器914或按需代码执行系统950(例如,标准例程)提供,和/或由第三方提供。在一些实施方案中,这类资源级约束(例如,将要分配多少存储器用于执行特定用户代码)是针对特定任务指定的,并且可能不会在每次执行任务时改变。在这样的情况下,协调器940或按需代码执行系统950可在接收到每个单独的调用之前访问这类资源级约束,并且单独的调用可能不指定这类资源级约束。在一些实施方案中,调用可指定其他约束,诸如指示所述调用请求什么种类的许可或权限来执行任务的许可数据。这种许可数据可由按需代码执行系统910用来(例如,在私有网络上)访问私有资源。
在一些实施方案中,调用可指定应当被采用来处置处理所述调用的行为。在这类实施方案中,调用可包括用于启用执行所述调用中提及的任务的一种或多种执行模式的指示符。例如,调用可包括用于指示任务是否应当以调试模式执行的标志或报头,在所述调试模式下可结合任务的执行而生成的调试和/或日志记录输出被(例如,通过控制台用户接口)提供回给用户。在这种示例中,协调器914或按需代码执行系统950可检查调用并查找标志或报头,并且如果标志或报头存在,那么协调器914或按需代码执行系统950可修改在其中执行任务的执行环境的行为(例如,日志记录功能),并且致使输出数据被提供回给用户。在一些实施方案中,通过由协调器914或按需代码执行系统950提供给用户的用户接口将行为/模式指示符添加到调用。还可基于调用中提供的指示来启用或禁用其他特征,诸如源代码分析、远程调试等。
服务提供商环境920在图9中被描绘为在分布式计算环境中操作,所述分布式计算环境包括使用一个或多个计算机网络(图9中未示出)加以互连的若干计算机系统。服务提供商环境920还可在具有比图9所示的装置数量更少或更多的装置的计算环境内操作。因此,图9中对服务提供商环境920的描绘应被视为说明性的而不是限制本公开。例如,服务提供商环境920或其各个组成部分可实现各种Web服务组件、托管的计算环境或“云”计算环境和/或对等网络配置,以实现本文描述的过程的至少一部分。
另外,服务提供商环境920可在硬件或由硬件装置执行的软件中直接实现,并且可例如包括在物理计算机硬件上实现的一个或多个物理或虚拟服务器,所述物理计算机硬件被配置来执行用于执行本文将描述的各种特征的计算机可执行指令。一个或多个服务器可在地理上分散或者在地理上共同位于例如一个或多个数据中心中。在一些情况下,一个或多个服务器可作为快速供应和释放的计算资源的系统的一部分操作,通常被称为“云计算环境”。
图10描绘管理给定被协调环境910内的被协调装置912的计算系统(称为协调器914)的总体架构。图10中描绘的工作者管理器940的总体架构包括可用于实现本公开的各方面的计算机硬件和软件模块的布置。硬件模块可使用物理电子装置来实现,如下文更详细地讨论的。协调器914可包括比图10所示的那些元件多得多(或少得多)的元件。然而,为了提供可行的公开,没有必要示出所有这些通常的常规元件。此外,图10中所示的总体架构可用于实现图9所示的其他组件中的一个或多个。如图所示,协调器914包括处理单元1004、网络接口1006、计算机可读介质驱动器1007、输入/输出装置接口1008,它们全部都可通过通信总线彼此通信。网络接口1006可提供到一个或多个网络或计算系统的连接性。因此,处理单元1004可通过网络904从其他计算系统或服务接收信息和指令。处理单元1004还可往返存储器1050通信,并且进一步通过输入/输出装置接口1008提供用于可选显示器(未示出)的输出信息。输入/输出装置接口1008还可接受来自可选输入装置(未示出)的输入。
存储器1050可包含计算机程序指令(在一些实施方案中被分组成模块),处理单元1004执行所述计算机程序指令以便实现本公开的一个或多个方面。存储器1050通常包括随机存取存储器(RAM)、只读存储器(ROM)和/或其他持久、辅助或非暂时计算机可读介质。存储器1050可存储操作系统1052,所述操作系统1052提供计算机程序指令以供处理单元1004在协调器914的一般管理和操作中使用。存储器1050还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器1050包括进程管理器1054、调度器1056、部署代理1058和通信管理器1060。
调度器1056和部署代理1058可由处理单元1004执行以选择由处理单元1004执行的任务,并且管理这样的任务执行。具体来说,调度器1056可包括用于选择在给定时间点执行的任务以及暂停任务执行(例如,在协调器914处的资源受限制的情况下)的指令。部署代理1058可包括用于选择执行任务的适当执行环境1070,向执行环境2150提供对任务执行期间所需资源的适当访问,以及致使在执行环境1070内执行任务的指令。如本文所用的执行环境1070是指存储器250的执行任务的逻辑部分。在一个实施方案中,执行环境1070以编程方式分离,使得禁止第一执行环境1070中的代码执行修改与另一执行环境1070相关联的存储器。说明性地,执行环境1070可对应于“容器”、操作系统级虚拟化环境或“沙盒”环境,诸如“chroot jail”或Python虚拟环境“virtualenv”。在其他情况下,执行环境1070可对应于虚拟机环境(例如,JAVA虚拟机、具有不同操作系统的虚拟化硬件装置等)。在其他情况下,执行环境1070可以是被分配来执行任务的存储器空间,而不必利用虚拟化。
通信管理器1060可促进在协调器上执行的任务之间以及协调器914与其他装置(例如,客户端装置902和被协调装置912)之间的通信。具体来说,通信管理器1060可被配置为获得发往协调器914的消息并将消息转发到适当的目的地。例如,通信管理器260可在任务、被协调装置912、客户端装置902和服务提供商执行环境920的装置的任何组合之间路由消息。如下面将更详细解释的,通信管理器260可转换与特定话题相关联的消息,使得它们指向由装置的较小子集订阅的话题。
由协调器914执行的任务被示出为逻辑地分组在任务存储器空间1080内,所述任务存储器空间1080可对应于存储器1050的被配置来存储对应于每个任务的代码的逻辑单元。如图10所示,任务存储器空间1080可包括可由处理单元1004执行以实现协调器914的功能的多个任务,所述多个任务包括路由器任务1082、一个或多个通信管理器任务1086、影子服务任务1088和一个或多个客户端提供的任务1090。
路由器任务1082可对应于可执行以协助在协调器内、向协调器和从协调器路由消息的代码的一部分。在一个实施方案中,路由器任务1082实现“路由表”以确定消息的适当目的地。例如,通信管理器1060可将在协调器914处获得的消息(例如,由于任务执行所致的生成或在输入/输出接口1008处的接收)转发到路由器任务1082,所述路由器任务1082可利用路由表来确定寻址到特定标识符的消息应当被路由到给定任务、给定客户端装置902或给定被协调装置902。路由表还可指示寻址到标识符的消息应当被传输到服务提供商环境920(例如,传输到装置影子服务940或按需代码执行系统950)。在一个实施方案中,路由表可使用“话题”作为标识符,使得根据为特定话题指定的路由来路由与所述话题相关联的消息。路由表还可包括关于如何基于消息的来源路由所述消息的信息。例如,基于消息是否是从第一任务、第二任务、第一被协调装置912等接收的,可不同地路由寻址到给定话题的消息。通过利用路由表,路由器任务282可使消息能够被重定向,而无需改变这种消息的发送者的操作(例如,无需重写生成消息的任务的代码、无需修改生成消息的被协调装置912的软件等)。
通信管理器任务1086可根据这类通信的协议实现协调器914与多个不同外部装置(例如,被协调装置902)之间的通信。例如,第一通信管理器任务1086可被配置为使用BLUETOOTHTM协议来管理通信,第二通信管理器可被配置为使用HTTP协议来管理通信等。在一些情况下,多个通信管理器任务1086可共同工作以实现通信。例如,第一通信管理器任务1086可通过TCP协议实现通信,而第二通信管理器任务1086可通过MQTT协议(其利用TCP协议并因此可利用第一通信管理器任务1086)实现通信。因为不同的通信管理器任务286可改变协调器914通过不同协议进行通信的能力,并且因为可通过重新配置协调器914来改变协调器914的任务,所以协调器914可快速地被重新配置为利用各种不同的通信协议。
影子服务任务1088可促进对在协调器914处维持的装置影子的管理和与所述装置影子的交互。说明性地,影子服务任务288可实现的功能与由装置影子服务940在本地向协调器914提供的功能类似。因此,影子服务任务1088可维持被协调装置912的影子状态(表示期望状态的数据),并且允许读取或写入这种数据。影子服务任务288还可使被协调装置912能够与所述装置的装置影子同步。因此,通过修改被协调装置912的装置影子,可改变被协调装置912的状态。通过读取被协调装置912的装置影子,可确定被协调装置912的状态。在一些情况下,影子服务任务1088还可与给定装置的另一装置影子(诸如由装置影子服务940维持的装置影子)协调。例如,影子服务任务1088可使本地装置影子与存储在装置影子服务940处的装置影子同步,解决本地装置影子与存储在装置影子服务940处的装置影子之间的冲突等。
除了上述任务(其中每一个可说明性地由与服务提供商环境920相关联的实体提供)之外,任务存储器空间1080可包括任意数量的客户端提供的任务1090,所述客户端提供的任务1090可对应于由客户端装置902生成并提交给服务提供商环境920以便部署到协调器914的可执行代码。这样,客户端提供的任务1090所提供的功能可根据提交用户的需要而变化。在一些情况下,客户端提供的任务1090可用编码语言编写,对于所述编码语言,存储器1050包括语言运行时。例如,在协调器914支持诸如node.js、Go、JAVA和Python的语言的情况下,客户端提供的任务290可包括用这些语言中的任一种编写的可执行代码。
另外,存储器1050包括配置数据部分1052,其表示存储器1050的存储协调器914的配置数据的逻辑部分。配置数据可包括例如协调器914的当前部署版本、由任务存储器空间1080的任务存储的数据或者在协调器914的操作中使用的其他数据。
为了实现协调器914的配置(和重新配置),存储器1050还包括部署代理1058。部署代理1058可对应于可执行以进行以下操作的代码:向服务提供商环境920注册协调器,确定协调器914的期望配置,并且在协调器914的当前配置与期望配置不匹配的情况下,获得协调器914的配置数据并修改存储器1050以实现期望配置。
图11A描绘根据本申请的说明性被协调装置912A的架构的一个实施方案。图11A中描绘的被协调装置912A的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。如图所示,被协调装置912A包括处理单元1104、网络接口1106、计算机可读介质驱动器1107、输入/输出装置接口1120、可选显示器1102和输入装置1124,它们全部都可通过通信总线彼此通信。说明性地,作为嵌入装置,被协调装置912A可具有更有限的功能和组件,诸如输入或输出。
网络接口1106可提供到一个或多个网络或计算系统(诸如图9的网络904)的连接性。因此,处理单元1104可通过网络从其他计算系统或服务接收信息和指令。处理单元1104还可往返存储器1110通信,并且进一步通过输入/输出装置接口1120提供用于可选显示器1102的输出信息。输入/输出装置接口1120还可接受来自诸如键盘、鼠标、数字笔等的可选输入装置1124的输入。在一些实施方案中,被协调装置912A可包括比图11A示出的组件更多(或更少)的组件。例如,被协调装置912的一些实施方案可省略显示器1102和输入装置1124,同时通过一个或多个另选通信渠道(例如,通过网络接口1106)提供输入/输出能力。另外,被协调装置912A也可完全省略输入和输出接口1120。
存储器1110可包括计算机程序指令,处理单元1904执行所述计算机程序指令以便实现一个或多个实施方案。存储器1110通常包括RAM、ROM或其他永久性或非暂时存储器。存储器1110可存储操作系统1114,所述操作系统1114提供计算机程序指令以供处理单元1104在被协调装置912A的一般管理和操作中使用。存储器1110还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器1110包括用于访问内容的浏览器应用程序1116。说明性地,浏览器应用程序1116可包含完整的软件浏览器应用程序、浏览器应用程序的部分,或者仅仅是提供数据连接性的软件应用程序(或可执行指令)。
图11B描绘根据本申请的说明性被协调装置912B的另选架构的一个实施方案。图11B中描绘的被协调装置912B的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。然而,被协调装置912B可与减少的组件相关联,这可能限制被协调装置912B的计算功能和操作。如图所示,被协调装置912B包括与通信总线通信的处理单元1150和网络接口1152。与图11A的被协调装置912BA不同,被协调装置912B可不具有计算机可读介质驱动器、输入/输出装置接口、可选显示器或输入装置。
网络接口1152可提供到一个或多个网络或计算系统(诸如图9的网络904)的连接性。因此,处理单元1150可通过网络从其他计算系统或服务接收信息和指令。存储器1154可包括计算机程序指令,处理单元1150执行所述计算机程序指令以便实现一个或多个实施方案。存储器1154通常包括RAM、ROM或其他永久性或非暂时存储器。在这个实施方案中,存储器1154可存储完整的操作系统,所述完整的操作系统提供计算机程序指令以供处理单元1150在被协调装置912B的一般管理和操作中使用。相反,在一个实施方案中,存储器1154包括用于访问接收和处理指令的接口软件组件1156。
图12描绘根据本申请的说明性客户端装置902的架构的一个实施方案。图12中描绘的客户端装置902的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。如图所示,客户端装置902包括处理单元1204、网络接口1206、计算机可读介质驱动器1207、输入/输出装置接口420、可选显示器1202和输入装置1224,它们全部都可通过通信总线彼此通信。
网络接口1206可提供到一个或多个网络或计算系统(诸如图9的网络904)的连接性。因此,处理单元121204可通过网络从其他计算系统或服务接收信息和指令。处理单元121204还可往返存储器1210通信,并且进一步通过输入/输出装置接口1220提供用于可选显示器1202的输出信息。输入/输出装置接口420还可接受来自诸如键盘、鼠标、数字笔等的可选输入装置1224的输入。在一些实施方案中,客户端装置902可包括比图12示出的组件更多(或更少)的组件。例如,被协调装置912的一些实施方案可省略显示器1202和输入装置1224,同时通过一个或多个另选通信渠道(例如,通过网络接口1206)提供输入/输出能力。另外,客户端装置902也可完全省略输入和输出接口420。
存储器1210可包括计算机程序指令,处理单元1904执行所述计算机程序指令以便实现一个或多个实施方案。存储器1210通常包括RAM、ROM或其他永久性或非暂时存储器。存储器1210可存储操作系统1214,所述操作系统1214提供计算机程序指令以供处理单元121204在客户端装置902的一般管理和操作中使用。存储器1210还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器1210包括用于访问内容的浏览器应用程序1216。说明性地,浏览器应用程序1216可包含完整的软件浏览器应用程序、浏览器应用程序的部分,或者仅仅是提供数据连接性的软件应用程序(或可执行指令)。
图13描绘用于实现本文描述的消息处理服务组件的说明性计算装置的架构的一个实施方案。如前所述,环境中的一个或多个计算装置可用作消息处理服务,诸如MQTT代理。在其他实施方案中,消息处理服务可在网络组件中实现。因此,图13中描绘的消息处理服务的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。如图所示,远程命令服务914包括处理单元1304、网络接口1306、计算机可读介质驱动器1307、输入/输出装置接口520、可选显示器1302和输入装置1324,它们全部都可通过通信总线彼此通信。远程命令服务914的组件可以是物理硬件组件或在虚拟化环境中实现。
网络接口1306可提供到一个或多个网络或计算系统(诸如图9的网络950)的连接性。因此,处理单元1304可通过网络从其他计算系统或服务接收信息和指令。处理单元1304还可往返存储器1310通信,并且进一步通过输入/输出装置接口520提供用于可选显示器1302的输出信息。输入/输出装置接口520还可接受来自诸如键盘、鼠标、数字笔等的可选输入装置524的输入。在一些实施方案中,远程命令服务914可包括比图13示出的组件更多(或更少)的组件。例如,远程命令服务914的一些实施方案可省略显示器1302和输入装置1324,同时通过一个或多个另选通信渠道(例如,通过网络接口1306)提供输入/输出能力。
存储器1310可包括计算机程序指令,处理单元1304执行所述计算机程序指令以便实现一个或多个实施方案。存储器1310通常包括RAM、ROM或其他永久性或非暂时存储器。存储器1310可存储操作系统13141314,所述操作系统13141314提供计算机程序指令以供处理单元1304在中间服务器914的一般管理和操作中使用。存储器1310还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器1310包括用于接收和处理来自客户端装置902的内容请求的客户端接口软件1312。另外,存储器1310包括用于处理所接收通信的通信管理器组件1316。说明性地,通信管理器1316可转换与特定话题相关联的消息,使得它们指向由装置的较小子集订阅的话题。
现在转向图14A至图14D,将描述用于处理内容消息的内容管理系统910的组件之间的说明性交互。更具体来说,将关于被协调装置912、客户端装置902和消息处理服务之间的交互来描述图14A至图14D。如前所述,消息处理服务可由包括协调器914或其他网络装备的各种装置实现。另外,被协调装置912可对应于被协调装置912(图11A)、被协调装置912(图11B)或其组合。然而,对交互的引用不应限于任何特定装置或装置组合,即使用于说明的目的。
参考图14A,将描述消息处理服务的初始配置。说明性地,客户端或系统管理员使用有助于解释所接收通信的信息来配置消息处理服务。在一个实施方案中,消息处理服务可由服务提供商环境920实现,以向若干潜在的被协调环境910中的一个提供通信。在另一个实施方案中,消息处理服务可由协调器914实现,以向若干被协调装置912中的一个提供通信。因此,图14A至图14D不应限于仅在任一实施方案或其他变型上实现。然而,出于说明的目的,将关于协调器914与一组被协调装置之间的交互来描述图14A至图14D。
根据说明性实施方案,可根据MQTT消息传递协议形成通信,而不管用于跨通信网络904传输消息的实际通信协议是什么。特定于MQTT协议,每个消息与话题部分相关联,所述话题部分具有定义通信或以其他方式与通信相关联的一个或多个单词分组。每个可分离的单词分组通常可称为级别,并且话题部分可具有多个级别。下面的示例包括第一级别“基本级别”,接下来是一系列另外的级别,“级别1”至“级别n”。每个级别由话题分隔符划定边界。
基本级别/级别1/级别2/级别3..../级别n
如前所述,在传统的MQTT协议中,接收消息的消息协调器914将尝试使话题与已经注册来接收由话题发布的消息的一个或多个接收方装置相匹配。例如,消息协调器914将查找消息的一个或多个话题部分以与话题注册(完全地或部分地)相匹配。协调器914消息处理服务可将确定限制为所有级别的精确匹配或者一个或多个级别的部分匹配。
现在参考图14A14A,在(1)处,对应于管理员或客户的客户端装置902可将配置信息传输到协调器914。说明性地,配置信息对应于一个或多个指令、逻辑规则或处理步骤,所述一个或多个指令、逻辑规则或处理步骤定义协调器914消息处理服务可基于匹配所接收消息的话题部分、所述消息的来源等而对消息采取的一组动作。例如,协调器914消息处理服务的一种配置可包括以下定义:是否应当由特定被协调装置912实现对应于所指派的任务的通信。在这个示例中,一组被协调装置912可订阅接收具有对应话题的内容消息,但是哪个装置接收消息可取决于对协调器914所标识的规则的评估。
在另一个示例中,协调器914可被配置为基于处理所接收消息来获得另外的信息,诸如成本信息、路由信息、工作负载、服务级别信息、安全信息等。在这方面,在传统消息协议实现方式中,协调器914消息处理服务不对所接收消息进行任何另外的处理,或者可能需要另外的外部网络通信或组件来做出路由决定。另外,根据本申请,协调器914可配置有由管理员通过客户端装置902指定的广泛多种另外的路由和选择功能。尽管被示出为直接通信来配置协调器914,但是在一些实施方案中,客户端计算装置902将通过消息处理系统920与协调器914间接交互。
在(2)处,协调器914处理配置信息并存储配置以用于后续处理。在这方面,协调器914可维持路由和选择信息,以用于确定应当如何将所接收消息发布给潜在的接收方。说明性地,存储的配置信息可呈业务规则、逻辑规则或路由表的形式,所述业务规则、逻辑规则或路由表允许协调器914获得一组输入或信息,基于规则或逻辑来评估所述一组输入并确定应当接收发布消息的潜在接收方的子集或有限集。在这方面,对规则或逻辑的评估有助于排除或拒绝向潜在接收方的不同子集发布消息或者验证所有潜在接收方都应当接收消息。在其他实施方案中,协调器914可在处理信息时利用诸如API的接口来获得另外的指令或可执行代码。例如,协调器914可访问第三方安全服务提供商,所述第三方安全服务提供商可促进协调器914的配置或者提供由协调器914用来评估已发布消息的信息。
参考图14B,将描述接收方装置(被协调装置912’和912”)的初始配置。在(1)处,被协调装置912’和912”生成装置连接请求并将所述请求传输到协调器914。说明性地,装置连接请求对应于与协调器914对被协调装置912’和912”进行认证和授权相关联的建立过程。另外,在一些实施方案中,逻辑网络100可包括另外的网关组件,所述网关组件独立地或作为内容管理系统910的一部分管理向协调器914进行的消息传输。这类网关组件可实现安全功能、负载平衡或其他网络处理服务。
在(2)处,协调器914诸如通过验证安全信息、请求另外的信息或确定请求客户端计算装置902的特性来处理连接请求。在(3)处,如果连接请求是可接受的并被授权,则消息处理服务1400将连接确认传输到请求协调器914。在这方面,一旦被授权,被协调装置912和912’以及协调器914就可在诸如MQTT的消息传递协议中所定义的过程内开始通信。另外,被协调装置912和912’可提供有助于上述路由过程的另外的安全信息。
现在参考图14C,在接收到连接确认之后,在(1)处,被协调装置912’和912”将一个或多个话题注册请求传输到协调器914。说明性地,话题注册是根据消息传递协议定义的,使得被协调装置912’和912”可注册来接收由任何数量的内容提供商根据特定话题发布的内容。当应用于本申请时,被协调装置912’和912”注册来获得一个或多个话题。出于说明的目的,将提供示例,使得基于消息中的嵌入代码,将消息转发到已注册的被协调装置912’和912”将是不同的。
在注册之后的某个时刻,在(2)处,单独的计算装置1402将一段或多段内容发布到协调器914。说明性地,协调器914可接收可对应于从服务提供商环境920传输的通信的消息。每一段已发布的内容都与话题相关联。出于说明性示例的目的,至少一个已发布的内容与内容/消息的话题部分相关联,所述话题部分对应于由被协调装置912和912’向协调器914注册的话题。在这方面,所述消息可包括话题部分中的一个或多个级别,所述一个或多个级别可用于使所接收消息与已注册的被协调装置相匹配。
在(3)处,协调器914使已注册的话题与已发布的话题相匹配,以确定被协调装置应当接收。在这方面,协调器914可确定已经注册来接收消息的一组被协调装置912。相关领域的技术人员将理解,在MQTT消息传递协议或其他消息传递协议的传统实现方式中,协调器914将所接收消息发送到所有已注册的被协调装置。在(4)处,协调器914处理通信的话题部分,以从所述一组所标识的已注册的被协调装置中标识应当接收已发布的消息的一个或多个被协调装置。在一些实施方案中,协调器914可包括处理话题部分的功能,诸如通信管理器组件260。在其他实施方案中,协调器914可利用另外的服务或组件来促进解析。更具体来说,协调器914可利用各种业务规则或路由表来标识将接收消息的已注册被协调装置912的子集。因此,协调器914可评估业务规则或路由表以标识已注册的被协调装置912中的哪一个将不接收已发布的消息。
在(5)处,协调器914消息处理服务并且可致使消息被发往已注册装置的所选子集。在一个实施方案中,协调器914可被配置为将消息直接传输到所选择的已注册装置。在这个实施方案中,协调器914可使用如业务规则或逻辑中所指定的相同的消息传递协议或不同的通信协议。在另一个实施方案中,协调器914可关联一个或多个二级话题发布,所述一个或多个二级话题发布将是适用的或匹配所选择的已注册装置。在这个实施方案中,不会为未选择的装置注册二级话题发布,诸如用于单独装置的二级话题发布。为了对利用二级话题发布进行说明,参考图14D14D,在(6)处,消息处理服务可致使消息转发到被协调装置912”而不是被协调装置912’912。另外,在一些实施方案中,协调器914可选择可能尚未注册来根据原始话题接收消息但仍由协调器914选择的被协调装置912。
图15是示出根据说明性实施方案的由消息处理服务实现的远程执行消息传递例程1500的流程图。例程1500示出了在消息路由期间在消息传递协议中利用业务规则、路由表或其他逻辑信息。在框1502处,消息处理服务获得包括与装置(诸如被协调装置912或任何其他计算装置902)远程执行内容相关的至少一个话题的注册信息。如前所述,装置将一个或多个话题注册请求传输到消息处理服务。说明性地,话题注册是根据消息传递协议定义的,使得装置可注册来接收由任何数量的内容提供商根据特定话题发布的内容。如前所述,话题注册可对应于单独装置或一组装置。
在注册之后的某个时刻,在框1504处,消息处理服务获得具有话题部分的一个或多个发布。说明性地,一些计算装置1402(图14C14C)将一段或多段内容发布到消息处理服务。每一段已发布的内容都与话题相关联。出于说明性示例的目的,至少一个已发布的内容与对应于客户端计算装置902的已注册话题的嵌入代码相关联。另外,与话题相关联的所述一段已发布的内容包括内容的有效载荷部分。这类有效载荷部分的示例可包括将由被协调装置或网络装置执行的任务。
在框1506处,消息处理服务使已注册的话题与已发布的话题相匹配,以确定一个或多个装置应当接收具有话题的已发布内容以形成应当接收已发布的话题的客户端装置集。说明性地,由于消息处理服务是根据诸如MQTT的消息传递协议配置的,因此可以消息传递协议所指示的方式完成使注册与话题发布相匹配。说明性地,话题部分的匹配可对应于话题部分的所有级别的匹配或至少一个级别的部分匹配。此外,匹配可对应于基本级别的匹配,而其他级别可被忽略或用于二级匹配。
在框1508处,协调器914处理话题部分以选择应当接收消息的装置的子集。在一些实施方案中,消息处理服务可包括诸如业务规则、路由表、逻辑规则等功能,以选择已注册装置的子集。在一个方面,协调器914可评估业务规则或路由表,所述业务规则或路由表标识应当接收所接收消息的被协调装置912的子集。说明性地,业务规则或路由表可包含信息,诸如发起者的源地址、话题部分的一个或多个级别中的标识信息、所标识的接收方装置912的安全配置信息、时间戳信息、关于被协调装置的利用信息、财务成本信息等。在其他示例中,如果一个或多个接收方装置912可另外有资格或可用于接收消息,则业务规则可包括随机选择或加权选择算法。例如,协调器914可配置有业务规则,所述业务规则使来源标识符(诸如消息的来源的网络地址)与一个或多个所选择的接收方装置912相关联。在另一示例中,协调器914可配置有安全规范信息,所述安全规范信息确定最低安全配置或者为所接收消息指定安全规范的类型。在这个示例中,协调器914然后可利用一个或多个已注册的安全装置的安全信息,并确定接收方装置中的哪一个满足指定的安全规范。在又一个示例中,协调器914可配置有白名单或黑名单,所述白名单基于一天中的时间、消息类型或其他信息来标识所有可用的接收方装置,所述黑名单标识应当被排除的一个或多个接收方装置。
在其他方面,协调器914可从单独被协调装置912接收信息,所述信息指示所述被协调装置912接收消息的可用性或以其他方式提供上文标识的信息中的一些。在其他实施方案中,消息处理服务可利用另外的服务或组件来促进处理。另外,在框1508处,消息处理服务然后选择已经与所选择的接收方装置相关联而不与未选择的接收方装置相关联的二级话题。
在框1510处,协调器914根据对话题的子集的选择来传输已发布的内容。类似地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在其他示例中,消息处理服务可利用单独的传输协议。接收方装置处理所接收的已发布内容。在其他示例中,协调器914可利用一个或多个二级话题发布,所述一个或多个二级话题发布将致使消息被发布到被协调装置912的所选子集。
在框1512处,消息处理服务获得对应于消息的处理的处理结果。说明性地,客户端计算装置通过消息传递协议生成和发布与指示代码的处理结果的信息相关的内容。在一些实施方案中,处理结果可对应于代码的执行是否成功进行的二元确定。在另一个实施方案中,处理结果可包括指示代码/指令的执行的一个或多个值或者详述关于代码/指令的执行的信息的日志。以与结合更新话题的发布所描述的方式类似的方式,一个或多个处理结果的发布可与特定话题相关联,所述话题通常被称为“处理结果话题”。
在框1514处,消息处理服务使已注册的话题与已发布的话题相匹配,以确定管理装置904应当接收具有处理结果话题的已发布内容并传输所述已发布内容。说明性地,已发布内容的传输也是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在框1516处,例程1500终止。
图16是示出根据说明性实施方案的由被协调装置912或其他计算装置实施的远程执行消息传递例程1600的流程图。如前所述,在本申请中,被协调装置912或其他计算装置可以被视为消息处理服务,以在消息处理中利用嵌入代码信息,而与其他组件是否也在消息路由中利用嵌入代码信息无关。然而,在这个示例中对被协调装置912的标识不应被解释为对例程1600的应用的限制。在框1602处,被协调装置912将一个或多个话题注册请求传输到消息处理服务1400。如上所述,话题注册是根据消息传递协议定义的,使得被协调装置912可注册来接收由任何数量的内容提供商根据特定话题发布的内容。
响应于接收到已发布的内容,消息处理服务1400使已注册的话题与已发布的话题相匹配,以确定客户端被协调装置912应当接收已发布内容。如前所述,消息处理服务用原始注册处理内容,然后将消息转发到所选择的被协调装置912。在框1604处,被协调装置912从协调器9141400接收已发布的内容。说明性地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。
作为内容执行的执行的一部分或在内容执行之后,在框1606处,被协调装置912处理嵌入代码并获得远程执行的结果。在一些实施方案中,处理结果可对应于代码的执行是否成功进行的二元确定。在另一个实施方案中,处理结果可包括指示代码/指令的执行的一个或多个值或者详述关于代码/指令的执行的信息的日志。
在框1608处,被协调装置912通过消息传递协议发布与指示代码的处理结果的信息相关的内容。说明性地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在框1610处,例程1600终止。
图17是说明性操作环境100的框图,所述操作环境100包括其中协调器1714可操作以控制被协调装置1712的一个或多个被协调环境1710,以及可与被协调环境1710交互(例如,以请求被协调装置1712的状态改变)的客户端装置1702,以及可协助与各种被协调环境1710中的协调器1714通信或配置所述协调器1714的服务提供商环境1720。
被协调环境1710、客户端装置和服务提供商环境1720可通过网络1704进行通信,所述网络1704可包括任何有线网络、无线网络或其组合。例如,网络1704可以是个人局域网、局域网、广域网、空中广播网(例如,用于无线电或电视)、电缆网络、卫星网络、蜂窝电话网络或其组合。作为另一示例,网络1704可以是可能由各种不同方操作的链接网络中的公共可访问网络(诸如互联网)。在一些实施方案中,网络1704可以是私有或半私有网络,诸如公司或大学内联网。网络1704可包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络1704可使用协议和组件来通过互联网或任何其他前述类型的网络进行通信。例如,由网络1704使用的协议可包括超文本传输协议(HTTP)、安全HTTP(HTTPS)、MQTT、受限制的应用协议(CoAP)等。用于通过互联网或任何其他前述类型的通信网络进行通信的协议和组件是本领域技术人员所熟知的,并且因此不在本文中进行更详细的描述。尽管图17中示出了网络1704的所有组件,但是组件中的一个或多个(诸如路由器)可用作消息处理服务。
每个被协调环境1710可包括通过执行环境1710的网络(所述网络未在图17中示出)进行通信的协调器1714和任何数量的被协调装置1712。由于它们在被协调环境1710内的关联,给定环境1710内的被协调装置1712和协调器1714在通信网络方面可被认为相对于彼此是“本地”的。例如,给定环境1710内的被协调装置1712和协调器1714可通过LAN或其他本地化通信网络加以连接。
每个被协调装置1712可对应于被配置为与协调器1714通信以管理被协调装置1712的功能的计算装置。在一些情况下,被协调装置1712可对应于具有强大的本地化用户接口能力的功能完备的计算装置,诸如膝上型计算机、台式机、独立媒体播放器等。在其他情况下,被协调装置1712可对应于与另一主要功能相关联的薄型装置或嵌入装置,诸如嵌入在家用电器或装置(诸如冰箱、洗衣机、热水加热器、炉子、门锁、灯泡、电源插座、电开关等)内或作为附件附接到所述家用电器或装置的装置。在一些情境中,这类电器或装置被称为“智能”装置、IoT装置或“已连接”装置。这样,被协调装置1712可包括有限的本地用户接口,并且被配置用于远程管理。在一些情况下,被协调装置1712可以是有状态的,并且响应于指令而操作以改变它们的状态(例如,通过从“关”转为“开”等)。
如下面更详细描述的(例如,关于图18),协调器1714可对应于执行指令以协调、管理或控制被协调装置1712的操作的计算装置,而不需要传输到被协调装置1712的指令在被协调环境1710之外行进(因此增加了这些指令的安全性并增加了它们的传输速度)。具体来说,协调器1714可包括处理器和存储器,所述处理器和存储器共同被配置来管理被协调装置1712、客户端装置1702和服务提供商网络1720的装置的任何组合之间的通信。协调器还可被配置为以与服务提供商环境1720的按需代码执行环境1720类似的方式实现任务的执行。这些任务可实现各种用户定义的或非用户定义的功能,包括与被协调装置1712、客户端装置1702和服务提供商网络1720的装置通信。这样,协调器1714可被配置为允许对被协调装置1712进行手动、自动或半自动控制。例如,协调器1714可使得客户端装置1702能够传输改变被协调装置1712的状态的请求,并且致使这种状态改变发生。作为另一示例,协调器1714可使得用户能够指定应当改变被协调装置1712的状态的标准,然后在满足标准时自动操作以改变被协调装置1712的状态。如下面将讨论的,协调器1714的许多功能可通过任务建立,从而使得能够根据用户的需要快速改变这些功能。
客户端装置1702可包括使得用户能够与被协调环境1710、服务提供商环境1720或两者通信的各种计算装置。通常,客户端装置1702可以是任何计算装置,诸如台式计算机、膝上型计算机或平板计算机、个人计算机、可穿戴计算机、服务器、个人数字助理(PDA)、混合型PDA/移动电话、移动电话、电子书阅读器、机顶盒、语音命令装置、照相机、数字媒体播放器等。服务提供商环境1720可向客户端装置1702提供一个或多个用户接口、命令行接口(CLI)、应用程序编程接口(API)和/或用于与服务提供商环境1720交互的其他可编程接口,诸如用来提交协调器1714的配置并控制所述配置的部署,提交对应于要在协调器1714上或服务提供商环境1720的按需代码执行环境1750上执行的任务的代码,查看与协调器1714相关的日志记录或监控信息等。类似地,协调器1714可向客户端装置1702提供一个或多个用户接口、命令行接口(CLI)、应用程序编程接口(API)和/或用于与协调器1714交互的其他可编程接口,诸如用来读取被协调装置1712的状态,请求被协调装置1712的状态改变,请求协调器1714引起任务的执行等。虽然本文中可将一个或多个实施方案描述为使用用户接口,但是应当理解,这些实施方案可另外或另选地使用任何CLI、API或其他可编程接口。
服务提供商环境1720可包括多个元件以使得能够配置、管理协调器1714并且与协调器1714通信。具体来说,服务提供商环境1720包括使得能够向服务提供商环境1720注册协调器1714并且配置这类协调器1714的管理和部署服务1730,使得能够强制改变协调器1714和被协调装置1712的状态的装置影子服务1740,以及提供任务的按需、动态执行和任务在协调器1714上的部署和供应的按需代码执行环境1750。
如图17所示,管理和部署服务1730包括客户端和数据接口1732以及配置数据存储库1734,所述客户端和数据接口1732以及配置数据存储库1734可共同操作以使得能够向管理和部署服务1730注册协调器1714,生成协调器1714的配置,并且将配置数据传输到协调器1714。说明性地,客户端和数据接口1732可提供一个或多个用户接口(例如,API、CLI、GUI等),用户可通过所述用户接口经由客户端装置1702生成或提交协调器1714的配置以用于存储在配置数据存储库1734中。客户端和数据接口1732还可提供一个或多个接口,协调器1714可通过所述接口获得配置,使得根据所获得的配置重新配置协调器1714。配置数据存储库1734可对应于任何持久的或基本上持久的数据存储库,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、附网存储装置(NAS)、磁带驱动器或其任何组合。
装置影子服务1740可包括使得能够创建、维持、读取、改变或删除装置(诸如协调器1714或被协调装置1712)的“影子状态”的元件。如以上所讨论,影子状态可对应于表示对应装置的期望状态的数据,所述期望状态可能或可能不镜像装置的当前状态。例如,关于协调器1714,影子状态可包括协调器1714的期望配置版本。关于被协调装置1712,影子状态可包括被协调装置1712的期望状态(例如,开关或灯泡的开或关、锁的锁定或解锁、恒温器的期望温度等)。装置影子服务1740可使得用户能够通过客户端装置1702或其他实体读取或修改装置的影子状态,并且还可与所述装置交互以使装置与影子状态同步。说明性地,装置影子服务1740可包括接口1742(其可包括例如API、CLI、GUI等)以及被配置来存储影子状态的影子数据存储库1744,通过所述接口1742可接收读取、写入、创建或删除影子状态的请求。影子数据存储库1734可对应于任何持久的或基本上持久的数据存储库,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、附网存储装置(NAS)、磁带驱动器或其任何组合。关于装置影子的使用的进一步细节通常可在2016年6月29日提交的标题为“Device RepresentationManagement Using Representation Types”的美国专利申请号15/196,700(“'700申请”)中找到,所述申请的全部内容以引用的方式并入本文。
按需代码执行环境1750可包括提供任务(例如,可移植代码段)的按需执行的多个装置。具体来说,按需代码执行环境1750可包括前端1752,用户可通过前端1752经由客户端装置1702将任务提交给按需代码执行环境1750,并且调用任务在按需代码执行环境1750上的执行。这类任务可存储在例如任务数据存储库1754中,所述任务数据存储库1754可对应于任何持久的或基本上持久的数据存储库,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、附网存储装置(NAS)、磁带驱动器或其任何组合。虽然未在图17中示出,但是按需代码执行系统1750可包括各种另外的组件以使得能够执行任务,所述另外的组件诸如多个执行环境(例如,在按需代码执行环境1750的物理主机装置上执行的容器或虚拟机),管理这类执行环境的工作者管理器,以及协助快速地(例如,不到10ms)使执行环境可供工作者管理器使用的加热池管理器。关于按需代码执行环境的进一步细节可在'556专利中找到,所述专利以引用的方式并入上文。
如上所述,在按需代码执行环境1750和协调器1714处都可利用任务。如上所述,任务对应于用户代码的单独集合(例如,用来实现特定功能)。对如本文所用的用户代码的引用可指用特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可互换使用。可例如结合由用户开发的特定web应用程序或移动应用程序来执行这种用户代码以实现特定功能。所述代码的特定执行在本文中称为“任务执行”或简称为“执行”。作为非限制性示例,可用JavaScript(例如,node.js)、Java、Python和/或Ruby(和/或另一种编程语言)编写任务。可以各种方式“触发”任务以在按需代码执行系统1750或协调器1714上执行。在一个实施方案中,客户端装置1702或其他计算装置可传输执行任务的请求,所述请求通常可称为对执行任务的“调用”。这类调用可包括将要执行的用户代码(或其位置)和将要用于执行用户代码的一个或多个变元。例如,调用可连同执行任务的请求一起提供任务的用户代码。在另一个示例中,调用可通过任务的名称或标识符来标识先前上传的任务。在又一个示例中,对应于任务的代码可被包括在对任务的调用中,并且在由协调器1714或按需代码执行系统1750接收请求之前被上传到单独的位置(例如,协调器1714的存储装置、网络可访问的存储服务或任务数据存储库1754)中。协调器1714或按需代码执行系统1750的请求接口可从用户接收作为安全超文本传输协议(HTTPS)请求的对执行任务的调用。此外,当执行任务时,还可处理并利用包括在HTTPS请求中的任何信息(例如,报头和参数)。如以上所讨论,可使用任何其他协议(包括例如HTTP、MQTT和CoAP)来将包含任务调用的消息传递到请求接口1722。
对执行任务的调用可指定将要与对应于任务的用户代码一起使用的一个或多个第三方库(包括本机库)。在一个实施方案中,调用可向协调器1714或按需代码执行系统1750提供ZIP文件,这个ZIP文件包含对应于请求执行的任务的用户代码和任何库(和/或其存储位置的标识)。在一些实施方案中,调用包括指示将要执行的任务的程序代码、编写程序代码的语言、与调用相关联的用户和/或专供执行程序代码使用的计算资源(例如,存储器等)的元数据。例如,任务的程序代码可通过调用提供,先前由用户上传、由协调器1714或按需代码执行系统1750(例如,标准例程)提供,和/或由第三方提供。在一些实施方案中,这类资源级约束(例如,将要分配多少存储器用于执行特定用户代码)是针对特定任务指定的,并且可能不会在每次执行任务时改变。在这类情况下,协调器1740或按需代码执行系统1750可在接收到每个单独的调用之前访问这类资源级约束,并且单独的调用可能不指定这类资源级约束。在一些实施方案中,调用可指定其他约束,诸如指示所述调用请求什么种类的许可或权限来执行任务的许可数据。这种许可数据可由按需代码执行系统1710用来(例如,在私有网络上)访问私有资源。
在一些实施方案中,调用可指定应当被采用来处置所述调用的行为。在这类实施方案中,调用可包括用于启用执行所述调用中提及的任务的一种或多种执行模式的指示符。例如,调用可包括用于指示任务是否应当以调试模式执行的标志或报头,在所述调试模式下可结合任务的执行而生成的调试和/或日志记录输出被(例如,通过控制台用户接口)提供回给用户。在这种示例中,协调器1714或按需代码执行系统1750可检查调用并查找标志或报头,并且如果标志或报头存在,那么协调器1714或按需代码执行系统1750可修改在其中执行任务的执行环境的行为(例如,日志记录功能),并且致使输出数据被提供回给用户。在一些实施方案中,通过由协调器1714或按需代码执行系统1750提供给用户的用户接口将行为/模式指示符添加到调用。还可基于调用中提供的指示来启用或禁用其他特征,诸如源代码分析、远程调试等。
服务提供商环境1720在图17中被描绘为在分布式计算环境中操作,所述分布式计算环境包括使用一个或多个计算机网络(图17中未示出)加以互连的若干计算机系统。服务提供商环境1720还可在具有比图17所示的装置数量更少或更多的装置的计算环境内操作。因此,图17中对服务提供商环境1720的描绘应被视为说明性的而不是限制本公开。例如,服务提供商环境1720或其各个组成部分可实现各种Web服务组件、托管的计算环境或“云”计算环境和/或对等网络配置,以实现本文描述的过程的至少一部分。
另外,服务提供商环境1720可在硬件或由硬件装置执行的软件中直接实现,并且可例如包括在物理计算机硬件上实现的一个或多个物理或虚拟服务器,所述物理计算机硬件被配置来执行用于执行本文将描述的各种特征的计算机可执行指令。一个或多个服务器可在地理上分散或者在地理上共同位于例如一个或多个数据中心中。在一些情况下,一个或多个服务器可作为快速供应和释放的计算资源的系统的一部分操作,通常被称为“云计算环境”。
图18描绘管理给定被协调环境1710内的被协调装置1712的计算系统(称为协调器1714)的总体架构。图18中描绘的工作者管理器1740的总体架构包括可用于实现本公开的各方面的计算机硬件和软件模块的布置。硬件模块可使用物理电子装置来实现,如下文更详细地讨论的。协调器1714可包括比图18所示的那些元件多得多(或少得多)的元件。然而,为了提供可行的公开,没有必要示出所有这些通常的常规元件。此外,图18中所示的总体架构可用于实现图17所示的其他组件中的一个或多个。如图所示,协调器1714包括处理单元204、网络接口206、计算机可读介质驱动器207、输入/输出装置接口208,它们全部都可通过通信总线彼此通信。网络接口12406可提供到一个或多个网络或计算系统的连接性。因此,处理单元12404可通过网络1704从其他计算系统或服务接收信息和指令。处理单元12404还可往返存储器250通信,并且进一步通过输入/输出装置接口208提供用于可选显示器(未示出)的输出信息。输入/输出装置接口12408还可接受来自可选输入装置(未示出)的输入。
存储器250可包含计算机程序指令(在一些实施方案中被分组成模块),处理单元12404执行所述计算机程序指令以便实现本公开的一个或多个方面。存储器250通常包括随机存取存储器(RAM)、只读存储器(ROM)和/或其他持久、辅助或非暂时计算机可读介质。存储器250可存储操作系统1852,所述操作系统1852提供计算机程序指令以供处理单元1804在协调器1714的一般管理和操作中使用。存储器250还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器1850包括进程管理器1854、调度器1856、部署代理1858和通信管理器1860。
调度器1856和部署代理1858可由处理单元12404执行以选择由处理单元204执行的任务,并且管理这样的任务执行。具体来说,调度器1856可包括用于选择在给定时间点执行的任务以及暂停任务执行(例如,在协调器1714处的资源受限制的情况下)的指令。部署代理1858可包括用于选择执行任务的适当执行环境1870,向所述执行环境1870提供对任务执行期间所需资源的适当访问,以及致使在执行环境1870内执行任务的指令。如本文所用的执行环境1870是指存储器250的执行任务的逻辑部分。在一个实施方案中,执行环境1870以编程方式分离,使得禁止第一执行环境1870中的代码执行修改与另一执行环境1870相关联的存储器。说明性地,执行环境1870可对应于“容器”、操作系统级虚拟化环境或“沙盒”环境,诸如“chroot jail”或Python虚拟环境“virtualenv”。在其他情况下,执行环境1870可对应于虚拟机环境(例如,JAVA虚拟机、具有不同操作系统的虚拟化硬件装置等)。在其他情况下,执行环境1870可以是被分配来执行任务的存储器空间,而不必利用虚拟化。
通信管理器1860可促进在协调器上执行的任务之间以及协调器1714与其他装置(例如,客户端装置1702和被协调装置1712)之间的通信。具体来说,通信管理器1860可被配置为获得发往协调器1714的消息并将消息转发到适当的目的地。例如,通信管理器1860可在任务、被协调装置1712、客户端装置1702和服务提供商执行环境1720的装置的任何组合之间路由消息。如下面将更详细解释的,通信管理器1860可转换与特定话题相关联的消息,使得它们指向由装置的较小子集订阅的话题。
由协调器1714执行的任务被示出为逻辑地分组在任务存储器空间1880内,所述任务存储器空间1880可对应于存储器250的被配置来存储对应于每个任务的代码的逻辑单元。如图18所示,任务存储器空间1880可包括可由处理单元12404执行以实现协调器1714的功能的多个任务,所述多个任务包括路由器任务1882、一个或多个通信管理器任务1886、影子服务任务1888和一个或多个客户端提供的任务1890。
路由器任务1882可对应于可执行以协助在协调器内、向协调器和从协调器路由消息的代码的一部分。在一个实施方案中,路由器任务1882实现“路由表”以确定消息的适当目的地。例如,通信管理器1860可将在协调器1714处获得的消息(例如,由于任务执行所致的生成或在输入/输出接口208处的接收)转发到路由器任务1882,所述路由器任务1882可利用路由表来确定寻址到特定标识符的消息应当被路由到给定任务、给定客户端装置1702或给定被协调装置1702。路由表还可指示寻址到标识符的消息应当被传输到服务提供商环境1720(例如,传输到装置影子服务1740或按需代码执行系统1750)。在一个实施方案中,路由表可使用“话题”作为标识符,使得根据为特定话题指定的路由来路由与所述话题相关联的消息。路由表还可包括关于如何基于消息的来源路由所述消息的信息。例如,基于消息是否是从第一任务、第二任务、第一被协调装置1712等接收的,可不同地路由寻址到给定话题的消息。通过利用路由表,路由器任务1882可使消息能够被重定向,而无需改变这种消息的发送者的操作(例如,无需重写生成消息的任务的代码、无需修改生成消息的被协调装置1712的软件等)。
通信管理器任务1886可根据这类通信的协议实现协调器1714与多个不同外部装置(例如,被协调装置1702)之间的通信。例如,第一通信管理器任务1886可被配置为使用BLUETOOTHTM协议来管理通信,第二通信管理器可被配置为使用HTTP协议来管理通信等。在一些情况下,多个通信管理器任务1886可共同工作以实现通信。例如,第一通信管理器任务1886可通过TCP协议实现通信,而第二通信管理器任务1886可通过MQTT协议(其利用TCP协议并因此可利用第一通信管理器任务1886)实现通信。因为不同的通信管理器任务1886可改变协调器1714通过不同协议进行通信的能力,并且因为可通过重新配置协调器1714来改变协调器1714的任务,所以协调器1714可快速地被重新配置为利用各种不同的通信协议。
影子服务任务1888可促进对在协调器1714处维持的装置影子的管理和与所述装置影子的交互。说明性地,影子服务任务1888可实现的功能与由装置影子服务1740在本地向协调器1714提供的功能类似。因此,影子服务任务1888可维持被协调装置1712的影子状态(表示期望状态的数据),并且允许读取或写入这种数据。影子服务任务1888还可使被协调装置1712能够与所述装置的装置影子同步。因此,通过修改被协调装置1712的装置影子,可改变被协调装置1712的状态。通过读取被协调装置1712的装置影子,可确定被协调装置1712的状态。在一些情况下,影子服务任务1888还可与给定装置的另一装置影子(诸如由装置影子服务1740维持的装置影子)协调。例如,影子服务任务1888可使本地装置影子与存储在装置影子服务1740处的装置影子同步,解决本地装置影子与存储在装置影子服务1740处的装置影子之间的冲突等。
除了上述任务(其中每一个可说明性地由与服务提供商环境1720相关联的实体提供)之外,任务存储器空间1880可包括任意数量的客户端提供的任务1890,所述客户端提供的任务1890可对应于由客户端装置1702生成并提交给服务提供商环境1720以便部署到协调器1714的可执行代码。这样,客户端提供的任务1890所提供的功能可根据提交用户的需要而变化。在一些情况下,客户端提供的任务1890可用编码语言编写,对于所述编码语言,存储器250包括语言运行时。例如,在协调器1714支持诸如node.js、Go、JAVA和Python的语言的情况下,客户端提供的任务1890可包括用这些语言中的任一种编写的可执行代码。
另外,存储器250包括配置数据部分1872,其表示存储器250的存储协调器1714的配置数据的逻辑部分。配置数据可包括例如协调器1714的当前部署版本、由任务存储器空间1880的任务存储的数据,或者在协调器1714的操作中使用的其他数据。
为了实现协调器1714的配置(和重新配置),存储器250还包括部署代理1858。部署代理1858可对应于可执行以进行以下操作的代码:向服务提供商环境1720注册协调器,确定协调器1714的期望配置,并且在协调器1714的当前配置与期望配置不匹配的情况下,获得协调器1714的配置数据并修改存储器250以实现期望配置。
图19A描绘根据本申请的说明性被协调装置1712A的架构的一个实施方案。图19A中描绘的被协调装置1712A的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。如图所示,被协调装置1712A包括处理单元1904、网络接口1906、计算机可读介质驱动器307、输入/输出装置接口320、可选显示器1902和输入装置1924,它们全部都可通过通信总线彼此通信。说明性地,作为嵌入装置,被协调装置1712A可具有更有限的功能和组件,诸如输入或输出。
网络接口1906可提供到一个或多个网络或计算系统(诸如图17的网络1704)的连接性。因此,处理单元1904可通过网络从其他计算系统或服务接收信息和指令。处理单元1904还可往返存储器1910通信,并且进一步通过输入/输出装置接口1920提供用于可选显示器1902的输出信息。输入/输出装置接口1920还可接受来自诸如键盘、鼠标、数字笔等的可选输入装置1924的输入。在一些实施方案中,被协调装置1712A可包括比图19A示出的组件更多(或更少)的组件。例如,被协调装置1712的一些实施方案可省略显示器1902和输入装置1924,同时通过一个或多个另选通信渠道(例如,通过网络接口1906)提供输入/输出能力。另外,被协调装置1712A也可完全省略输入和输出接口1920。
存储器1910可包括计算机程序指令,处理单元12404执行所述计算机程序指令以便实现一个或多个实施方案。存储器1910通常包括RAM、ROM或其他永久性或非暂时存储器。存储器1910可存储操作系统1914,所述操作系统1914提供计算机程序指令以供处理单元1904在被协调装置1712A的一般管理和操作中使用。存储器1910还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器1910包括用于访问内容的浏览器应用程序1916。说明性地,浏览器应用程序1916可包含完整的软件浏览器应用程序、浏览器应用程序的部分,或者仅仅是提供数据连接性的软件应用程序(或可执行指令)。
图19B描绘根据本申请的说明性被协调装置1712B的另选架构的一个实施方案。图19B中描绘的被协调装置1712B的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。然而,被协调装置1712B可与减少的组件相关联,这可能限制被协调装置1712B的计算功能和操作。如图所示,被协调装置1712B包括与通信总线通信的处理单元1950和网络接口1952。与图19A的被协调装置1712BA不同,被协调装置1712B可不具有计算机可读介质驱动器、输入/输出装置接口、可选显示器或输入装置。
网络接口1952可提供到一个或多个网络或计算系统(诸如图17的网络1704)的连接性。因此,处理单元1950可通过网络从其他计算系统或服务接收信息和指令。存储器1954可包括计算机程序指令,处理单元1950执行所述计算机程序指令以便实现一个或多个实施方案。存储器1954通常包括RAM、ROM或其他永久性或非暂时存储器。在这个实施方案中,存储器1954可存储完整的操作系统,所述完整的操作系统提供计算机程序指令以供处理单元1950在被协调装置1712B的一般管理和操作中使用。相反,在一个实施方案中,存储器1954包括用于访问接收和处理指令的接口软件组件1956。
图20描绘根据本申请的说明性客户端装置1702的架构的一个实施方案。图20中描绘的客户端装置1702的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。如图所示,客户端装置1702包括处理单元202004、网络接口2006、计算机可读介质驱动器407、输入/输出装置接口2020、可选显示器2002和输入装置2024,它们全部都可通过通信总线彼此通信。
网络接口2006可提供到一个或多个网络或计算系统(诸如图17的网络1704)的连接性。因此,处理单元202004可通过网络从其他计算系统或服务接收信息和指令。处理单元202004还可往返存储器2010通信,并且进一步通过输入/输出装置接口2020提供用于可选显示器2002的输出信息。输入/输出装置接口2020还可接受来自诸如键盘、鼠标、数字笔等的可选输入装置2024的输入。在一些实施方案中,客户端装置1702可包括比图20示出的组件更多(或更少)的组件。例如,被协调装置1712的一些实施方案可省略显示器2002和输入装置2024,同时通过一个或多个另选通信渠道(例如,通过网络接口2006)提供输入/输出能力。另外,客户端装置1702也可完全省略输入和输出接口2020。
存储器2010可包括计算机程序指令,处理单元12404执行所述计算机程序指令以便实现一个或多个实施方案。存储器2010通常包括RAM、ROM或其他永久性或非暂时存储器。存储器2010可存储操作系统2014,所述操作系统2014提供计算机程序指令以供处理单元2004在协调器1702的一般管理和操作中使用。存储器2010还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器2010包括用于访问内容的浏览器应用程序2016。说明性地,浏览器应用程序2016可包含完整的软件浏览器应用程序、浏览器应用程序的部分,或者仅仅是提供数据连接性的软件应用程序(或可执行指令)。
图21描绘用于实现本文描述的消息处理服务组件的说明性计算装置的架构的一个实施方案。如前所述,环境中的一个或多个计算装置可用作消息处理服务,诸如MQTT代理。在其他实施方案中,消息处理服务可在网络组件中实现。因此,图21中描绘的消息处理服务的总体架构包括可用于实现本公开的各方面的计算机硬件和软件组件的布置。如图所示,远程命令服务1714包括处理单元2104、网络接口506、计算机可读介质驱动器2107、输入/输出装置接口2120、可选显示器2102和输入装置2124,它们全部都可通过通信总线彼此通信。远程命令服务1714的组件可以是物理硬件组件或在虚拟化环境中实现。
网络接口506可提供到一个或多个网络或计算系统(诸如图17的网络1750)的连接性。因此,处理单元2104可通过网络从其他计算系统或服务接收信息和指令。处理单元2104还可往返存储器2110通信,并且进一步通过输入/输出装置接口2120提供用于可选显示器2102的输出信息。输入/输出装置接口2120还可接受来自诸如键盘、鼠标、数字笔等的可选输入装置2124的输入。在一些实施方案中,远程命令服务1714可包括比图21示出的组件更多(或更少)的组件。例如,远程命令服务1714的一些实施方案可省略显示器202和输入装置20201824,同时通过一个或多个另选通信渠道(例如,通过网络接口506)提供输入/输出能力。
存储器2110可包括计算机程序指令,处理单元2104执行所述计算机程序指令以便实现一个或多个实施方案。存储器2110通常包括RAM、ROM或其他永久性或非暂时存储器。存储器2110可存储操作系统2114,所述操作系统2114提供计算机程序指令以供处理单元2104在中间服务器1714的一般管理和操作中使用。存储器2110还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器2110包括用于接收和处理来自客户端装置1702的内容请求的客户端接口软件2112。另外,存储器2110包括用于处理所接收通信的通信管理器组件2116。说明性地,通信管理器2116可转换与特定话题相关联的消息,使得它们指向由装置的较小子集订阅的话题。
现在转向图6A至图6D,将描述用于处理内容消息的内容管理系统1710的组件之间的说明性交互。更具体来说,将关于被协调装置1712、客户端装置1702和消息处理服务之间的交互来描述图6A至图6D。如前所述,消息处理服务可由包括协调器1714或其他网络装备的各种装置实现。另外,被协调装置1712可对应于被协调装置1712(图3A)、被协调装置1712(图19B)或其组合。然而,对交互的引用不应限于任何特定装置或装置组合,即使用于说明的目的。
参考图22A,将描述消息处理服务的初始配置。说明性地,客户端或系统管理员使用有助于解释所接收通信的信息来配置消息处理服务。在一个实施方案中,消息处理服务可由服务提供商环境1720实现,以向若干潜在的被协调环境1710中的一个提供通信。在另一个实施方案中,消息处理服务可由协调器1714实现,以向若干被协调装置1712中的一个提供通信。因此,图6A至图6D不应限于仅在任一实施方案或其他变型上实现。然而,出于说明的目的,将关于协调器1714与一组被协调装置之间的交互来描述图6A至图6D。
根据说明性实施方案,可根据MQTT消息传递协议形成通信,而不管用于跨通信网络1704传输消息的实际通信协议是什么。特定于MQTT协议,每个消息与话题部分相关联,所述话题部分具有定义通信或以其他方式与通信相关联的一个或多个单词分组。每个可分离的单词分组通常可称为级别,并且话题部分可具有多个级别。下面的示例包括第一级别“基本级别”,接下来是一系列另外的级别,“级别1”至“级别n”。每个另外的级别由话题分隔符划定边界。
基本级别/级别1/级别2/级别3..../级别n
如前所述,在传统的MQTT协议中,接收消息的消息协调器1714将尝试使话题与已经注册来接收由话题发布的消息的一个或多个接收方装置相匹配。例如,消息协调器1714将查找消息的一个或多个话题部分以与话题注册(完全地或部分地)相匹配。协调器1714消息处理服务可将确定限制为所有级别的精确匹配或者一个或多个级别的部分匹配。
现在参考图22A,在(1)处,对应于管理员或客户的客户端装置1702可将配置信息传输到协调器1714。说明性地,配置信息对应于一个或多个指令、逻辑规则或处理步骤,所述一个或多个指令、逻辑规则或处理步骤定义协调器1714消息处理服务可基于匹配所接收消息的话题部分、所述消息的来源等而对消息采取的一组动作。例如,协调器1714消息处理服务的一种配置可包括以下定义:是否应当由特定被协调装置1712实现对应于所指派的任务的通信。在这个示例中,一组被协调装置1712可订阅接收具有对应话题的内容消息,但是哪个装置接收消息可取决于对协调器1714所标识的规则的评估。
在另一示例中,协调器1714消息处理服务可被配置为基于标识与用于获取这种信息的指令相对应的一个或多个嵌入代码来获得另外的信息,诸如成本信息、路由信息、工作负载、服务级别信息、安全信息等。在这方面,在传统消息协议实现方式中,协调器1714消息处理服务不对所接的消息进行任何另外的处理,或者可能需要另外的外部网络通信或组件来做出路由决定。另外,根据本申请,协调器1714可配置有由管理员通过客户端装置1702指定的广泛多种另外的功能。尽管被示出为直接通信来配置协调器1714,但是在一些实施方案中,客户端计算装置1702将通过消息处理系统1720与协调器1714间接交互。
在(2)处,协调器1714处理配置信息并存储配置以用于后续处理。在这方面,说明性地,协调器1714可维持数据库或矩阵以用于匹配所接收消息中包括的安全信息。另外,协调器1714可维持在标识了匹配时或在所接收消息中未包括所需的安全信息时将执行的另外的处理指令或可执行代码。在其他实施方案中,协调器1714可在标识了嵌入代码时利用诸如API的接口获得另外的指令或可执行代码。例如,协调器1714可访问第三方安全服务提供商,所述第三方安全服务提供商可促进协调器1714的配置或者提供由协调器1714用来评估在已发布消息中提供的安全信息的信息。说明性地,协调器1714的配置将促进消息路由的处理,而无需具有外部网络访问。
参考图22B,将描述接收方装置(被协调装置1712’和1712”)的初始配置。在(1)处,被协调装置1712’和1712”生成装置连接请求并将所述请求传输到协调器1714。说明性地,装置连接请求对应于与协调器1714对被协调装置1712’和1712”进行认证和授权相关联的建立过程。另外,在一些实施方案中,逻辑网络100可包括另外的网关组件,所述网关组件独立地或作为内容管理系统1710的一部分管理向协调器1714进行的消息传输。这类网关组件可实现安全功能、负载平衡或其他网络处理服务。
在(2)处,协调器1714诸如通过验证安全信息、请求另外的信息或确定请求客户端计算装置1702的特性来处理连接请求。在(3)处,协调器1714通过基于经认证的被协调装置而更新路由表、业务逻辑或业务规则来处理连接请求。例如,被协调装置1712可包括可由协调器1714用来匹配传入消息的各种许可或安全代码。另外,协调器1714可接收另外的信息,诸如安全信息或用于评估安全信息的代码。在(4)处,如果连接请求是可接受的并被授权,则消息处理服务2200将连接确认传输到请求协调器1714。在这方面,一旦被授权,被协调装置1712和1712’以及协调器1714就可在诸如MQTT的消息传递协议中所定义的过程内开始通信。另外,被协调装置1712和1712’可提供有助于上述路由过程的另外的安全信息。
现在参考图22C,在接收到连接确认之后,在(1)处,被协调装置1712’和1712”将一个或多个话题注册请求传输到协调器1714。说明性地,话题注册是根据消息传递协议定义的,使得被协调装置1712’和1712”可注册来接收由任何数量的内容提供商根据特定话题发布的内容。当应用于本申请时,被协调装置1712’和1712”注册来获得一个或多个话题。出于说明的目的,将提供示例,使得基于消息中的安全信息,将消息转发到已注册的被协调装置1712’和1712”可以是不同的。
在注册之后的某个时刻,在(2)处,单独的计算装置2202将一段或多段内容发布到协调器1714。说明性地,协调器1714可接收可对应于从服务提供商环境1720传输的通信的消息。每一段已发布的内容都与话题相关联。出于说明性示例的目的,至少一个已发布的内容与内容/消息的话题部分相关联,所述话题部分对应于由被协调装置1712和1712’向协调器1714注册的话题。在这方面,所述消息可包括话题部分中的一个或多个级别,所述一个或多个级别可用于使所接收消息与已注册的被协调装置相匹配。另外,所接收消息可包括安全信息或与安全信息相关联,诸如组标识符、来源标识符和密码、证书或其他令牌。
在(3)处,协调器1714使已注册的话题与已发布的话题相匹配,以确定被协调装置应当接收。在这方面,协调器1714可确定已经注册来接收消息的一组被协调装置1712。相关领域的技术人员将理解,在MQTT消息传递协议或其他消息传递协议的传统实现方式中,协调器1714将所接收消息发送到所有已注册的被协调装置。在(4)处,协调器1714处理通信的话题部分以标识应当接收已发布的消息的一个或多个被协调装置。在一些实施方案中,协调器1714可包括处理话题部分的功能,诸如通信管理器组件1860。在其他实施方案中,协调器1714可利用另外的服务或组件来促进解析。更具体来说,协调器1714可利用各种业务规则或路由表来标识将接收消息的已注册被协调装置1712的子集。因此,协调器1714可评估业务规则或路由表以标识已注册的被协调装置1712中的哪一个将不接收已发布的消息。说明性地,协调器1714可利用路由表和业务规则来使安全信息与将消息发布到一组可能的接收方装置的许可相关联。
在(5)处,协调器1714消息处理服务并且可关联二级话题发布,所述二级话题发布将致使消息被发往已注册装置的所选子集。在一个实施方案中,协调器1714可被配置为将消息直接传输到所选择的已注册装置。在这个实施方案中,协调器1714可使用如业务规则或逻辑中所指定的相同的消息传递协议或不同的通信协议。在另一个实施方案中,协调器1714可关联一个或多个二级话题发布,所述一个或多个二级话题发布将是适用的或匹配所选择的已注册装置。在这个实施方案中,不会为未选择的装置注册二级话题发布,诸如用于单独装置的二级话题发布。为了对利用定向发布进行说明,参考图22D,在(6)处,消息处理服务可致使消息转发到被协调装置1712”而不是被协调装置1712'。1712。171217121714另外,在一些实施方案中,协调器1714可选择可能尚未注册来根据原始话题接收消息但仍由协调器1714选择的被协调装置1712。
图23是示出根据说明性实施方案的由消息处理服务实现的远程执行消息传递例程2300的流程图。例程2300示出了在消息路由期间在消息传递协议中利用业务规则、路由表或其他逻辑信息。在框2302处,消息处理服务获得包括与装置(诸如被协调装置1712或任何其他计算装置1702)远程执行内容相关的至少一个话题的注册信息。如前所述,装置将一个或多个话题注册请求传输到消息处理服务600。说明性地,话题注册是根据消息传递协议定义的,使得装置可注册来接收由任何数量的内容提供商根据特定话题发布的内容。如前所述,话题注册可对应于单独装置或一组装置。
在注册之后的某个时刻,在框2304处,消息处理服务获得具有话题部分的一个或多个发布。说明性地,一些计算装置2202(图22C)将一段或多段内容发布到消息处理服务。每一段已发布的内容都与话题相关联。出于说明性示例的目的,至少一个已发布的内容与客户端计算装置1702的注册话题相关联。另外,与话题相关联的所述一段已发布的内容包括内容的有效载荷部分。这类有效载荷部分的示例可包括将由被协调装置或网络装置执行的任务。另外,消息可包括安全信息,所述安全信息将用于评估消息是否应当由消息发布服务发布。
在框2306处,消息处理服务使已注册的话题与已发布的话题相匹配,以确定一个或多个装置应当接收具有话题的已发布内容以形成应当接收已发布的话题的客户端装置集。说明性地,由于消息处理服务是根据诸如MQTT的消息传递协议配置的,因此可以消息传递协议所指示的方式完成使注册与话题发布相匹配。说明性地,话题部分的匹配可对应于话题部分的所有级别的匹配或至少一个级别的部分匹配。此外,匹配可对应于基本级别的匹配,而其他级别可被忽略或用于二级匹配。
在框2308处,消息处理服务标识消息的话题部分或其他部分的安全信息。说明性地,消息处理服务处理话题部分以选择应当接收消息的装置的子集。在一些实施方案中,消息处理服务可包括诸如业务规则、路由表、逻辑规则等功能,以选择已注册装置的子集。在其他实施方案中,消息处理服务可利用另外的服务或组件来促进处理。另外,在框2308处,消息处理服务然后选择一组接收方装置来接收已发布的消息而不选择未选择的接收方装置。在一些实施方案中,消息处理服务可包括诸如业务规则、路由表、逻辑规则等功能,以选择已注册装置的子集。在一个方面,协调器1714可评估业务规则或路由表,所述业务规则或路由表标识应当接收所接收消息的被协调装置1712的子集。说明性地,业务规则或路由表可包含信息,诸如发起者的源地址、话题部分的一个或多个级别中的标识信息、所标识的接收方装置1712的安全配置信息、时间戳信息、关于被协调装置的利用信息、财务成本信息等。在其他示例中,如果一个或多个接收方装置1712可另外有资格或可用于接收消息,则业务规则可包括随机选择或加权选择算法。例如,协调器1714可配置有业务规则,所述业务规则使来源标识符(诸如消息的来源的网络地址)与一个或多个所选择的接收方装置1712相关联。在另一个示例中,协调器1714可配置有安全规范信息,所述安全规范信息确定最低安全配置或者为所接收消息指定安全规范的类型。在这个示例中,协调器1714然后可利用一个或多个已注册的安全装置的安全信息,并确定接收方装置中的哪一个满足指定的安全规范。在又一个示例中,协调器1714可配置有白名单或黑名单,所述白名单基于一天中的时间、消息类型或其他信息来标识所有可用的接收方装置,所述黑名单标识应当被排除的一个或多个接收方装置。
在框2310处,消息处理服务传输根据诸如MQTT的消息传递协议的过程和能力完成的已发布内容,并且不需要另外的或替代的通信来引起可执行代码的传输。在其他示例中,消息处理服务可利用单独的传输协议。接收方装置处理所接收的已发布内容。
在框2312处,消息处理服务获得对应于消息的处理的处理结果。说明性地,客户端计算装置通过消息传递协议生成和发布与指示代码的处理结果的信息相关的内容。在一些实施方案中,处理结果可对应于代码的执行是否成功进行的二元确定。在另一个实施方案中,处理结果可包括指示代码/指令的执行的一个或多个值或者详述关于代码/指令的执行的信息的日志。以与结合更新话题的发布所描述的方式类似的方式,一个或多个处理结果的发布可与特定话题相关联,所述话题通常被称为“处理结果话题”。
在框2314处,消息处理服务使已注册的话题与已发布的话题相匹配,以确定管理装置1704应当接收具有处理结果话题的已发布内容并传输所述已发布内容。说明性地,已发布内容的传输也是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在框2316处,例程2300终止。
图24是示出根据说明性实施方案的由被协调装置1712或其他计算装置实施的远程执行消息传递例程2400的流程图。如前所述,在本申请中,被协调装置1712或其他计算装置可被视为消息处理服务,以在消息处理中利用安全信息,而与其他组件是否也在消息路由中利用安全信息无关。然而,在这个示例中对被协调装置1712的标识不应被解释为对例程2400的应用的限制。在框2402处,被协调装置1712将一个或多个话题注册请求传输到消息处理服务2200。如上所述,话题注册是根据消息传递协议定义的,使得被协调装置1712可注册来接收由任何数量的内容提供商根据特定话题发布的内容。
响应于接收到已发布的内容,消息处理服务2200使已注册的话题与已发布的话题相匹配,以确定客户端被协调装置1712应当接收已发布内容。如前所述,消息处理服务用原始注册处理内容,然后利用路由表将消息转发给被协调装置。在框2404处,被协调装置1712从消息处理服务2200接收已发布的内容。说明性地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。
作为内容执行的执行的一部分或在内容执行之后,在框2406处,被协调装置1712获得远程执行的结果。在一些实施方案中,处理结果可对应于代码的执行是否成功进行的二元确定。在另一个实施方案中,处理结果可包括指示代码/指令的执行的一个或多个值或者详述关于代码/指令的执行的信息的日志。
在框2408处,被协调装置1712通过消息传递协议发布与指示代码的处理结果的信息相关的内容。说明性地,已发布内容的传输是根据诸如MQTT的消息传递协议的过程和能力完成的,并且不需要另外的或替代的通信来引起可执行代码的传输。在框2410处,例程2400终止。
根据本申请的一个方面:
1.一种用于利用消息传递协议来管理计算装置上的命令执行的计算机实现的方法,其包括:
在消息处理服务处从管理客户端装置接收与消息处理功能的配置相关的信息,以标识嵌入在所接收消息的话题部分中的一组代码并根据与所标识的代码相关联的指令处理所述所接收消息,其中所述消息是根据MQ遥测传输协议形成的;
由所述消息处理服务从装置接收所接收消息,其中所述所接收消息包括话题部分,所述话题部分包括与主题描述符相关联的一个或多个级别以及标识至少一个嵌入代码的一个或多个级别;
由所述消息处理服务基于所述消息的所述话题部分标识被注册来接收消息的一组接收方装置;
由所述消息处理服务解析所述所接收消息的所述话题部分以标识所述至少一个嵌入代码;
由所述消息处理服务根据所标识的至少一个嵌入代码利用所述消息处理功能的所述配置处理所接收消息,其中所述所接收消息的所述处理包括:标识所述一组所标识的接收方装置的子集来接收所述所接收消息;以及
由所述消息处理服务将已处理的所接收消息发布到所述一组接收方装置中的所述接收方装置的子集。
2.如权利要求1所述的方法,其中由所述消息处理服务根据所标识的至少一个嵌入代码利用所述消息处理功能的所述配置处理所接收消息包括:基于对至少一个标准的评估来选择至少一个接收方装置。
3.如权利要求1所述的方法,其中所述接收方装置的子集对应于被协调装置,并且其中所述所接收消息对应于由被协调装置执行任务的指令。
4.如权利要求1所述的方法,其中所述消息处理服务对应于用于被协调装置的协调器。
5.一种用于利用消息协议来管理通信的系统,其包括:
消息处理服务,所述消息处理服务在具有处理器和存储器的至少一个计算装置上实现,远程命令服务被配置来接收和发布根据消息传递协议形成的消息,
其中所述消息处理服务被配置来:
接收对应于话题部分的传入消息,所述话题部分包括至少一个嵌入代码和描述所述传入消息的主题的至少一个级别;
根据消息处理配置处理所述嵌入代码;并且
发布所述已处理的传入消息。
6.如权利要求5所述的系统,其还包括管理客户端装置,所述管理客户端装置被配置为通过使一个或多个动作与作为一组嵌入代码相关联来配置所述消息处理服务。
7.如权利要求5所述的系统,其中所述消息处理服务解析所述话题以标识所述嵌入代码。
8.如权利要求5所述的系统,其中所述消息处理服务通过选择所述传入消息的可能接收方的子集来处理所述嵌入代码。
9.如权利要求5所述的系统,其中所述消息处理服务通过修改包括所述传入消息的可执行代码来处理所述嵌入代码。
10.如权利要求5所述的系统,其中所述消息处理服务通过修改与发布已处理的传入消息相关联的定时来处理所述嵌入代码。
11.如权利要求5所述的系统,其中所述消息包括对任务的指派,并且其中所述消息处理服务通过选择处理所述任务的接收方装置来处理所述嵌入代码。
12.如权利要求5所述的系统,其中所述消息传递协议包括MQ遥测传输协议。
13.一种用于利用消息协议来管理消息的计算机实现的方法,其包括:
接收根据消息传递协议形成的消息,所述消息对应于话题,所述话题包括至少一个嵌入代码和主题描述;以及
根据消息处理配置处理所述嵌入代码。
14.如权利要求13所述的计算机实现的方法,其还包括:解析所述话题以标识所述嵌入代码。
15.如权利要求13所述的计算机实现的方法,其中处理所述嵌入代码包括:选择所述消息的可能接收方的子集。
16.如权利要求13所述的计算机实现的方法,其中所述消息包括一个或多个可执行部分,并且其中处理所述嵌入代码包括:修改所述一个或多个可执行部分的执行。
17.如权利要求16所述的计算机实现的方法,其中处理所述嵌入代码包括:修改与执行所述一个或多个可执行部分相关联的定时。
18.如权利要求16所述的计算机实现的方法,其中至少一个消息包括两个或更多个可执行代码部分,并且其中处理所述嵌入代码包括:从所述两个或更多个可执行部分中进行选择。
19.如权利要求16所述的计算机实现的方法,其中至少一个消息包括两个或更多个可执行代码部分,并且其中处理所述嵌入代码包括:删除所述两个或更多个可执行部分中的一个。
20.如权利要求13所述的计算机实现的方法,其中所述消息传递协议包括MQ遥测传输协议。
根据本申请的另一方面:
1.一种用于利用消息传递协议来管理计算装置上的命令执行的计算机实现的方法,其包括:
在消息处理服务处从管理客户端装置接收与消息处理功能的配置相关的信息,以选择已注册装置的子集来接收根据话题发布的消息,其中所述消息是根据MQ遥测传输协议形成的;
由所述消息处理服务从装置接收所接收消息,其中所述所接收消息包括话题部分,所述话题部分包括与主题描述符相关联的一个或多个级别;
由所述消息处理服务基于所述消息的所述话题部分标识被注册来接收消息的一组接收方装置;
由所述消息处理服务处理所述所接收消息的所述话题部分,以基于对一组业务规则或路由表中的至少一者的评估来选择所述接收方装置的子集;;以及
由所述消息处理服务发布所述已处理的所接收消息。
2.如权利要求1所述的方法,其中由所述消息处理服务处理所述所接收消息包括:获得至少一条另外的信息。
3.如权利要求1所述的方法,其中所述接收方装置的子集对应于被协调装置,并且其中所述所接收消息对应于由被协调装置执行任务的指令。
4.如权利要求1所述的方法,其还包括:由所述消息处理服务处理所述所接收消息以标识对应于所述接收方装置的所选子集的二级话题。
5.一种用于利用消息协议来管理通信的系统,其包括:
消息处理服务,所述消息处理服务在具有处理器和存储器的至少一个计算装置上实现,远程命令服务被配置来接收和发布根据消息传递协议形成的消息,
其中所述消息处理服务被配置来:
接收对应于话题部分的传入消息,所述话题部分包括描述所述传入消息的主题的至少一个级别,其中一组接收方装置被注册来接收与所述传入消息的所述话题相关联的消息;
根据消息处理配置处理所述传入消息以标识所述接收方装置的子集;并且
发布所述已处理的传入消息。
6.如权利要求5所述的系统,其还包括管理客户端装置,所述管理客户端装置被配置为通过关联一个或多个业务规则或路由表来配置所述消息处理服务。
7.如权利要求5所述的系统,其中所述消息处理服务通过评估与所述一组接收方装置相关联的安全标准并基于对所述安全标准的评估排除至少一个接收方装置来处理所述传入消息。
8.如权利要求5所述的系统,其中所述消息处理服务进程基于对逻辑规则的评估来选择所述传入消息的可能接收方的子集。
9.如权利要求8所述的系统,其中所述消息处理服务选择单个接收方装置来接收所述传入消息。
10.如权利要求5所述的系统,其中所述消息处理服务对应于网络处理服务。
11.如权利要求10所述的系统,其中所述一组接收方装置对应于一组被协调装置网络中的单独装置。
12.如权利要求5所述的系统,其中所述消息传递协议包括MQ遥测传输协议。
13.一种用于利用消息协议来管理消息的计算机实现的方法,其包括:
接收根据消息传递协议形成的消息,所述消息对应于话题,所述话题包括主题描述,其中一组接收方装置被注册来接收与所述话题相关联的消息;以及
根据消息处理配置处理所述所接收消息处理以标识所述一组接收方装置的子集。
14.如权利要求13所述的计算机实现的方法,其中处理所述所接收消息包括:选择单独消息的可能接收方的子集。
15.如权利要求13所述的计算机实现的方法,其中所述消息处理配置包括至少一个业务规则,并且其中处理所述所接收消息包括评估所述至少一个业务规则。
16.如权利要求15所述的计算机实现的方法,其中评估所述至少一个业务规则包括:获得使来源与始发消息相关联的信息。
17.如权利要求13所述的计算机实现的方法,其中所述消息处理配置包括路由表,并且其中处理所述所接收消息包括:评估所述路由表。
18.如权利要求13所述的计算机实现的方法,其还包括:从管理组件获得消息处理配置。
19.如权利要求13所述的计算机实现的方法,其中所述消息传递协议包括MQ遥测传输协议。
20.如权利要求13所述的计算机实现的方法,其中所述接收方装置的子集包括两个或更多个接收方装置。
根据本申请的另一方面:
1.一种用于利用消息传递协议来管理计算装置上的命令执行的计算机实现的方法,其包括:
在消息处理服务处从管理客户端装置接收与消息处理功能的配置相关的信息,以将消息发布到已注册装置的子集来接收根据话题发布的消息,其中所述消息是根据MQ遥测传输协议形成的;
由所述消息处理服务从装置接收所接收消息,其中所述所接收消息包括话题部分,所述话题部分包括与主题描述符相关联的一个或多个级别;
由所述消息处理服务基于所述消息的所述话题部分标识被注册来接收消息的一组接收方装置;
由所述消息处理服务处理所述所接收消息以标识安全标识符和另外的信息,以基于对一组业务规则或路由表中的至少一者的评估来选择所述接收方装置的子集;以及
由所述消息处理服务至少部分地基于对所接收消息的所述处理来发布所述已处理的所接收消息。
2.如权利要求1所述的方法,其中由所述消息处理服务处理所述所接收消息包括:获得至少一条另外的信息。
3.如权利要求1所述的方法,其中所述接收方装置的子集对应于被协调装置,并且其中所述所接收消息对应于由被协调装置执行任务的指令。
4.如权利要求1所述的方法,其还包括:由所述消息处理信息解析所述消息以获得所述安全标识符和另外的信息。
5.一种用于利用消息协议来管理通信的系统,其包括:
消息处理服务,所述消息处理服务在具有处理器和存储器的至少一个计算装置上实现,远程命令服务被配置来接收和发布根据消息传递协议形成的消息,
其中所述消息处理服务被配置来:
接收对应于话题部分的传入消息,所述话题部分标识所述传入消息的主题,其中一组接收方装置被注册来接收与所述传入消息的所述话题相关联的消息;
根据消息安全配置处理所述传入消息以标识所述接收方装置的子集,其中所述消息安全配置对应于包括在所述传入消息中的安全信息的评估;并且
将所述已处理的传入消息发布到所述接收方装置的所标识子集。
6.如权利要求5所述的系统,其还包括管理客户端装置,所述管理客户端装置被配置为通过将一个或多个路由表关联为所述传入信息的一部分来配置所述消息处理服务。
7.如权利要求5所述的系统,其中所述消息处理服务通过评估与所述一组接收方装置相关联的安全标准并基于对所述安全标准的评估排除至少一个接收方装置来处理所述传入消息。
8.如权利要求5所述的系统,其中所述消息处理服务通过评估与所述一组接收方装置相关联的安全标准并基于对所述安全标准的评估选择至少一个接收方装置来处理所述传入消息。
9.如权利要求8所述的系统,其中所述消息处理服务选择单个接收方装置来接收所述传入消息。
10.如权利要求5所述的系统,其中所述传入消息对应于网络服务。
11.如权利要求10所述的系统,其中所述一组接收方装置对应于一组被协调装置网络中的单独装置。
12.如权利要求5所述的系统,其中所述消息传递协议包括MQ遥测传输协议。
13.一种用于利用消息协议来管理消息的计算机实现的方法,其包括:
接收根据消息传递协议形成的消息,所述消息对应于话题,所述话题包括主题描述,其中一组接收方装置被注册来接收与所述话题相关联的消息;以及
根据安全处理配置处理包括在所述所接收消息中的安全信息,以管理对所述一组接收方装置的子集的访问。
14.如权利要求13所述的计算机实现的方法,其中处理所述所接收消息包括:选择单独消息的可能接收方的子集。
15.如权利要求13所述的计算机实现的方法,其中所述消息处理配置包括业务规则或路由表中的至少一者,并且其中处理所述所接收消息包括评估所述至少一个业务规则或路由表。
16.如权利要求15所述的计算机实现的方法,其中所述评估业务规则或路由表中的至少一者包括:根据所述至少一个业务规则或路由表来评估包括在所述所接收消息中的所述安全信息。
17.如权利要求16所述的计算机实现的方法,其中所述安全信息包括嵌入在所述所接收消息中的标识符和密码。
18.如权利要求13所述的计算机实现的方法,其还包括:从管理组件获得所述安全处理配置。
19.如权利要求13所述的计算机实现的方法,根据安全处理配置处理包括在所述所接收消息中的安全信息包括:处理包括在所述所接收消息中的所述安全信息而无需外部网络通信访问。
20.如权利要求13所述的计算机实现的方法,其中所述接收方装置的子集包括两个或更多个接收方装置。
以上所描述的所有方法和过程可在由一个或多个计算机或处理器执行的软件代码模块中具体化并且通过所述软件代码模块来完全自动化。所述代码模块可存储在任何类型的非暂时计算机可读介质或其他计算机存储装置中。所述方法中的一些或全部能够可选地在专用计算机硬件中具体化。
除非另外特别说明,否则诸如“可”、“可以”、“可能”或“能够”等条件性语言在上下文中通常应理解为用来表示:尽管其他实施方案不包括某些特征、元件和/或步骤,但某些实施方案包括某些特征、元件和/或步骤。因此,这种条件性语言通常并不意图暗示特征、元件和/或步骤是一个或多个实施方案以任何方式所要求的,或一个或多个实施方案一定包括用于在有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤被包括在任何特定实施方案中或将要在任何特定实施方案中进行的逻辑。
除非另外特别说明,否则诸如短语“X、Y或Z中的至少一个”的分离性语言在上下文中通常应理解为用来表示项、术语等可以是X、Y或Z或它们的任何组合(例如,X、Y和/或Z)。因此,这种分离性语言通常并不意图且不应暗示某些实施方案要求X中的至少一个、Y中的至少一个或Z中的至少一个各自都存在。
除非另外明确地说明,否则诸如‘一个’(‘a’或‘an’)的冠词通常应被解释为包括一个或多个所描述项。因此,诸如“被配置来……的装置”的短语意图包括一个或多个所列举的装置。此类一个或多个所列举装置也可被共同地配置来执行所陈述的列举项。例如,“被配置来执行列举项A、B和C的处理器”可包括被配置来执行列举项A的第一处理器,所述第一处理器与被配置来执行列举项B和C的第二处理器相结合地工作。
本文所描述的流程图和/或附图中所描绘的任何例程说明、元件或框应理解成潜在地代表包括用于实现例程中的特定逻辑功能或元素的一个或多个可执行指令的代码模块、代码段或代码部分。可选的实现方式被包括在本文所描述的实施方案的范围内,其中如本领域中的技术人员所理解的那样,元件或功能可被删除,或者不按照所示出或所讨论的顺序执行,包括基本上同步地执行或者按照相反的顺序执行,这取决于所涉及的功能。
应当强调,可对上述实施方案作出许多变化和修改,所述变化和修改的元素应被理解为包括在其他可接受的示例当中。所有这些修改和变化都意图在本文中包括在本公开的范围内并且受以下权利要求保护。

Claims (15)

1.一种用于利用消息传递协议来管理计算装置上的命令执行的计算机实现的方法,其包括:
在消息处理服务处从管理客户端装置接收与消息处理功能的配置相关的信息,以选择已注册装置的子集来接收根据话题发布的消息,其中所述消息是根据MQ遥测传输协议形成的;
由所述消息处理服务从装置接收所接收消息,其中所述所接收消息包括话题部分,所述话题部分包括与主题描述符相关联的一个或多个级别;
由所述消息处理服务基于所述消息的所述话题部分标识被注册来接收消息的一组接收方装置;
由所述消息处理服务处理所述所接收消息的所述话题部分,以基于对一组业务规则或路由表中的至少一者的评估来选择所述接收方装置的子集;;以及
由所述消息处理服务发布所述已处理的所接收消息。
2.如权利要求1所述的计算机实现的方法,其中由所述消息处理服务处理所述所接收消息包括:获得至少一条另外的信息。
3.如权利要求1所述的计算机实现的方法,其中所述接收方装置的子集对应于被协调装置,并且其中所述所接收消息对应于由被协调装置执行任务的指令。
4.如权利要求1所述的计算机实现的方法,其还包括:由所述消息处理服务处理所述所接收消息以标识对应于所述接收方装置的所选子集的二级话题。
5.一种用于利用消息协议来管理通信的系统,其包括:
消息处理服务,所述消息处理服务在具有处理器和存储器的至少一个计算装置上实现,远程命令服务被配置来接收和发布根据消息传递协议形成的消息,
其中所述消息处理服务被配置来:
接收对应于话题部分的传入消息,所述话题部分包括描述所述传入消息的主题的至少一个级别,其中一组接收方装置被注册来接收与所述传入消息的所述话题相关联的消息;
根据消息处理配置处理所述传入消息以标识所述接收方装置的子集;并且
发布所述已处理的传入消息。
6.如权利要求5所述的系统,其还包括管理客户端装置,所述管理客户端装置被配置为通过关联一个或多个业务规则或路由表来配置所述消息处理服务。
7.如权利要求5所述的系统,其中所述消息处理服务通过评估与所述一组接收方装置相关联的安全标准并基于对所述安全标准的评估排除至少一个接收方装置来处理所述传入消息。
8.如权利要求5所述的系统,其中所述消息处理服务进程基于对逻辑规则的评估来选择用于所述传入消息的可能接收方的子集。
9.如权利要求8所述的系统,其中所述消息处理服务选择单个接收方装置来接收所述传入消息。
10.如权利要求5所述的系统,其中所述消息处理服务对应于网络处理服务。
11.如权利要求10所述的系统,其中所述一组接收方装置对应于一组被协调装置网络中的单独装置。
12.如权利要求5所述的系统,其中所述消息传递协议包括MQ遥测传输协议。
13.一种用于利用消息协议来管理消息的计算机实现的方法,其包括:
接收根据消息传递协议形成的消息,所述消息对应于话题,所述话题包括主题描述,其中一组接收方装置被注册来接收与所述话题相关联的消息;以及
根据消息处理配置处理所述所接收消息以标识所述一组接收方装置的子集。
14.如权利要求13所述的计算机实现的方法,其中处理所述所接收消息包括:选择用于单独消息的可能接收方的子集。
15.如权利要求13所述的计算机实现的方法,其中所述消息处理配置包括至少一个业务规则,并且其中处理所述所接收消息包括:评估所述至少一个业务规则。
CN201780075588.9A 2016-11-28 2017-11-27 管理消息传递协议通信 Active CN110326255B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US15/362,751 2016-11-28
US15/362,757 2016-11-28
US15/362,757 US10608973B2 (en) 2016-11-28 2016-11-28 Embedded codes in messaging protocol communications
US15/362,765 2016-11-28
US15/362,751 US10193839B2 (en) 2016-11-28 2016-11-28 Managing security in messaging protocol communications
US15/362,765 US10637817B2 (en) 2016-11-28 2016-11-28 Managing messaging protocol communications
PCT/US2017/063314 WO2018098445A1 (en) 2016-11-28 2017-11-27 Managing messaging protocol communications

Publications (2)

Publication Number Publication Date
CN110326255A true CN110326255A (zh) 2019-10-11
CN110326255B CN110326255B (zh) 2022-08-30

Family

ID=62196118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780075588.9A Active CN110326255B (zh) 2016-11-28 2017-11-27 管理消息传递协议通信

Country Status (6)

Country Link
EP (1) EP3545662B1 (zh)
JP (1) JP6935496B2 (zh)
KR (1) KR102209276B1 (zh)
CN (1) CN110326255B (zh)
AU (1) AU2017363368B2 (zh)
WO (1) WO2018098445A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112887190A (zh) * 2021-01-06 2021-06-01 武汉兴图新科电子股份有限公司 用于云视频的融合平台跨网络多方通讯、协作的解决方法

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10783016B2 (en) 2016-11-28 2020-09-22 Amazon Technologies, Inc. Remote invocation of code execution in a localized device coordinator
US10608973B2 (en) 2016-11-28 2020-03-31 Amazon Technologies, Inc. Embedded codes in messaging protocol communications
US10637817B2 (en) 2016-11-28 2020-04-28 Amazon Technologies, Inc. Managing messaging protocol communications
US10817331B2 (en) 2018-06-25 2020-10-27 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
EP3811209A1 (en) * 2018-06-25 2021-04-28 Amazon Technologies Inc. Execution of auxiliary functions in an on-demand network code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11200331B1 (en) 2018-11-21 2021-12-14 Amazon Technologies, Inc. Management of protected data in a localized device coordinator
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11372654B1 (en) 2019-03-25 2022-06-28 Amazon Technologies, Inc. Remote filesystem permissions management for on-demand code execution
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
KR102367017B1 (ko) * 2020-10-13 2022-02-24 주식회사 한국금융솔루션 통신 네트워크 시스템 및 그것의 제어방법
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021836A1 (en) * 2003-05-01 2005-01-27 Reed Carl J. System and method for message processing and routing
US20150288636A1 (en) * 2014-04-02 2015-10-08 Ford Global Technologies, Llc Vehicle telematics data exchange
CN106131025A (zh) * 2016-07-15 2016-11-16 深圳市丰巨泰科电子有限公司 一种基于mqtt的消息在数字标牌中传输方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19730363B4 (de) * 1997-07-15 2011-08-11 Telefonaktiebolaget Lm Ericsson (Publ) Ortsspezifische World Wide Web Dienste in digitalen zellularen Kommunikationsnetzwerken
US20080248801A1 (en) * 2007-04-03 2008-10-09 International Business Machines Corporation Access to locally relevant services and personally relevant services within a mobile communications environment
US8339259B1 (en) * 2009-06-16 2012-12-25 Sprint Communications Company L.P. System and method for setting an alarm by a third party
US10185934B2 (en) * 2013-07-09 2019-01-22 Qualcomm Incorporated Real-time context aware recommendation engine based on a user internet of things environment
US9094407B1 (en) * 2014-11-21 2015-07-28 Citrix Systems, Inc. Security and rights management in a machine-to-machine messaging system
US10362074B2 (en) * 2015-02-03 2019-07-23 Kodiak Networks, Inc Session management and notification mechanisms for push-to-talk (PTT)
WO2018098366A1 (en) * 2016-11-28 2018-05-31 Amazon Technologies, Inc. Localized device coordinator with on-demand code execution capabilities
JP2020501253A (ja) * 2016-11-28 2020-01-16 アマゾン テクノロジーズ インコーポレイテッド 局所化されたデバイスコーディネータにおけるオンデマンドコード実行

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021836A1 (en) * 2003-05-01 2005-01-27 Reed Carl J. System and method for message processing and routing
US20150288636A1 (en) * 2014-04-02 2015-10-08 Ford Global Technologies, Llc Vehicle telematics data exchange
CN104980490A (zh) * 2014-04-02 2015-10-14 福特全球技术公司 车辆远程信息处理数据交换
CN106131025A (zh) * 2016-07-15 2016-11-16 深圳市丰巨泰科电子有限公司 一种基于mqtt的消息在数字标牌中传输方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BRYAN BOYD: ""Building Real-time Mobile Solutions with MQTT and IBM MessageSight"", 《HTTP://WWW.REDBOOKS.IBM.COM/REDBOOKS/PDFS/SG248228》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112887190A (zh) * 2021-01-06 2021-06-01 武汉兴图新科电子股份有限公司 用于云视频的融合平台跨网络多方通讯、协作的解决方法

Also Published As

Publication number Publication date
CN110326255B (zh) 2022-08-30
AU2017363368B2 (en) 2021-03-25
JP2020502895A (ja) 2020-01-23
EP3545662A1 (en) 2019-10-02
JP6935496B2 (ja) 2021-09-15
EP3545662A4 (en) 2020-07-08
EP3545662B1 (en) 2023-10-18
KR102209276B1 (ko) 2021-01-29
AU2017363368A1 (en) 2019-07-04
KR20190082926A (ko) 2019-07-10
WO2018098445A1 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
CN110326255A (zh) 管理消息传递协议通信
CN109194506B (zh) 区块链网络部署方法、平台及计算机存储介质
CN110462589A (zh) 本地装置协调器中的按需代码执行
US10637817B2 (en) Managing messaging protocol communications
US10193839B2 (en) Managing security in messaging protocol communications
US9990195B2 (en) Generating and managing applications using any number of different platforms
US10608973B2 (en) Embedded codes in messaging protocol communications
CN105593835B (zh) 通过主云服务管理器管理多个二级云
CN110352401A (zh) 具有按需代码执行能力的本地装置协调器
US11665172B2 (en) Systems and methods for processing optimizations and templating using metadata-driven blockchain techniques
US20180262391A1 (en) System and method for developing run time self-modifying interaction solution through configuration
CN104823189A (zh) 用于连接设备的编配框架
CN109564527A (zh) 云计算节点的安全配置
CN102810090A (zh) 网关数据分布引擎
CN108415710A (zh) 在智能对话开发平台上发布、调用api的方法和系统
US10970142B2 (en) Transforming plug-in application recipe variables
CN107800781A (zh) 一种配置数据处理方法和装置
CN112424749A (zh) 内存占用有限情况下的按需代码执行
Jin et al. IoT device management architecture based on proxy
CN113741862A (zh) 移动端扩展开发的通信系统和方法
Ganchev et al. A cloud-based service recommendation system for use in UCWW
CN115349117B (zh) 用于多租户无服务器环境的多级高速缓存网格系统
CN114466047B (zh) 物联网设备便捷接入物联网平台的方法、平台、设备及介质
Dasari et al. IOT AND WIRELESS SENSOR NETWORKS
CN117411877A (zh) 基于边缘计算的应用交付方法、系统、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant