CN110720092B - 在装置处接收数据对象 - Google Patents

在装置处接收数据对象 Download PDF

Info

Publication number
CN110720092B
CN110720092B CN201880035817.9A CN201880035817A CN110720092B CN 110720092 B CN110720092 B CN 110720092B CN 201880035817 A CN201880035817 A CN 201880035817A CN 110720092 B CN110720092 B CN 110720092B
Authority
CN
China
Prior art keywords
data
service
messaging
delivery
data object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880035817.9A
Other languages
English (en)
Other versions
CN110720092A (zh
Inventor
R·D·杨
R·洛拉迪亚
S·克里希那穆里
N·C·杰恩
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/716,373 external-priority patent/US11088981B2/en
Priority claimed from US15/716,365 external-priority patent/US10635687B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN110720092A publication Critical patent/CN110720092A/zh
Application granted granted Critical
Publication of CN110720092B publication Critical patent/CN110720092B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/56Provisioning of proxy services
    • H04L67/562Brokering proxy 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/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • 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/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

提供了一种用于将数据对象(114)递送到装置(152)的技术。将数据对象(114)分布到装置(152)的数据递送指令可以在递送服务(126)处被接收,并且包括所述数据对象(114)的存储位置(112)、消息传送主题以及可由所述装置(152)接收的数据大小。然后将所述数据对象(114)划分为与可由所述装置(152)接收的所述数据大小相对应的块。识别所述装置(152)经由消息传递服务(130)订阅的消息传递主题。使用所述消息传递主题和安装在所述装置(152)上的网络协议将所述块发送到所述装置(152)。

Description

在装置处接收数据对象
背景技术
电子装置和计算系统在社会的许多方面已变得无处不在。装置可以存在于工作场所、家中或学校中。计算系统可以包括用于处理和存储数据的计算和数据存储系统。一些计算系统已经开始提供被称为服务提供商环境的集中式虚拟计算选择,其可以降低总体成本、提高可用性、改进可扩展性并且减少部署新应用程序的时间。
通信技术的进步已允许甚至相对简单的电子装置通过计算机网络与其他装置和计算系统进行通信。计算网络或服务提供商环境还可以与资源受限装置、诸如微控制器单元(MCU)或物联网(IoT)装置进行通信。资源受限装置可以使用轻量级消息传递协议进行通信,并且可能具有有限的资源来发送和接收消息、通知或数据。
附图说明
图1是展示根据本发明技术的示例的用于将数据对象递送到装置的系统的框图。
图2是展示根据本发明技术的示例的用于将数据对象递送到作为计算中心的装置的系统的框图。
图3A是展示根据本发明技术的示例的用于使用递送服务将数据对象递送到装置的系统的框图。
图3B是展示根据本发明技术的示例的用于递送数据对象的系统的框图。
图4展示了用于在服务提供商环境中向装置提供对网络服务的访问的示例架构的框图。
图5是展示根据本发明技术的示例的示例计算服务环境的框图。
图6是根据本发明技术的示例的用于将数据对象递送到装置的示例流程图。
图7和图8是根据本发明技术的示例的用于将数据对象递送到装置的示例方法的流程图。
图9和图10是根据本发明技术的示例的用于在装置上执行的代理处接收数据对象的示例方法的流程图。
图11是提供可以在本发明技术中采用的计算装置的示例图示的框图。
具体实施方式
本发明技术可以使用数据部署服务将数据对象发送到装置,所述装置可以是资源受限装置。在一个示例中,数据对象的递送可以使用经由消息传递服务的发布-订阅消息传递主题流传输到装置的数据块。装置可以是装置部署组的一部分,所述部署组被标识为用于接收数据对象的副本的组。在一个示例中,装置可以是具有有限能力(诸如有限的通信存储器缓冲区大小)的装置。另外,装置可以是微控制器单元(MCU)或物联网(IoT)装置。
要递送的数据对象可以是任何类型的数据,诸如应用程序、应用程序更新数据、固件、固件更新数据、操作系统更新数据、配置数据、消息和/或装置要执行的命令。可以使用用于建立信道并将数据对象递送(例如,流传输)到装置的一种或多种服务来将数据对象发送到装置。例如,数据部署管理器服务可以用于配置装置,并且递送服务可以递送数据对象。数据部署管理器服务可以被配置成从部署设置客户端接收递送配置数据。更确切地说,数据部署管理器服务可以接收递送配置数据,所述递送配置数据指示数据对象名称(或标识符)、数据对象的存储位置,以及要接收数据对象的装置或一组装置的标识。数据部署管理器服务还可以接收用于将数据对象递送到装置的时间或调度。
数据部署管理器服务可以将递送配置数据发送到作业调度服务。作业调度服务可以使用递送配置数据来实施针对要递送到装置或一组装置的数据对象的部署或递送调度。作业调度服务还可以将部署调度通知给装置或一组装置。在一个方面,装置可以订阅与作业调度服务相关联的发布/订阅消息传递服务中的调度主题,并且作业调度服务可以向装置(或一组装置)发送关于数据对象的部署的通知。因此,可以使用发布/订阅消息传递服务将调度通知发送到装置。与调度主题相关联的通知还可以向装置通知数据对象的来源是消息传递主题,经由所述消息传递主题,可以通过递送服务以块将数据对象发送到装置。
递送服务可以是可以与作业调度服务通信的服务。递送服务可以接收数据对象的位置,并且递送服务可以将数据对象分解或划分为小于数据对象大小的组块或块。块的大小可以是具有有限或受限资源的装置可消耗的大小。例如,如果装置具有可以接收256字节数据的通信存储器缓冲区,则块的大小可以被设定成匹配装置的通信存储器缓冲区。可以将块准备成经由由递送服务用来将块递送到装置的消息传递主题发送出去。在一个示例中,可以在以连续流从递送服务发送到消息传递服务的消息传递主题的消息中流传输所述块。
装置可以订阅消息传递主题以便经由发布/订阅消息传递服务(例如,如由作业调度服务通知订阅)接收数据对象的块。例如,块可以使用消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)作为传送层,并且通过发布/订阅消息传递服务进行发送。一旦装置已经接收到与数据对象相关联的块,装置就可以将所述块组合成数据对象,并且所述数据对象可以由装置使用、消耗、实施或安装。例如,可以将作为装置的更新固件的数据对象安装在装置上以供使用。可替代地,当从递送服务接收到块(例如,数据条目或配置数据)时,装置可以消耗所述块。
部署组可以包括已被选择用于接收数据对象的一组装置,并且所述组中的装置可以具有不同的硬件和/或软件能力。例如,第一装置可以能够以第一大小的块消耗或接收数据,而第二装置可以能够以第二大小的块消耗或接收数据。递送服务可以将数据对象划分为第一大小的块,并且然后递送服务可以将数据对象划分为第二大小的块。因此,可以将数据对象复制并划分为一个以上的块集,其中每个块集具有不同的大小。然后,递送服务可以经由第一消息传递主题发送第一大小的块,并且经由第二消息传递主题发送第二大小的块。特定装置可以订阅与相应装置能够接收的块大小相对应的消息传递主题。类似地,递送服务可以将数据对象划分为具有定义的格式(例如,JSON、二进制或专有格式)的块,并且以定义的格式将块集发送到针对所述格式的消息传递主题。
递送服务可以使用通信协议将块发送到装置,所述通信协议是用于与资源受限装置一起使用的轻量级传送协议。通信协议可以是装置在使用本发明技术的消息传递能力之前所采用的联网协议。例如,具有受限资源的装置可能无法使用或安装附加的联网协议,或者附加的网络协议可能进一步限制装置并给装置带来额外的负担。通过使用装置已经使用的网络协议,本发明技术可不给装置带来关于附加网络协议的额外负担。在一个方面,联网协议可以是MQTT或MQTT-SN。
装置可以利用标识与数据对象相关联的块的列表的映射图来接收数据对象的块。装置可以采用所述映射图来识别与数据对象相关联的一个或多个块丢失。然后,装置可以将向递送服务通知丢失块。例如,装置可以使用消息传递主题、API调用或另一种消息传递方法来向递送服务通知关于丢失的块。然后,递送服务可以将丢失块重新发送到装置。
数据对象可以采用签名或认证方式,以确保装置接收和消耗授权数据对象。例如,装置可以被配置成接受授权数据对象并拒绝未经授权的数据对象。可以使用托管在服务提供商环境中的代码签名器服务对数据对象进行签名。签名可以被递送服务分解成一个或多个块,并且然后可以递送或推送到装置。可以将块标记为签名块,以供装置识别哪些块是签名块。一旦接收到一个签名块,装置就可以留出任何其他签名块,直到在装置处接收到完成完整签名的签名块为止。当接收到签名块时,装置然后可以将签名块组合以获得签名并且然后使用所述签名来认证数据对象。在认证之后,装置可以向递送服务或作业调度服务通知在装置处完成对数据对象的部署。装置还可以能够向递送服务通知部署中的错误。递送服务或作业调度服务可以向数据部署管理器服务通知关于装置的部署的状态,并且数据部署管理器服务可以向部署设置客户端通知关于部署。
图1展示了根据本发明技术的示例的用于将数据对象递送到装置的环境100。环境100可以包括服务提供商环境110,所述服务提供商环境包括对象数据存储库112、数据部署服务120和消息传递服务130。
服务提供商环境110可以被描述为用于提供虚拟化计算服务的多个计算系统或服务,装置、应用程序或其他服务可经由网络132(例如,互联网)访问所述虚拟化计算服务。在一个方面,服务提供商环境110可以经由网络132耦合到装置152、154、156和部署设置客户端116。作为示例,装置152、154、156可以是资源受限装置,诸如MCU或IoT装置。IoT装置可以是任何类型的家庭自动化装置、工厂自动化装置、农场自动化装置、运输装置、车辆、医疗装置、能源管理装置、传感器、致动器、嵌入式电子装置或其他装置。部署设置客户端116可以是计算装置,诸如台式计算机、工作站、移动装置、智能电话、机顶盒或平板计算机。
服务提供商环境110可以托管数据部署服务120,所述数据部署服务可以包括数据部署管理器服务122、作业调度服务124、递送服务126和/或代码签名器服务128。这些服务中的每一者都可托管在相同的虚拟化资源上(例如,在一个计算实例或服务器上),或者可以单独地托管在不同的虚拟资源(例如,多个计算实例)或非虚拟资源(例如,硬件服务器)上。
在一个方面,部署设置客户端116可以被用户用来创建、管理和/或规划将数据对象114部署到装置152、154、156中的一者或多者。装置152、154、156可以被认为是接收数据对象114的目标装置。部署设置客户端116可以将递送配置数据发送到数据部署管理器服务122,因为数据部署管理器服务122可以用于设置和管理数据部署。递送配置数据可以描述将要如何配置数据部署,包括指定数据对象114名称、数据对象114在对象数据存储库112中的位置、以及要接收数据对象114的一个或多个装置。数据对象114可以是,但不限于,固件、固件更新、更新数据、应用程序、应用程序更新数据、操作系统、操作系统更新数据、配置数据(例如,Wi-Fi和SSID数据)、证书数据、可执行图像、凭证轮换数据、证书轮换或装置要执行的命令(例如,重新启动或远程操作命令)。
部署设置客户端116可以具有用于接受来自用户或客户的输入的图形或命令行接口。另外,部署设置客户端116可以使用应用程序编程接口(API)调用将递送配置数据发送到数据部署管理器服务122。API调用可以包括用于管理数据部署的命令,诸如创建、读取、更新、删除、列表、停止、获取等。
数据部署管理器服务122可以使用递送配置来识别部署将针对包括一个以上装置的递送组150。例如,图1将递送组150描绘为包括多个装置152、154、156。递送组150可以在组中具有任何数量的装置。在IoT装置正在接收部署到装置的数据或可执行图像的示例情况下,部署组中可能存在数百、数千或甚至数百万个装置。
在一种配置中,数据部署管理器服务122可以用来将数据对象114从部署设置客户端116上传到对象数据存储库112。可替代地,部署设置客户端116可以将数据对象114上传到对象数据存储库112。
对象数据存储库112可以是在服务提供商环境110中由计算服务提供商向客户提供的数据存储服务。客户可以从客户环境或客户客户端(诸如部署设置客户端116)访问对象数据存储库112。可以使用API来访问对象数据存储库112以便存储和检索数据。此外,对象数据存储库112可以是高度可用并且由服务提供商管理的服务。数据可以作为被称为对象(诸如数据对象114)的离散存储单元存储在对象数据存储库112中,所述对象可以使用密钥(即,分配的唯一标识符)进行寻址和操纵。对象可以放置在数据容器(例如,存储桶或存储池)中,使得对象在平面地址空间中处于相同水平。配置元数据可以分配到数据容器和对象,并且配置元数据中包括的配置设置可以由客户配置。
在替代配置中,数据对象114可以存储在其他类型的数据存储库中。例如,数据对象114可以被存储:在服务器存储器中作为对象、在非易失性存储器中作为平面文件、在NoSQL数据存储库中作为数据值、在虚拟化块装置中作为数据文件、在存储网关中作为对象、在关系数据存储库中作为二进制大对象(blob)或值、或者在可以使用计算机网络从中访问数据对象的任何其他类型的数据存储库中。
数据部署管理器服务122可以采用递送配置数据来生成数据递送指令。数据递送指令可以发送到作业调度服务124。数据部署管理器服务122可以发送所有的递送配置数据或仅发送用于调度的递送数据配置的一部分。作业调度服务124可以调度数据对象114到指定装置152、154、154的部署。数据递送指令可以指定可由装置接收的数据递送调度、递送组150和/或数据块大小,如由装置的通信能力所决定。例如,装置可以具有存储器缓冲区,所述存储器缓冲区限制客户端152一次可以接收的通信数据量。缓冲区可以以字节(例如,256字节)或千字节(例如,1K)来测量。大小减小的缓冲区可以使装置152更难以在一个下载操作中执行接收大数据对象114,诸如固件更新或应用程序。
作业调度服务124可以将通知发送到装置152,以向装置通知数据部署可用。可以使用消息传递服务130从作业调度服务124发送通知,所述消息传递服务可以是发布/订阅消息传递服务。例如,可以通知装置订阅与作业调度服务124相关联的主题。与作业调度服务124相关联的主题可以被称为调度主题。可以经由数据部署管理器服务122、作业调度服务124或递送服务126发送订阅主题的通知。所述通知还可以用于装置152订阅将由递送服务126使用的消息传递主题。
一旦装置订阅了调度主题,装置就可以接收关于数据对象114的部署的通知。可以向装置154提供与调度主题相关联的证书,以确保装置具有对调度主题的正确权限设置。可替代地,可以使用其他类型的消息传递来将数据部署的可用性传达给装置154。例如,可以使用异步队列消息传递、SMS消息传递、套接字或其他类型的通过计算机网络的消息传递来与装置154通信。在装置152完全接收到数据对象114之后,装置还可以向作业调度服务124通知有关调度主题的状态,所述调度主体是状态报告主题。
调度主题的示例是:
$delivery/things/thing-name/jobs/notify
$delivery/things/myThing/jobs/get/accepted
$delivery/things/myThing/jobs/get/rejected
作业调度服务124可以被视为能够定义一组远程操作的作业协调和通知服务,所述远程操作被发送到一个或多个装置152、154、156并在其上执行。例如,远程操作可以指示一个或多个装置接收应用程序、固件更新、重新启动装置、轮换证书或执行远程故障排除操作。此外,作业调度服务124可以用于调度部署、向装置通知部署和由部署指定的对装置的更新、生成部署的状态报告、支持用于更新作业的长期部署,和/或支持与部署有关的活动,诸如更新作业的超时、重试和重新运行。
作业调度服务124还可以包括用于确保数据对象114被递送的其他可靠性机制。例如,作业调度服务124可以被配置成重试数据对象114的失败递送。另外,在分开的时间向递送组的子组发送(例如,流传输)数据对象的块的情况下,可以发生数据对象的分阶段递送。而且,作业调度服务124可以跟踪完成数据对象114的递送所花费的时间量。如果递送数据对象114的时间超过设定或预期的阈值,则递送可能超时并且可以向管理员通知超时。作业调度服务124还可以提供对长时间运行或连续作业的支持。
作业调度服务124可以将数据递送指令发送到递送服务126。例如,递送服务126可以订阅调度主题。递送服务126可以订阅与装置相同的调度主题,或者可以订阅为递送服务126创建的调度主题。可替代地,递送服务可以直接从作业调度服务126接收通知或消息。
递送服务126可以被配置成将数据的块发送到装置,诸如资源受限的MCU或IoT装置。递送服务126可以将数据对象114分解或划分为块,所述块可被描述为数据组块。创建的块具有可由装置接收的大小。例如,如果装置152具有1024字节的通信缓冲区大小,则递送服务126可以将数据对象114划分为块,其中每个块具有1024字节的最大大小。然后,递送服务126可以将表示数据对象114的块发送或流传输到部署组中的装置或一组装置。例如,递送服务126可以发送块,其中在递送一个或多个块之间的时间中存在停顿或中断,或者递送服务126可以连续地将块流传输到装置。可以通过经由消息传递服务130接收的消息来发起块的递送,或者可以通过装置152或递送服务126来发起块的递送。
装置可能已经订阅与递送服务126相关联的消息传递主题以便接收所述块。由递送服务126用来发送块的通信主题可被称为消息传递主题。可以使用轻量级联网协议(例如,MQTT)作为传送层来将块递送到装置。例如,块可以在传送层中使用MQTT或MQTT-SN,并且使用TCP/IP(传送控制协议/互联网协议)、SMS(简单消息传递服务)或其他消息协议通过发布/订阅消息传递服务进行发送。MQTT或MQTT-SN可以在互联网联网协议(例如TCP/IP)之上发送或封装在其中。然而,对于具有足够的计算资源来支持附加协议的装置,可以使用其他传送联网协议(例如,UDP)。块可以进行排序,并且使用每个块的唯一标识符进行标识。
递送服务126可以具有递送服务126正在向其发布消息的一个以上消息传递主题。例如,递送服务126可以将数据对象114划分为具有第一大小的第一块集。然后,递送服务126可以将相同的数据对象114划分为具有第二大小的第二块集。具有用于发送数据对象114的设定大小的每个块集可以具有唯一消息传递主题。示出了有关消息传递主题的3种不同的块递送大小的示例:
$delivery/streams/MyStream/things/MyThing/256
$delivery/streams/MyStream/things/MyThing/512
$delivery/streams/MyStream/things/MyThing/2048
装置154可以订阅唯一消息传递主题,以便接收具有可由装置154接收和消耗的块大小的块。块可以在消息中发送到装置154,因为装置154经由消息传递服务130订阅消息传递主题,并且消息传递服务130可以是发布/订阅消息传递服务,如先前所描述。装置可以具有与消息传递主题相关联的证书,以确保装置具有对消息传递主题的正确权限设置。
在一个示例中,作业调度服务124可以经由调度主题向装置152通知可用于订阅的消息传递主题。在另一个示例中,作业调度服务124可以经由调度主题向装置152通知可用于订阅的消息传递主题,并且装置152经由代理162可以将与装置152可兼容的块大小附加到消息传递主题名称(例如,字符串)。在又一个示例中,装置152可以进行硬配置或硬编码以便订阅具有与装置152可兼容的块大小的消息传递主题。此外,装置152订阅的消息传递主题可以是对装置152唯一的,并且基于装置152的客户端标识(ID)。
在一个方面,数据对象114可以由装置152接收并使用、实施、或安装在其上。例如,数据对象114可以是用于替换或更新与装置152相关联的固件的图像。装置可以以块接收数据对象114、组装所述些块,并且然后安装图像。
在一个方面,消息传递主题可利用诸如二进制、JavaScript对象标记(JSON)或另一种数据格式的格式来将块格式化。数据对象114可以被划分为一个以上的块集,每个块集具有不同的格式和/或不同大小的块,并且然后每个块集可以与对应于相应装置所期望的数据格式和块大小的唯一消息传递主题相关联。示出了不同块递送类型和大小的示例:
$delivery/streams/MyStream/things/MyThing/JSON/64
$delivery/streams/MyStream/things/MyThing/binary/64
$delivery/streams/MyStream/things/MyThing/JSON/256
$delivery/streams/MyStream/things/MyThing/binary/256
装置154可以通过订阅对应的消息传递主题来选择期望接收的格式类型和/或块大小。在一个方面,每个单独的消息传递主题通过不同的通信信道发送,并且装置154通过请求特定的消息传递主题来指定格式的类型和/或块大小。在另一个示例中,装置可以确定装置正在接收的数据格式或块大小是不正确的。通过将装置订阅更改为不同的消息传递主题,装置然后可以接收正确的数据格式或块大小。
在一个示例中,可以使用单个消息传递主题一次将块的递送发送到大量的装置,将向所述装置通知块的递送被调度为何时开始。例如,如果1,000个装置订阅了消息流,则所述装置可以各自接收使用装置已订阅的消息传递主题发布或递送的块的副本。
在一个方面,数据部署管理器服务122可以将数据对象114划分为可由订阅消息传递服务130的消息传递主题的装置使用的大小的块。然后,可以依靠递送服务126经由消息传递服务130将块递送到装置。可以使用装置所使用的网络协议来递送所述块。
在一种配置中,装置152、154、156可以使用加载在装置152、154、156上的递送代理162a至162c与作业调度服务124或递送服务126通信。递送代理162a至162c可以是在装置152或微控制器单元(MCU)上运行的轻量级进程,并且装置可以使用调度主题订阅来自作业调度服务124的数据递送或数据部署通知,以便被通知要递送的数据对象114。此外,递送代理162a至162c可以订阅调度主题,以便从作业调度服务124获得关于待定数据递送事件的查询。递送代理还可以在装置152上执行数据传输任务,并且可以将数据递送的状态报告回到作业调度服务124。
在另一种配置中,递送代理162a至162c可以被配置成接收构成数据对象114的块,并且递送代理162a至162c可以安全地接收数据(例如,可执行更新、配置信息等)、处置在经由消息传递主题接收块期间的中断,并且管理在块中接收的数据。递送代理162a至162c可以管理装置152上的操作,以便安全地接收和组合接收到的块。递送代理162a至162c可以通过无线连接(Wi-Fi、Zigbee、蓝牙等)以组块或块从递送服务126接收数据对象、将数据对象块聚集在一起、验证代码签名、消耗数据对象(例如,执行更新),并且经由调度主题将状态报告回到作业调度服务124。递送代理162a至162c可以使用诸如MQTT或MQTT-SN的网络协议来接收块。另外,递送代理162a至162c可以被配置用于装置152的特定操作系统和硬件平台。
递送服务126可以生成映射图以标识与数据对象114相关联的块,因为所述块可能被无序地递送到装置。一旦装置已经接收到数据对象114的完整块集,装置就可以组合或重建数据对象114并在装置上使用、消耗、实施或安装数据对象114。例如,可以将固件更新图像加载到装置上。一旦安装了图像,装置就可以重新启动。可替代地,一旦接收到块,装置就可以开始使用块。例如,配置文件的部分可以被接收在通信缓冲区中,并且可以在接收到此类配置设置时应用所述配置设置。
与块集相关联的映射图可以呈诸如位图、JavaScript对象标记(JSON)或另一种有用格式的格式。映射图还可以由装置用来确保接收到数据对象114的块集中的块。例如,装置154可以使用映射图来识别装置接收到的块集中丢失了一个或多个块。然后,装置154可以向递送服务126通知任何丢失的块,并且可以使用在映射图中描述的丢失块的标识符来识别任何丢失块。然后,递送服务126可以将一个或多个丢失块重新发送到装置154。装置154还可以请求重新发送数据对象114的整个块集。
递送服务126用来发送块的网络协议可以是装置已经在使用的网络协议。例如,装置152可以是资源受限装置。如果递送服务126将采用装置152尚未使用的网络协议,则递送服务126将强加新的网络协议,所述新的网络协议将被加载到客户端152上。将新的网络协议强加到客户端152上将进一步限制装置152的已经受限的资源。在一个方面,网络协议可以是消息队列遥测传送(MQTT)或MQTT-SN,并且这种协议可以用作用于递送块的传送层。每个块可以作为MQTT消息递送到装置。
在一个方面,数据部署服务120可以托管或使用代码签名器服务128。代码签名器服务128可以由数据部署管理器服务122任选地用于认证目的,以保护数据对象114的完整性。代码签名器服务128可以用于生成与数据对象114相关联的签名,以确保数据对象114和数据对象114的来源的真实性和有效性。在这个过程中,可以计算数据对象114的哈希,并且可以利用非对称密钥对的私钥对哈希进行签名。代码签名器服务128可以管理密钥对、对数据对象114的签名,并且可以负责确保装置上存在受信任的根证书以用于验证签名。在一种配置中,装置可以被配置成仅使用或实施已被认证并且因此是来自受信任来源的软件的数据对象。这可以防止装置被篡改或被指示执行未经授权的命令。代码签名器服务128可以用来对数据对象114的整个图像或数据对象114的一部分进行签名。为了防止篡改数据对象114,签名可以使用允许装置验证数据对象114来自已认证来源的证书。签名标识数据对象114的发布者或创建者,并且确保数据对象114是真实的。代码签名器服务128还可以提供授权控制、安全密钥存储、证书管理和审计跟踪。可替代地,这个签名过程也可以由用户手动地管理。
针对数据对象114生成的签名也可以被划分为两个或更多个块以便发送到装置。在数据对象114在装置上实施之前,装置可以识别与签名相关联的块。与签名相关联的块可以由代码签名器服务128标记,以便向装置指示数据对象114的块集中的哪些块与签名相关联。当装置正在接收块时,装置识别与签名相关联的块,并且可以在将数据对象114的块组合之前将与签名相关联的块组合。通过组合用于签名的块,装置将能够使用签名来认证或验证数据对象114。
在另一个方面,数据对象114的块集中的每个块可以通过递送服务126或代码签名器服务128给出块类型。块类型可以指示哪些块与签名相关联以及哪些块与数据对象114的数据相关联。块类型也可以由数据部署管理器服务122、部署设置客户端116或递送服务126用来标记正在块中发送的任何其他类型的数据。例如,块可以被标记为可执行数据、数据存储信息、签名数据、配置数据、安装图像数据、状态数据、消息数据或将帮助装置使用或消耗数据的任何其他数据类型。
在一个方面,数据对象114可以完全地加密。可替代地,数据对象114的块集中的每个块可以在发送块之前进行加密。在一种配置中,可以使用数据部署服务120之外的加密服务对数据对象114或各个块进行加密。
作为示例,这种技术可以提供受管理的服务,以使得安全数据对象能够分布到大的装置组,诸如:计算资源减少的装置、具有资源受限装置的装置组、嵌入式装置组,或具有微控制器单元(MCU)的装置组。在一个特定示例中,可以对装置的固件进行无线更新,并且无线更新可以包括更新装置的可执行图像的过程。由于资源受限装置可能会使用相对较长的时间,因此定期推送对装置的更新并持续改善装置功能的能力是有用的。用于将数据对象发送到分布式装置群的这种技术可以帮助解决装置的问题并且持续改善装置。
在另一个示例中,如果装置要接收作为更新的可执行文件的数据对象,则更新的可执行图像的来源可以由装置认证,并且新的可执行图像的完整性可以由装置验证。已在装置上执行的可执行可能不被准许更改其自身的可执行代码以防止恶意软件感染,并且中断无线更新而导致部分更新的风险很高(例如,如果装置在更新期间断电的话)。对于资源受限装置,管理此类更新复杂性更具挑战性,因为装置的有限处理能力意味着执行核实和验证算法需要相对较长的时间,并且装置中可用的有限存储器意味着也许不可能一次接收整个可执行文件。因此,本发明技术可以允许以块接收可执行图像、验证可执行图像,并使用多个块将其编程到装置中。
图2展示了根据本发明技术的示例的用于将数据对象114递送到装置160的环境200。在一种配置中,数据对象114的递送可以是在流传输配置中。计算环境200可以包括图1的环境100的许多相同的特征和部件。例如,装置160和递送代理162可以与图1的装置152、154和156以及递送代理162a至162c相同。
装置160可以是与计算中心142通信的装置160,以便与服务提供商环境110通信并接收由计算中心142提供的本地计算功能。递送代理162可以加载在装置160上,并且可以是在装置160上运行的轻量级进程。另外,计算中心142可以被配置成接收数据对象114的递送或部署。递送组140可以包括被设计成接收和使用数据(诸如来自递送服务126的块)的计算装置(例如,一个或多个计算中心142)。计算中心142可以由作业调度服务124或递送服务126通知来订阅消息传递主题以便接收数据对象。递送服务126可以使用与上文针对将数据对象递送到装置所述的相同方法将数据对象114的块发送到计算中心142。虽然计算中心142不一定是资源受限的,但是资源中心142可以受益于能够以快速、及时和受管理的方式从数据部署服务120接收数据对象114。
递送组140可以包括计算中心142,所述计算中心是具有处理器和存储器以及用于与装置160通信的无线连接的计算装置。计算中心142可以包括本地计算代码144,所述本地计算代码包括用于计算中心142执行的指令。本地计算代码144可以类似于可以在服务提供商环境110中的计算服务中执行的计算代码功能,但是这些功能可用于在本地装置160处执行而无需访问服务提供商环境110。例如,可以在计算中心142中提供计算实例,并且可以使用计算中心142中的计算服务来执行本地计算代码144或计算代码功能。本地计算代码144或计算代码功能是可以在装置160的请求下使用计算服务在本地执行的代码的部分,并且返回结果也可以提供给装置。本地计算代码144可以是在计算中心142上执行的计算实例上的容器中启动的功能,并且是能够接收参数、执行处理并返回值的程序代码段。另外,一旦本地计算代码144返回值,本地计算代码144就在计算中心142处终止。数据部署服务120可以用于更新存储在计算中心142中的本地计算代码144。这可能意味着添加、删除或更改可以在计算中心142上执行的本地计算代码144。另外,可以使用数据部署服务120来更新用于执行本地计算代码144的本地计算代码服务(未示出)。
计算中心142可以包括用于在服务提供商环境110不可访问时存储来自装置160的报告数据或状态数据的高速缓存148。一旦服务提供商环境110再次变得可访问,装置数据就可以上传到服务提供商环境110。计算中心142还可以包括用于在本地装置160之间提供消息传递的消息传递服务146。另外,当对服务提供商环境110的访问不可用时,旨在用于服务提供商环境110的消息传递可以排队。然后,当服务提供商环境110再次可用时,消息传递可以发送到服务提供商环境110。
计算中心142还可以包括同步149服务,所述同步服务用于将来自装置160的数据和装置状态同步到服务提供商环境110中的影子装置状态。更确切地说,计算中心142可以使用每个装置的虚拟版本或“影子”来高速缓存装置160的状态,所述虚拟版本或“影子”跟踪装置的当前状态与期望状态。这些本地化影子状态可以与服务提供商环境110中的影子状态同步。另外,计算中心142可以包括用于与数据部署服务120通信的递送代理170。递送代理170可以以与图1中的递送代理类似的方式进行操作。先前描述的计算中心142的功能可以使用数据部署服务120来更改、修改或更新,以递送数据对象114并且然后修改计算中心142的功能。
在替代配置中,计算中心142可以执行数据部署服务或递送服务的本地副本,以允许本地连接的装置160接收接收数据对象114。因此,计算中心142可以变成数据递送系统,如已经关于图1所描述。
图3A展示了根据本发明技术的示例的用于将数据对象314递送到装置320的环境300。计算环境300可以包括图1的环境100和图2的环境200的许多相同的特征和部件。环境300可以包括服务提供商环境301,其可以具有图1的服务提供商环境110的相同特征和能力。环境300可以包括可以提供递送配置302的部署设置客户端316,所述递送配置包括来自管理员或客户的递送配置数据302,以便创建和管理位于对象数据存储库312中的数据对象314的部署。递送配置302可以位于NoSQL数据存储库304中(例如,位于JSON文档中或作为单独的键值对)。数据对象314的部署可以由递送服务326调度,并且客户端320可以在被递送服务326通知来订阅消息传递主题时订阅适当的消息传递主题。
递送服务326可以将数据对象314划分为可由装置320接收的块。如所解释的,装置320可以订阅递送服务326可以向其发布消息以便递送从数据对象314创建的块的消息传递主题。在一个示例中,块可以流传输到装置320。装置320可以订阅已经由递送服务326在发布/订阅消息中介306中创建的消息传递主题。发布/订阅消息中介306可以是基于发布/订阅模型的消息中介。
消息队列308可以从装置320接收递送请求消息310,并且这个消息可以由递送服务326获得。递送服务326对消息的接收可以发起块的递送,或者块的递送可以由用户或客户发起。可替代地,递送请求消息310可以是针对丢失块的请求。装置320可以经由装置网关315与发布/订阅消息中介306和消息队列308进行通信,所述装置网关可以被认为是装置在服务提供商环境中访问装置服务(例如,递送服务326或其他装置服务)的入口点。消息队列308还可以用于报告数据对象314到装置320的递送状态(例如,递送作业的状态)。
装置网关315可以包括递送客户端318,以便从发布/订阅消息中介306接收消息并将消息发送到装置320。装置网关315可以托管在服务提供商环境301中,并且可以充当用于支持装置320与托管在服务提供商环境中的部件(诸如递送服务326、发布/订阅消息中介306和消息队列308)之间的通信(例如,MQTT、WebSockets和HTTP(超文本传输协议)的安全网关。可替代地,递送服务326可以将数据直接发送到装置网关315,并且绕过发布/订阅消息中介306。例如,从递送服务326发送的数据块的端点可以是单个装置。
在一个方面,部署设置客户端316可以触发递送服务326开始数据部署。例如,用于开始数据部署的触发可以是部署设置客户端316将配置数据发送到服务提供商环境301。配置数据可以由服务提供商环境301中的数据存储服务接收,所述数据存储服务随后触发递送服务326开始用于数据递送的过程。
图3B展示了根据本发明技术的示例的用于将数据对象314递送到装置320的环境350。这个示例展示了在不使用数据部署管理器服务、作业调度服务、代码签名器服务或服务提供商环境的情况下的数据对象314的递送。图3B所示的计算元件和服务可以在服务器或物理硬件主机上执行。在这种配置中,递送服务326可以接收递送配置302,所述递送配置可以是用于配置数据对象314到装置320的部署的数据,并且递送配置302可以从不同于另一服务的来源接收。例如,递送配置302可以由递送服务326直接从客户或用户接收,如通过客户端装置上的用户接口所创建。可替代地,在递送服务326处接收到的事件或通知可以触发递送服务326从以下位置检索递送配置302:诸如,由用户发送的配置文件、存储器存储位置、服务器、文件,或已经存储数据的数据存储库。
递送配置302可以将数据存储库330标识为存储数据对象314的位置。数据存储库330可以是可以存储数据对象的任何类型的数据存储库,包括:文件服务器、存储网关、数据存储磁盘阵列、非易失性存储器阵列,或另一类型的数据存储库。
递送服务326可以调度由递送配置302定义的数据对象314的部署,并且向发布/订阅消息中介306通知要创建的期望消息主题。递送服务326还可以通知装置订阅主题340以便接收数据对象314的块。发布/订阅消息中介306可以经由主题340将通知或消息发送到装置320。另外,装置网关315可以用作装置320访问发布/订阅消息中介306的装置服务或递送服务326的入口点。在一个方面,递送服务326可以使用装置网关315将数据直接递送到装置320。
递送服务326可将数据对象314的副本划分为可由装置320接收的块。然后,递送服务326可以经由发布/订阅消息中介306和装置网关315将所述块发送到装置340。由于装置320订阅了消息传递主题340,因此所述块作为推送到装置320的消息进行发送。
图4是展示装置430a至430c(如前所述)可以与之通信的示例服务提供商环境410的框图。具体地,图4的环境对于先前描述的IoT装置可以是有用的。IoT装置可以能够使用图4所示的服务,并且一旦连接,就使用图1至图3B所描述的技术的数据部署服务470。服务提供商环境410可以包括装置通信环境或装置支持系统,所述装置通信系统或装置支持系统包括可供经由网络420访问网关服务器440的装置430a至430c访问的各种资源。装置430a至430c可以与服务提供商环境410通信,以便访问诸如装置映像服务460、数据存储和计算处理的服务。在服务提供商环境410中操作的服务可以响应于来自装置430a至430c的请求和/或响应于服务内的计算操作而将数据和消息传达到装置430a至430c。
服务提供商环境410可以包括操作来向装置430a至430c提供服务的通信地耦合的部件系统440、442、446、450、460、470和480。网关服务器440可以被配置成提供装置430a至430c与服务提供商环境410之间的接口。网关服务器440可以从装置430a至430c接收请求并且可以将对应的数据和消息转发到服务提供商环境410内的适当系统。同样地,当服务提供商环境410内的系统可以试图将数据指令传达到装置430a至430c时,网关服务器440将那些请求路由到正确的装置430a。
网关服务器440可以适于使用各种不同的计算和通信能力与多样的装置430a至430c通信。例如,网关服务器440可以适于使用TCP(传输控制协议)或UDP(用户数据报协议)协议中的任一者来通信。同样地,网关服务器440可以被编程为使用任何合适的协议接收并且与装置430a至430c通信,所述协议包括例如MQTT、CoAP、HTTP和HTTPS。网关服务器440可以被编程为将从装置430a至430c接收的数据和指令或消息转换成可以由服务提供商环境410中的其他服务器系统使用的格式。在一个示例中,网关服务器440可以适于将使用HTTPS协议接收的消息转换成适合传达到服务提供商环境410内的其他服务器通信的JSON格式化消息。
网关服务器440可以存储关于装置430a至430c的信息或可控制所述信息的存储,所述装置已形成到特定网关服务器440的连接并且可以大体上依赖特定网关服务器440以与装置430a的通信。在一个示例中,网关服务器440可以具有存储在其上的指定特定装置430a的信息,诸如装置标识符。对于从特定装置430a建立的每个连接,网关服务器440还可以维持标识连接的信息。例如,可以针对与特定装置430a建立的每个连接而生成和存储连接标识符。还可以存储与特定连接相关的信息。例如,标识在其上建立连接的网关服务器440的特定套接字的信息以及标识由连接上的装置430a使用的特定协议的信息可以由网关服务器440存储。可以使用诸如套接字和协议的信息以便有助于经由特定连接的进一步通信。
在一个示例中,网关服务器440可以经由任何合适的联网技术与装置注册服务器442通信。装置注册服务器442可以适于跟踪每个装置430a的属性和能力。在示例中,可以向装置注册服务器442提供指定装置430a至430c的属性的信息。装置注册服务器442可以包括指定用于处置可以从装置430a至430c接收的各种请求的规则或逻辑(例如,自动化规则)的数据。装置注册服务器442可以被编程为将在特定通信协议(诸如像HTTPS、MQTT、CoAP)中接收的专门的装置功能或命令转换成使用服务提供商环境410中的其他服务器所理解的特定协议的功能或命令。在一个示例中,可以向装置注册服务器442提供指定以下内容的信息:在从特定装置430a接收到特定请求后,应当作出请求以处理请求的有效载荷数据和/或将所述数据存储在特定网络服务服务器450中。装置注册服务器442可以被类似地编程为从服务器442、450接收请求并且将那些请求转换成装置430a至430c所理解的命令和协议。
客户还可以能够在装置注册442中创建递送组或一组装置。作为创建部署的一部分,这些递送组可以由递送服务从装置注册442中检索。在这种情况下,递送组不需要与数据部署一起定义,而是可以使用装置注册中定义的递送组来提及。
装置映像服务服务器460可以维持每个已连接装置430a的状态信息。在示例实施方案中,装置映像服务服务器460维持指定已连接到环境410的每个装置430a的多个状态的信息。在示例情形中,装置映像服务服务器460可以包括记录的状态和期望的状态。记录的状态表示如装置映像服务服务器460当前所了解的特定装置430a至430c的现有状态。装置映像服务服务器460可以被配置成管理多步装置状态转变。装置映像服务服务器460与装置网关440通信以便将更新状态的请求传达到特定装置430a。例如,装置映像服务器460可以将更新装置430a的状态的一系列状态转变命令传达到装置网关440。作为响应,装置网关440可以传达针对特定装置格式化的适当命令。
装置安全服务器446维持用于连接到服务提供商环境410的装置430a至430c的安全相关信息。在一个示例中,装置安全服务器446可以被编程为处理向服务提供商环境410注册装置的请求。例如,诸如装置制造商的实体可以转发在服务提供商环境410内注册装置430a至430c的请求。装置安全服务器446接收注册请求并将唯一装置标识符分配到装置430a至430c,所述装置在后续请求上使用装置标识符来访问服务提供商环境410。针对每个注册的装置,装置安全服务器446存储可以在装置注册过程期间提供的认证信息。例如,注册装置430a的请求可以包括标识装置430a的信息(诸如装置序列号)和用于认证装置430a的信息。在一个示例中,信息可以包括数字证书并且可以包括公钥-私钥对中的公钥。信息可以与特定装置430a的分配的装置标识符相关地存储。当装置430a随后试图访问服务提供商环境410时,请求可以被路由到装置安全服务器446以用于评估。装置安全服务器446确定在请求中提供的认证信息是否与跟装置标识符相关地存储并在注册过程期间提供的认证信息一致。
装置安全服务器446可以进一步被编程为处理使特定实体(个体或组织)与特定装置430a至430c相关联的请求。装置安全服务器446可以适于接收注册如被授权控制特定装置430a或与之通信的实体的请求,所述实体可以是例如个体、用户、账户、和/或组织。在一个示例中,可以从可能已经从制造商购买装置430a的个体或组织接收请求。例如,装置可以是个体或组织从制造商购买的洗碗机、恒温器或照明组件。个体或组织可以发起向与组织相关联的个体或组织注册装置430a的请求。请求可以被路由到web服务服务器,所述web服务服务器可以在服务提供商环境410中或者将请求传达到服务提供商环境410。请求标识装置430a以及正在请求与装置430a相关联的特定实体(个体或组织)。在一个示例中,请求可以包括当装置430a向系统注册时分配的唯一装置标识符。请求还可以包括唯一地标识正在注册为有权限与特定装置430a通信和/或控制所述特定装置的实体的信息。
装置安全服务器446将标识特定实体的信息与装置标识符相关地存储。当特定实体随后试图控制或将数据传达到特定装置430a时,装置安全服务器446可以使用信息来确认特定实体被授权与特定装置430a通信或控制所述特定装置。当尚未注册为被授权与装置430a通信的实体试图与装置430a通信或控制所述装置时,装置安全服务器446可以使用存储在装置安全服务器446中的信息来拒绝请求。
网络服务服务器450可以是可以由服务器440、442、446、460、470或480中的任一者用来处理来自装置430a至430c的请求的任何资源或处理服务器。在一个示例中,网络服务服务器450可以提供数据存储和检索服务和/或按需处理能力。在示例情形中,网络服务服务器450可以是众多网络可访问服务中的任一者,包括例如web或基于云的服务。在一个示例中,网络服务服务器450可以被编程为向特定装置430a至430c和/或成组的装置430a至430c提供特定处理。例如,可以向网络服务服务器450提供协调控制特定制造操作的一组特定装置430a至430c的操作的软件。
服务器440、442、446、450、460、470和480可以经由任何合适的联网硬件和软件通信地耦合。例如,服务器可以在服务提供商环境410中经由局域网或广域网或虚拟化覆盖网络进行通信。
外部系统462可以出于任何数量的目的而访问服务提供商环境410。在一个示例中,外部系统462可以是适于转发向服务提供商环境410注册装置430a至430c的请求的系统。例如,外部系统462可以包括由将请求发送到服务提供商环境410并且特别是装置安全服务器446的装置制造商操作或用于所述装置制造商的服务器,以向服务提供商环境410注册用于操作的装置440。类似地,外部系统462可以是操作来向实体(个体或组织)提供网关以注册所有权或控制与特定装置440的关系的系统。
装置430a至430c可以是可以经由网络420与服务提供商环境410通信地耦合的任何装置。例如,装置430a至430c可以是计算装置,诸如智能电话和平板计算机、汽车、诸如洗碗机和烘干机的电器、工业传感器、开关、控制系统等。在一个示例中,装置430a至430c中的每一者可以通过网络420通信以存储反映特定装置430a的操作的数据和/或请求由例如网络服务服务器450提供的处理。虽然图4描绘三个装置430a至430c,但是将了解,任何数量的装置430a至430c可以经由网关服务器440访问服务提供商环境410。进一步将了解,装置430a至430c可以采用各种不同的通信协议。例如,一些装置430a至430c可以使用TCP传送数据,而其他装置可以使用UDP传达数据。一些装置430a至430c可以使用MQTT,而其他装置可以使用CoAP,并且另外其他装置可以使用HTTPs。还将了解,装置430a至430c中的每一者可以被编程为发送和接收不可与其他装置或甚至服务提供商环境410内的系统兼容的请求中的特定功能或命令。网关服务器440可以被编程为接收并且根据需要致力于转换用于与服务提供商环境410处理的此类请求。
服务提供商环境410可以包括数据部署服务470和发布-订阅中介480。例如,数据部署服务470可以具有图1的数据部署服务120的类似能力和特征,并且可以用来创建、调度、管理数据对象并将其递送到装置430a。发布-订阅中介480可以具有与图1的消息传递服务130类似的能力和特征。发布-订阅中介可以从数据部署服务470接收消息,并将消息转发到订阅了特定消息传递主题的装置430a至430c。
图5是展示可以用于在计算服务环境或服务提供商环境中执行软件服务的示例计算服务500的框图。具体地说,所描绘的服务提供商环境500展示了其中可以使用本说明书中所描述的技术的一个环境。计算服务500可以是包括可以例如用于托管计算实例504a至504d的各种虚拟化服务资源的一种类型的环境,在所述计算实例上可以执行计算服务。
计算服务500可以能够将计算、存储和联网能力作为软件服务递送到最终接收方的群体。在一个示例中,计算服务500可以被建立以用于由组织进行组织或代表组织。也就是说,计算服务500可以提供“私有云环境”。在另一示例中,计算服务500可以支持多租户环境,其中多个客户可独立地操作(即,公共云环境)。一般来说,计算服务500可以提供以下模型:基础架构即服务(“IaaS”)、平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可以提供其他模型。对于IaaS模型,计算服务500可以提供计算机作为物理机或虚拟机和其他资源。虚拟机可以由管理程序作为客机运行,如下文进一步描述。PaaS模型递送计算平台,所述计算平台可以包括操作系统、编程语言执行环境、数据库以及web服务器。
应用程序开发者可以在计算服务平台上开发并运行它们的软件解决方案而不会引发采购和管理底层硬件和软件的成本。SaaS模型允许应用程序软件在计算服务500中安装和操作。终端客户可以使用联网客户端装置(诸如运行例如web浏览器或其他轻量级客户端应用程序的台式计算机、膝上型计算机、平板电脑、智能电话等)访问计算服务500。说明性地,计算服务500可以被描述为“云”环境。
特别展示的计算服务500可以包括多个服务器计算机502a至502d。虽然示出了四个服务器计算机,但是可以使用任何数量,并且大型数据中心可以包括数千个服务器计算机。计算服务500可以提供计算资源以用于执行计算实例504a至504d。计算实例504a至504d可以例如是虚拟机。虚拟机可以是像物理机一样执行应用程序的机器(即,计算机)的软件实施方案的实例。在虚拟机的示例中,服务器计算机502a至502d中的每一者可以被配置成执行能够执行所述实例的实例管理器508a至508d。实例管理器508a至508d可以是管理程序、虚拟机监视器(VMM)或被配置成能够在单个服务器上执行多个计算实例504a至504d的另一类型的程序。另外,计算实例504a至504d中的每一者可以被配置成执行一个或多个应用程序。
在一个方面,计算服务500可以包括数据部署服务514和消息传递服务515,它们可以具有图1的数据部署服务120和消息传递服务130的相同特征和能力。例如,可以采用数据部署服务514以使用消息传递服务515来创建、调度、管理数据对象并将其递送到装置。可以预留一个或多个服务器计算机516以执行用于管理计算服务500和计算实例504a至504d的操作的软件部件。服务器计算机516可以执行管理部件518。客户可以访问管理部件518以配置由客户购买的计算实例504a至504d的操作的各个方面。例如,客户可以设置计算实例504a至504d并且对计算实例504a至504d的配置进行更改。
部署部件522可以用于协助客户部署计算实例504a至504d。部署组件522可以访问与计算实例504a至504d相关联的账户信息,诸如账户所有者的姓名、信用卡信息、所有者的国家等。部署部件522可以从客户接收配置,所述配置包括描述可以如何配置计算实例504a至504d的数据。例如,配置可以包括操作系统,提供要安装在计算实例504a至504d中的一个或多个应用程序,提供要执行用于配置计算实例504a至504d的脚本和/或其他类型的代码,提供指定可以如何准备应用程序高速缓存的高速缓存逻辑,以及其他类型的信息。部署部件522可以利用客户提供的配置和高速缓存逻辑来配置、初始化和启动计算实例504a至504d。配置、高速缓存逻辑和其他信息可以由访问管理部件件518的客户指定,或者通过将此信息直接提供到部署部件522来指定。
客户账户信息524可以包括与多租户环境的客户相关联的任何期望的信息。例如,客户账户信息可以包括客户的标识符、客户地址、账单信息、许可信息、用于启动实例的定制参数、调度信息等。如上所述,客户账户信息524还可以包括用于对API请求的异步响应进行加密的安全信息。“异步”是指可以在初始请求之后的任何时间并且利用不同的网络连接进行API响应。
网络510可以用来将计算服务500与服务器计算机502a至502d、516互连。网络510可以是局域网(LAN)并且可以连接到广域网(WAN)512或互联网,使得终端客户可以访问计算服务500。图5中所展示的网络拓扑结构已被简化;更多的网络和联网装置可以用来将本文中所公开的各种计算系统互连。
图6是从服务提供商环境的角度来看,根据本发明技术的示例的用于将数据对象递送到装置的示例方法600的端对端流程图。方法600的功能可以作为指令在机器上实施和执行,其中所述指令被包括在至少一个计算机可读介质或一个非暂时性机器可读存储介质上。方法600可以经由部署设置客户端602、对象数据存储库604、代码签名器服务606、数据部署管理器服务608、递送服务610、作业调度服务612、装置614和消息中介616执行,它们可以具有如本说明书先前所描述的特征和能力。
对图6中的这个流程图的讨论假定了许多前提操作。一个前提操作是接收数据对象的装置被提供有证书。另外,装置可以具有访问消息传递主题和调度主题的正确权限。在具有适当权限的情况下,假定装置在接收到订阅的通知之后就已经订阅了调度主题。
部署设置客户端602可以用于将数据对象618上传到对象数据存储库604。然后,部署设置客户端602可以使用代码签名器服务606任选地调用数据对象620的代码签名。例如,可以使用代码签名器服务606来创建数据对象的签名,以便装置接收数据对象来验证或认证数据对象。然后,部署设置客户端602可以将配置数据622上传到数据部署管理器服务608。例如,配置数据可以是来自用户的数据,以用于创建或管理数据对象到一个或多个装置(诸如装置614)的部署。配置数据可以指定部署名称、装置或目标装置的递送组、数据对象的地址或位置、签名以及用于签名验证的证书链。
然后,数据部署管理器服务608可以代表数据部署创建递送信道624,或者标识已经存在的消息传递主题以用于递送信道。递送信道也可以链接到数据对象。然后,数据部署管理器服务608可以代表数据部署创建作业调度626。作业调度服务612可以管理作业的调度,并且可以向装置614通知关于部署作业628。当装置614订阅与作业调度服务612相关联的调度主题时,作业调度服务612可以向装置614发送通知。另外,装置614可以接受或拒绝通知或数据对象的递送。
然后,装置614可以经由消息中介616来订阅递送信道630(例如,消息传递主题)。更确切地说,装置614可能已经接收到消息传递主题名称、签名和证书链以便进行订阅。装置614可以通过经由消息中介616订阅消息传递主题来订阅递送信道,并且消息传递主题可以与递送服务610相关联。递送信道可以是经由数据对象的消息传递主题发布的数据流。然后,消息中介616可以通过联系递送服务610来开始递送632。
然后,递送服务610可以从对象数据存储库604检索数据对象634,并将数据对象划分为块636。数据对象可以划分为可由装置614接收或消耗的块,所述装置可以是资源受限的。然后,递送服务610可以将块638发布到消息中介616,在所述消息中介中,所述块与数据对象相关联。然后,消息中介616可以将块640发送到装置614。在装置614接收到块之后,装置可以将它们组装成对象数据,并且然后使用先前接收的代码签名和证书链来验证签名的真实性和数据对象的完整性。证书链必须锚定到装置的信任存储库中的根证书,以便对签名进行认证。为了验证完整性,装置614可以重新计算所获得的数据对象的哈希(或如先前所描述的带签名的哈希),并将所计算的哈希与作业调度服务发送的哈希进行比较。如果两个检查均成功,则装置可以使用数据对象。
在附加的情形中,可以利用映射数据对象的块集中的每个块的映射图将块递送到装置614。装置614可以基于映射图而识别出一个或多个丢失的块。装置614可以从消息中介616请求丢失块642。然后,递送服务610可以经由消息中介616发送丢失块。然后,装置614可以组装块644以便将数据对象组装为完整的对象。此外,装置614可以更新关于用于数据对象部署到装置614的已完成或未完成作业的状态的作业状态646。
图7是根据本发明技术的示例的用于将数据对象递送到装置的示例方法700的流程图。功能700可以被实施为方法并且作为指令在机器上执行,其中所述指令被包括在至少一个计算机可读介质或一个非暂时性机器可读存储介质上。例如,从框710开始,可以接收数据递送指令以便将数据对象分布到装置。数据递送指令可以在递送服务处被接收,并且包括数据对象的存储位置、数据对象的部署调度、消息传递主题以及可由装置接收的数据块大小。可以将数据对象划分为与可由装置接收的数据块大小相对应的块,如在框720中。
可以识别装置经由发布/订阅消息传递服务订阅的消息传递主题,如在框730中。消息传递主题可以与具有多个消息传递主题的递送服务相关联。每个消息传递主题可以与不同的块大小和或块的数据格式相关联,但是多个消息传递主题可以用于同一数据对象。装置可以通过订阅对应的消息传递主题来指示块大小和/或格式。数据对象可以与签名相关联,并且签名可以作为数据对象的块集中的块进行发送。
可以在订阅消息传递主题之前使用消息传递主题和装置已经在使用的网络协议将块发送到装置,如在框740中。例如,网络协议可以是消息队列遥测传送(MQTT)或MQTT-SN。在递送服务处来自装置的丢失块消息指示装置未接收到丢失块,如在框750中。例如,块可以各自在映射图中标识出。映射图可以由装置用来识别和指示哪些块丢失。可以经由递送服务将丢失块重新发送到装置,如在框760中。
图8是根据本发明技术的示例的用于将数据对象递送到装置的示例方法800的流程图。功能800可以被实施为方法并且作为指令在虚拟机或硬件机器上执行,其中所述指令被包括在至少一个计算机可读介质或一个非暂时性机器可读存储介质上。例如,从框810开始,可以接收数据递送指令以便将数据对象分布到装置。数据递送指令可以在递送服务处被接收,并且包括数据对象的存储位置、消息传递主题以及可由装置接收的数据大小。可以从作业调度服务接收数据递送指令。作业调度服务可以调度数据对象的部署。数据递送指令可以基于在数据部署管理器服务处从部署设置客户端接收的递送配置数据,或者数据递送指令可以使用由客户或管理员创建的配置文件来设置。装置可以是微控制器单元(MCU)或物联网(IoT)装置。
可以将数据对象划分为与可由装置接收的数据大小相对应的块,如在框820中。可以使用代码签名器服务来将签名放置在数据对象的至少一个块中,以确定数据对象的真实性。可以标记具有签名数据的块,以便由装置识别。每个块可以任选地被加密。例如,可以通过在块发送之前对每个块进行加密的加密服务来完成加密。在一个替代方面,在将数据划分为块之前,可以由数据对象的提供者对整个数据对象进行加密。因此,加密可以在将数据对象划分为块之前或之后进行。在一个附加示例中,可以使用传送层安全(TLS)对使用TLS联网协议发送的数据对象的块进行加密。
可以识别装置经由消息传递服务订阅的消息传递主题,如在框830中。消息传递主题可以与具有多个消息传递主题的递送服务相关联。每个消息传递主题可以与不同的块大小和或块的数据格式相关联。同一数据对象还可以存在多个消息传递主题。装置可以指示装置可以通过订阅对应的主题来接收的块大小和/或格式。数据对象可以与签名相关联,并且签名可以与数据对象一起作为数据对象的块集中的块进行发送。
可以使用消息传递主题和装置上安装的网络协议将块发送到装置,如在框840中。出于本发明技术的目的,装置可能在递送数据对象或订阅主题之前已经在使用网络协议。网络协议可以是消息队列遥测传送(MQTT)或MQTT-SN。
可以从装置接收指示装置未接收到丢失块的丢失块消息。例如,块可以各自在映射图中标识出。映射图可以由装置用来识别和指示哪些块丢失。可以经由递送服务将丢失块重新递送到装置。
还可以采用本发明技术来将关于数据对象的部署状态的通知发送回到部署设置客户端。例如,装置可以将完成消息发送到递送服务或作业调度服务。然后,可以将完成消息传递回到数据部署管理器服务,以供部署设置客户端访问或接收。
图9是根据本发明技术的示例的用于在装置上执行的代理处接收数据对象的示例方法900的流程图。所述功能可以被实施为方法并且作为指令在虚拟机或硬件机器上执行,其中所述指令被包括在至少一个计算机可读介质或一个非暂时性机器可读存储介质上。例如,从框910开始,可以使用在装置处执行的代理来订阅调度主题,以便接收关于数据对象的递送的调度通知。装置可以是微控制器单元(MCU)或物联网(IoT)装置。
响应于接收到调度通知,可以订阅与可由装置接收的数据块大小相对应的消息传递主题,其中所述消息传递主题与递送服务相关联,如在框920中。这种订阅可以由装置上的代理执行。代理可以从与数据对象的部署相关联的多个消息传递主题中选择消息传递主题。所述多个消息传递主题中的每一者可以具有单独的块大小,并且消息主题可以由代理基于可由装置接收的数据块大小来选择。
在装置订阅消息传递主题之前,可以在装置正在使用的网络协议中通过消息传递主题将块作为消息接收,其中所述块形成数据对象,如在框930中。网络协议可以是消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)。
数据对象的真实性可以由代理来验证。所述块中的一者可以包括用于认证数据对象的签名的一部分,并且具有签名的所述部分的块可以具有由递送服务设定的表示签名数据的块类型。
可以将丢失块识别为从经由消息传递主题接收的块中丢失,如在框940中。例如,代理可以使用映射图来识别装置接收到的块集中丢失了一个或多个块。然后,装置可以向递送服务通知任何丢失块,并且可以使用映射图中描述的丢失块的标识符来识别任何丢失块。因此,可以从代理发送指示在装置处未接收到丢失块的丢失块消息,如在框950中。例如,装置可以使用消息传递主题、API调用或另一种消息传递方法来向递送服务通知关于丢失的块。代理可以通过消息传递主题接收丢失块,如在框960中。
图10是根据本发明技术的示例的用于在装置上执行的代理处接收数据对象的示例方法1000的流程图。所述功能可以被实施为方法并且作为指令在虚拟机或硬件机器上执行,其中所述指令被包括在至少一个计算机可读介质或一个非暂时性机器可读存储介质上。例如,从框1010开始,可以在装置上执行的代理处接收订阅主题的指令,并且所述主题可以与接收数据对象相关联。装置可以是微控制器单元(MCU)或物联网(IoT)装置。装置可以是被配置成响应于从本地装置接收的消息而执行代码功能的计算中心。
在一个方面,代理可以订阅与作业调度服务相关联的调度主题。代理可以接收关于数据对象的递送的调度通知。调度通知可以是订阅与接收数据对象相关联的主题的指令。
可以订阅消息传递主题,其中所述消息传递主题可以对应于可由装置接收的数据块大小,并且所述消息传递主题与数据对象的递送服务相关联,如在框1020中。代理可以从与数据对象的部署相关联的多个消息传递主题中选择消息传递主题。所述多个消息传递主题中的每一者可以具有单独的块大小,并且消息主题是基于可由装置接收的数据块大小选择的。
可以使用网络协议通过消息传递主题将块作为源自递送服务的消息接收,如在框1030中。在一个方面,装置在订阅消息传递主题之前可能就在使用用于通信的网络协议。网络协议可以是消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)。块也可以作为连续流被接收。
在一个方面,丢失块可以被代理识别为从经由消息传递主题接收的块中丢失。可以发送指示装置未接收到丢失块的丢失块消息。可以通过消息传递主题来接收丢失块。
数据对象的真实性可以由代理来验证。所述块中的一者可以包括用于认证数据对象的签名的一部分,并且具有签名的所述部分的块可以具有由递送服务设定的表示签名数据的块类型。可以将包括签名的一部分的块标记为签名块,以使得代理可将那个块放在一边以组装成签名。
可以将块组装成数据对象以供装置使用,如在框1040中。在一个方面,在装置是计算中心的情况下,计算中心接收到的数据对象可以是对计算中心托管的至少一个代码功能或另一种虚拟化计算功能或服务的更新。
来自数据块的图像可以经由代理在装置处使用或实施。例如,代理可以将图像用于安装软件、消耗数据、更新操作系统、更新固件、加载配置数据和/或执行功能。数据对象可以是应用程序、应用程序更新数据、固件、固件更新数据、操作系统更新数据、配置数据、消息或装置要执行的命令。还可以将关于装置处的数据对象的部署状态的通知从代理发送给数据递送管理服务。
图11是在其上可以执行这种技术的模块的计算装置1110。展示了可以在其上执行技术的高级示例的计算装置1110。计算装置1110可以包括与存储器装置1120通信的一个或多个处理器1112。计算装置可以包括用于计算装置中的部件的本地通信接口1118。例如,如可以根据需要,本地通信接口可以是本地数据总线和/或任何相关的地址或控制总线。
存储器装置1120可以包含可由处理器1112执行的模块1124以及用于模块1124的数据。模块1124可以执行先前所描述的功能。数据存储库1122还可以位于存储器装置1120中以用于存储与模块1124相关的数据以及其他应用程序,连同可由处理器1112执行的操作系统。
其他应用程序也可以存储在存储器装置1120中并且可以由处理器1112执行。本说明书中所讨论的部件或模块可以使用高级编程语言以软件形式实施,所述高级编程语言使用方法的混合来编译、解译或执行。
计算装置还可以访问可由计算装置使用的I/O(输入/输出)装置1114。I/O装置的示例是可用于显示来自计算装置的输出的显示屏。其他已知的I/O装置可以根据需要与计算装置一起使用。联网装置1116和类似的通信装置可以包括在计算装置中。联网装置1116可以是连接到互联网、LAN、WAN或其他计算网络的有线或无线联网装置。
示出为存储在存储器装置1120中的部件或模块可以由处理器1112执行。术语“可执行的”可以意味着呈可以由处理器1112执行的形式的程序文件。例如,以更高级语言的程序可以被编译为呈可以加载到存储器装置1120的随机存取部分中并且由处理器1112执行的格式的机器代码,或源代码可以由另一可执行程序加载和解译以便在存储器的随机存取部分中生成指令以供处理器执行。可执行程序可以存储在存储器装置1120的任何部分或部件中。例如,存储器装置1120可以是随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器、固态驱动器、存储卡、硬盘驱动器、光盘、软盘、磁带或任何其他存储器部件。
处理器1112可以表示多个处理器,并且存储器1120可以表示与处理电路并行操作的多个存储器单元。这可以提供用于系统中的过程和数据的并行处理信道。本地接口1118可以用作网络以便有助于多个处理器与多个存储器中的任一者之间的通信。本地接口1118可以使用被设计用于协调通信的附加系统,诸如负载平衡、批量数据传输和类似系统。
虽然针对这种技术呈现的流程图可以暗示具体执行次序,但是执行次序可以不同于所展示的执行次序。例如,两个更多框的次序可以相对于所示出的次序重新布置。此外,连续示出的两个或更多个框可以并行或部分并行地执行。在一些配置中,可以省略或跳过流程图中所示的一个或多个框。为了增强效用、记账、性能、测量、故障排除或出于类似原因等,可以将任何数量的计数器、状态变量、警告信号标或消息添加到逻辑流程中。
本说明书中所描述的功能单元中的一些已标记为模块以便更具体地强调其实施独立。例如,模块可以实施为硬件电路(包括定制VLSI电路或门阵列)、成品半导体(诸如逻辑芯片、晶体管)或其他离散部件。模块还可以在可编程硬件装置(诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑装置等)中实施。
模块还可以在软件中实施以用于由各种类型的处理器执行。已标识的可执行代码模块可以例如包括可以被组织为对象、进程或功能的计算机指令的一个或多个块。然而,已标识模块的可执行部分无需物理地定位在一起,但是可以包括存储在不同位置的不同指令,这些不同指令在逻辑地结合在一起时包括所述模块并且实现所述模块的指定目的。
实际上,可执行代码模块可以是单个指令或许多指令,并且甚至可以分布在若干不同代码段上、不同程序之间以及若干存储器装置上。类似地,在本文中,操作数据可以标识并展示在模块内,并且可以任何合适形式来体现并被组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或者可以分布在不同位置上,包括分布在不同存储装置上。模块可以是被动的或主动的,包括可操作来执行期望功能的代理。
这里所描述的技术还可以存储在计算机可读存储介质上,所述计算机可读存储介质包括与用于存储信息(诸如,计算机可读指令、数据结构、程序模块或其他数据)的任何技术一起实施的易失性和非易失性、可移除和不可移除介质。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存存储器或其他存储器技术、CD-ROM、数字通用光盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储装置,或者可以用于存储期望信息和所描述技术的任何其他计算机存储介质。
本文中所描述的装置还可以包含通信连接或联网设备以及允许装置与其他装置通信的联网连接。通信连接是通信介质的示例。通信介质典型地体现为已调制数据信号(诸如载波或其他传送机制)中的计算机可读指令、数据结构、程序模块以及其他数据,并且包括任何信息递送介质。“已调制数据信号”是指其一个或多个特征以对信号中的信息进行编码的方式来设置或改变的信号。举例来说而并非限制,通信介质包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、射频、红外线以及其他无线介质)。如本文中所使用的术语计算机可读介质包括通信介质。
对附图中所展示的示例进行参考并且具体语言在本文中用于描述所述示例。然而,将理解,并不意图由此限制本发明技术的范围。相关领域的技术人员将想到并且拥有本公开的本文中所展示的特征的改变和进一步修改以及本文中所展示的示例的附加应用将被认为在本说明书的范围内。
可以鉴于以下条款更好地理解上述内容:
1.一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质具有体现在其上的指令,所述指令在被执行时致使处理器执行处理,所述处理包括:
接收数据递送指令以便将数据对象分布到装置,其中所述数据递送指令包括所述数据对象的存储位置、所述数据对象的部署调度以及可由所述装置接收的数据块大小;
将所述数据对象划分为与可由所述装置接收的所述数据块大小相对应的块;
识别所述装置经由发布/订阅消息传递服务订阅的消息传递主题;
在所述装置订阅所述消息传递主题之前,使用所述消息传递主题和所述装置已经在使用的网络协议将所述块发送到所述装置;
从所述装置接收指示所述装置未接收到丢失块的丢失块消息;以及
经由递送服务将所述丢失块重新发送到所述装置。
2.根据条款1所述的非暂时性机器可读存储介质,其中所述网络协议是消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)。
3.根据条款1所述的非暂时性机器可读存储介质,其中所述递送服务具有与所述数据对象的部署相关联的多个消息传递主题,其中所述多个消息传递主题中的每一者具有单独的块大小,并且所述装置被配置成订阅所述多个消息传递主题中的具有与所述装置的通信能力兼容的块大小的一者。
4.根据条款1所述的非暂时性机器可读存储介质,其中所述块中的一者包括用于认证所述数据对象的签名的一部分,并且具有所述签名的所述部分的所述块具有由所述递送服务设定的表示签名数据的块类型。
5.一种在至少一个处理器的控制下的方法,其包括:
接收数据递送指令以便将数据对象分布到装置,其中所述数据递送指令包括所述数据对象的存储位置和可由所述装置接收的数据大小;
将所述数据对象划分为与可由所述装置接收的所述数据大小相对应的块;
识别所述装置经由消息传递服务订阅的消息传递主题;以及
使用所述消息传递主题将所述块发送到所述装置。
6.根据条款5所述的方法,其中用于发送所述块的网络协议是消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)。
7.根据条款5所述的方法,其中在所述装置订阅所述消息传递主题之前,所述装置已经在使用网络协议。
8.根据条款5所述的方法,其还包括:
将签名放置在所述数据对象的所述块中的至少一者中,并且所述签名可用于确定所述数据对象的真实性。
9.根据条款5所述的方法,其还包括:
将所述块中的一者的块类型设定为签名块,其中所述块包括用于认证所述数据对象的签名的一部分。
10.根据条款5所述的方法,其中多个消息传递主题与所述数据对象的部署相关联,并且所述多个消息传递主题中的每一者对应于单独的块大小,并且所述装置订阅所述多个消息传递主题中的对应于与所述装置的存储器缓冲能力兼容的块大小的一者。
11.根据条款5所述的方法,其还包括:
从所述装置接收指示所述装置未接收到丢失块的丢失块消息;以及
将所述丢失块重新发送到所述装置。
12.根据条款5所述的方法,其还包括:
以一种格式将所述块格式化,并且所述格式是JavaScript对象标记(JSON)格式或二进制格式。
13.根据条款5所述的方法,其还包括向所述装置发送关于订阅哪个消息传递主题的通知。
14.根据条款5所述的方法,其还包括:
在发送所述块之前对所述块中的每一者进行加密。
15.根据条款5所述的方法,其中所述装置经由与所述装置相关联的递送代理来接收所述块。
16.根据条款5所述的方法,其中所述数据递送指令是基于提交给数据递送管理服务的递送配置数据,并且所述递送服务从所述数据递送管理服务接收所述递送配置数据。
17.根据条款16所述的方法,其还包括:
接收对所述数据递送管理服务的关于所述装置处的所述部署的状态的通知,其中所述通知是从所述装置接收的。
18.根据条款5所述的方法,其中从作业调度服务接收所述数据递送调度指令,以用于调度将所述块发送到所述装置。
19.一种系统,其包括:
数据部署管理器;
至少一个处理器;以及
存储器装置,所述存储器装置包括指令,所述指令将由所述至少一个处理器执行以便:
接收被配置成用于将数据对象部署到装置的递送配置数据,其中所述递送配置数据指示所述数据对象的存储位置以及所述数据对象的部署的调度;
请求经由作业调度服务调度将所述数据对象递送到所述装置,其中所述装置订阅调度主题,所述调度主题向所述装置提供关于所述数据对象的所述递送的通知;
将所述递送配置数据发送到递送服务;
将所述数据对象划分为可由订阅消息传递服务的消息传递主题的所述装置使用的大小的块,通过所述消息传递主题,所述递送服务能够使用所述装置正在使用的网络协议将所述块递送到所述装置;以及
经由所述作业调度服务接收所述数据对象到所述装置的递送状态的报告。
20.根据条款19所述的系统,其中所述递送服务被配置成使用与所述数据对象的递送相关联的多个消息传递主题来发送所述块,其中所述多个消息传递主题中的每一者对应于单独的块大小,并且所述装置订阅所述多个消息传递主题中的对应于可由所述装置接收的块大小的一者。
21.一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质具有体现在其上的指令,所述指令在被执行时致使处理器执行处理,所述处理包括:
使用在装置处执行的代理来订阅调度主题,以便接收关于数据对象的递送的调度通知;
响应于接收到调度通知,订阅与可由所述装置接收的数据块大小相对应的消息传递主题,其中所述消息传递主题与递送服务相关联;
在所述装置订阅所述消息传递主题之前,在所述装置正在使用的网络协议中通过所述消息传递主题接收作为消息的块,其中所述块形成所述数据对象;
识别从经由所述消息传递主题接收的所述块中丢失的丢失块;
发送指示在所述装置处未接收到所述丢失块的丢失块消息;以及
通过所述消息传递主题来接收所述丢失块。
22.根据条款21所述的非暂时性机器可读存储介质,其中所述代理从与所述数据对象的部署相关联的多个消息传递主题中选择所述消息传递主题,其中所述多个消息传递主题中的每一者具有单独的块大小,并且基于可由所述装置接收的所述数据块大小选择所述消息主题。
23.根据条款21所述的非暂时性机器可读存储介质,其中所述网络协议是消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)。
24.根据条款21所述的非暂时性机器可读存储介质,所述指令还包括:
基于包括用于认证所述数据对象的签名的一部分的所述块中的至少一者而验证所述数据对象的真实性,并且具有所述签名的所述部分的所述块具有由所述递送服务设定的表示签名数据的块类型。
25.一种在至少一个处理器的控制下的方法,其包括:
在装置处执行的代理处接收指令以订阅与接收数据对象相关联的主题;
订阅与可由所述装置接收的数据块大小相对应的消息传递主题,并且所述消息传递主题与所述数据对象的递送服务相关联;
使用网络协议通过所述消息传递主题接收作为源自所述递送服务的消息接收的块;以及
将所述块组装成所述数据对象以供所述装置使用。
26.根据条款25所述的方法,其中所述代理从与所述数据对象的部署相关联的多个消息传递主题中选择所述消息传递主题,其中所述多个消息传递主题中的每一者具有单独的块大小,并且基于可由所述装置接收的所述数据块大小选择所述消息主题。
27.根据条款25所述的方法,其还包括:
识别经由所述消息传递主题接收的所述块中的丢失块;
发送指示所述装置未接收到所述丢失块的丢失块消息;以及
通过所述消息传递主题来接收所述丢失块。
28.根据条款25所述的方法,其中所述装置是被配置成响应于从本地装置接收的消息而执行代码功能的计算中心。
29.根据条款28所述的方法,其中所述计算中心接收到的所述数据对象是对至少一种代码功能的更新。
30.根据条款25所述的方法,其还包括:
订阅与作业调度服务相关联的调度主题,以便接收关于所述数据对象的递送的调度通知。
31.根据条款25所述的方法,其中所述网络协议是消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)。
32.根据条款25所述的方法,其还包括:
基于包括用于认证所述数据对象的签名的一部分的所述块中的至少一者而验证所述数据对象的真实性,并且具有所述签名的所述部分的所述块具有由所述递送服务设定的表示签名数据的块类型。
33.根据条款32所述的方法,其中包括所述签名的所述部分的所述块中的所述至少一者被标记以使得所述代理能够认识到所述块中的所述至少一者是签名块。
34.根据条款25所述的方法,其还包括:
经由所述代理在所述装置处使用来自所述数据对象的图像,其中所述使用是以下至少一项的动作:安装软件、消耗数据、更新操作系统、更新固件、加载配置数据或执行功能。
35.根据条款25所述的方法,其还包括:
将关于所述装置处的所述数据对象的部署状态的通知发送给数据递送管理服务。
36.根据条款25所述的方法,其中使用所述网络协议通过流来接收所述块。
37.根据条款25所述的方法,其中所述数据对象是以下至少一项:应用程序、应用程序更新数据、固件、固件更新数据、操作系统更新数据、配置数据、消息或所述装置要执行的命令。
38.一种具有有限能力的装置,其包括:
至少一个处理器;
与所述至少一个处理器相关联的存储器装置;以及
存储在所述存储器装置上的代理,所述代理包括指令,所述指令将由所述至少一个处理器执行以便:
在所述装置上执行的所述代理处接收指令以订阅与数据对象相关联的主题;
响应于接收到通知,订阅与递送服务相关联的消息传递主题;
接收与可由所述装置接收的数据块大小相对应的块,并且在所述装置订阅所述消息传递主题之前,在所述装置正在使用的网络协议中通过所述消息传递主题将所述块作为消息接收,其中所述块形成所述数据对象;以及
将所述块组装到所述数据对象中,所述数据对象是供所述装置使用的图像。
39.根据条款38所述的装置,其中所述代理从与所述数据对象的部署相关联的多个消息传递主题中选择所述消息传递主题,其中所述多个消息传递主题中的每一者具有单独的块大小,并且基于可由所述装置接收的所述数据块大小选择所述消息主题。
40.根据条款38所述的装置,所述指令还包括:
识别从经由所述消息传递主题接收的所述块中丢失的丢失块;
发送指示所述装置未接收到所述丢失块的丢失块消息;以及
通过所述消息传递主题接收所述丢失块。
此外,在一个或多个示例中,所描述的特征、结构或特性可以任何合适的方式进行组合。在先前的描述中,提供了众多具体细节,诸如各种配置的示例,以提供对所描述的技术的示例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有所述具体细节中的一者或多者的情况下或者利用其他方法、部件、装置等来实践技术。在其他情况下,未详细示出或描述众所周知的结构或操作,以避免模糊技术的各方面。
尽管已经用专用于结构特征和/或操作的语言对主题进行了描述,但是应当理解,所附权利要求书中定义的主题不必限于上文所描述的具体特征和操作。相反,上文所描述的具体特征和动作是作为实施所附权利要求书的示例形式而公开。在不脱离所描述的技术的精神和范围的情况下,可以设计出众多修改和替代布置。

Claims (15)

1.一种在至少一个处理器的控制下的方法,其包括:
接收数据递送指令以便将数据对象分布到装置,其中所述数据递送指令包括所述数据对象的存储位置和能由所述装置接收的数据大小,其中能由所述装置接收的所述数据大小受到所述装置的通信存储器缓冲区大小的限制;
将所述数据对象划分为与能由所述装置接收的所述数据大小相对应的多个块;
识别所述装置经由消息传递服务订阅的消息传递主题;以及
使用所述消息传递主题将所述块发送到所述装置。
2.根据权利要求1所述的方法,其中用于发送所述块的网络协议是消息队列遥测传送(MQTT)或用于传感器网络的MQTT(MQTT-SN)。
3.根据权利要求1所述的方法,其中在所述装置订阅所述消息传递主题之前,所述装置已经在使用网络协议。
4.根据权利要求1所述的方法,其还包括:
将签名放置在所述数据对象的所述块中的至少一者中,并且所述签名能用于确定所述数据对象的真实性。
5.根据权利要求1所述的方法,其中多个消息传递主题与所述数据对象的部署相关联,并且所述多个消息传递主题中的每一者对应于单独的块大小,并且所述装置订阅所述多个消息传递主题中对应于与所述装置的所述通信存储器缓冲区大小兼容的块大小的一者。
6.根据权利要求1所述的方法,其还包括向所述装置发送关于订阅哪个消息传递主题的通知。
7.一种在至少一个处理器的控制下的方法,其包括:
在装置处执行的代理处接收指令以订阅与接收数据对象相关联的主题;
订阅与能由所述装置接收的数据块大小相对应的消息传递主题,并且所述消息传递主题与所述数据对象的递送服务相关联,其中能由所述装置接收的所述数据块大小受到所述装置的通信存储器缓冲区大小的限制;
使用网络协议通过所述消息传递主题接收作为源自所述递送服务的消息的多个块;以及
将所述块组装成所述数据对象以供所述装置使用。
8.根据权利要求7所述的方法,其中所述代理从与所述数据对象的部署相关联的多个消息传递主题中选择所述消息传递主题,其中所述多个消息传递主题中的每一者具有单独的块大小,并且基于能由所述装置接收的所述数据块大小选择所述消息主题。
9.根据权利要求7所述的方法,其还包括:
识别经由所述消息传递主题接收的所述块中的丢失块;
发送指示所述装置未接收到所述丢失块的丢失块消息;以及
通过所述消息传递主题来接收所述丢失块。
10.根据权利要求7所述的方法,其中所述装置是被配置成响应于从本地装置接收的消息而执行代码功能的计算中心。
11.根据权利要求7所述的方法,其还包括:
订阅与作业调度服务相关联的调度主题,以便接收关于所述数据对象的递送的调度通知。
12.根据权利要求7所述的方法,其还包括:
基于包括用于认证所述数据对象的签名的一部分的所述块中的至少一者验证所述数据对象的真实性,并且具有所述签名的所述部分的所述块具有由所述递送服务设定的表示签名数据的块类型。
13.根据权利要求7所述的方法,其还包括:
经由所述代理在所述装置处使用来自所述数据对象的图像,其中所述使用是以下至少一项的动作:安装软件、消耗数据、更新操作系统、更新固件、加载配置数据或执行功能。
14.一种系统,其包括:
数据部署管理器:
至少一个处理器;以及
存储器装置,所述存储器装置包括指令,所述指令将由所述至少一个处理器执行以便:
接收被配置成用于将数据对象部署到装置的递送配置数据,其中所述递送配置数据指示所述数据对象的存储位置以及所述数据对象的部署的调度;
请求经由作业调度服务调度将所述数据对象递送到所述装置,其中所述装置订阅调度主题,所述调度主题向所述装置提供关于所述数据对象的所述递送的通知;
将所述递送配置数据发送到递送服务;
将所述数据对象划分为能由订阅消息传递服务的消息传递主题的所述装置使用的大小的多个块,通过所述消息传递主题,所述递送服务能够使用所述装置正在使用的网络协议将所述块递送到所述装置,其中能由所述装置使用的所述大小受到所述装置的通信存储器缓冲区大小的限制;以及
经由所述作业调度服务接收所述数据对象到所述装置的递送状态的报告。
15.根据权利要求14所述的系统,其中所述递送服务被配置成使用与所述数据对象的递送相关联的多个消息传递主题来发送所述块,其中所述多个消息传递主题中的每一者对应于单独的块大小,并且所述装置订阅所述多个消息传递主题中的对应于能由所述装置接收的块大小的一者。
CN201880035817.9A 2017-09-26 2018-09-26 在装置处接收数据对象 Active CN110720092B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/716,373 US11088981B2 (en) 2017-09-26 2017-09-26 Receiving a data object at a device
US15/716,365 US10635687B2 (en) 2017-09-26 2017-09-26 Delivering a data object to a device
US15/716,365 2017-09-26
US15/716,373 2017-09-26
PCT/US2018/052992 WO2019067644A1 (en) 2017-09-26 2018-09-26 RECEIVING A DATA OBJECT AT A DEVICE LEVEL

Publications (2)

Publication Number Publication Date
CN110720092A CN110720092A (zh) 2020-01-21
CN110720092B true CN110720092B (zh) 2023-11-03

Family

ID=63915114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880035817.9A Active CN110720092B (zh) 2017-09-26 2018-09-26 在装置处接收数据对象

Country Status (3)

Country Link
EP (1) EP3688588B1 (zh)
CN (1) CN110720092B (zh)
WO (1) WO2019067644A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114144763A (zh) * 2019-05-29 2022-03-04 美国莱迪思半导体公司 用于可编程逻辑器件的远程编程系统和方法
CN111416867B (zh) * 2020-03-25 2024-07-19 上海商米科技集团股份有限公司 不同设备间的消息处理方法、服务器和计算机存储介质
EP4064638B1 (en) * 2021-03-23 2024-06-19 ABB Schweiz AG Highly available delivery of ordered streams of iot messages

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1267864A (zh) * 1999-03-19 2000-09-27 国际商业机器公司 提供出版/预订服务的消息代理和在出版/预订环境中处理消息的方法
GB2350758A (en) * 1999-06-04 2000-12-06 Ibm Message broker providing a publish/subscribe sevice and method of processing messages in a publish/subscribe environment
CN101558621A (zh) * 2006-12-12 2009-10-14 交互数字技术公司 用于经由高速下行链路分组接入来发射和接收分组的方法及设备
CN106797391A (zh) * 2014-07-21 2017-05-31 康维达无线有限责任公司 使用mqtt协议的服务层交互工作

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372739B2 (en) * 2011-04-20 2016-06-21 International Business Machines Corporation Monitoring of subscriber message processing in a publish/subscribe messaging environment
US20160294614A1 (en) * 2014-07-07 2016-10-06 Symphony Teleca Corporation Remote Embedded Device Update Platform Apparatuses, Methods and Systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1267864A (zh) * 1999-03-19 2000-09-27 国际商业机器公司 提供出版/预订服务的消息代理和在出版/预订环境中处理消息的方法
GB2350758A (en) * 1999-06-04 2000-12-06 Ibm Message broker providing a publish/subscribe sevice and method of processing messages in a publish/subscribe environment
CN101558621A (zh) * 2006-12-12 2009-10-14 交互数字技术公司 用于经由高速下行链路分组接入来发射和接收分组的方法及设备
CN106797391A (zh) * 2014-07-21 2017-05-31 康维达无线有限责任公司 使用mqtt协议的服务层交互工作

Also Published As

Publication number Publication date
CN110720092A (zh) 2020-01-21
EP3688588B1 (en) 2022-06-22
EP3688588A1 (en) 2020-08-05
WO2019067644A1 (en) 2019-04-04

Similar Documents

Publication Publication Date Title
US11765123B1 (en) Receiving a data object at a device
US10635687B2 (en) Delivering a data object to a device
KR102618665B1 (ko) 블록체인을 사용한 버전 이력 관리
US8964990B1 (en) Automating key rotation in a distributed system
US11128470B2 (en) Methods and systems for automatic blockchain deployment based on cloud platform
GB2601049A (en) Blockchain implemented data migration audit trail
US20180109529A1 (en) Peer to peer enterprise file sharing
US20180302400A1 (en) Authenticating access to an instance
US10630662B1 (en) Key rotation with external workflows
US11190516B1 (en) Device communication with computing regions
CN110720092B (zh) 在装置处接收数据对象
CN112673350B (zh) 用于在具有非受信实体的分布式计算系统中实现动作的协调执行的方法和装置
US10382268B1 (en) Configuration file distribution using a passive receiving device
US9584508B2 (en) Peer to peer enterprise file sharing
US10348702B1 (en) Command parameter resolution for command invocations
CN108289074A (zh) 用户账号登录方法及装置
US11709801B2 (en) File-based sharing using content distributions network
JP7488184B2 (ja) 衛星装置を遠隔的に更新するための方法及び装置
US12075107B1 (en) Systems and methods for secure updates
US10708129B1 (en) Changing hardware capabilities of a device
Toolchain et al. D7. 3-INITIAL BULK DEPLOYMENT TOOL
Kiss et al. D7. 4-FINAL BULK DEPLOYMENT TOOL
Racasan Development of a Secure and Scalable IoT Platform for Private Clouds

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