使用 亚马逊云科技 IoT Greengrass 流管理器创建可扩展架构

作者:尼尔·梅塔 | 202

设计一个可扩展、全球性、实时、分布式的系统来处理来自各种关键设备的数百万条消息可能会使架构复杂化。从边缘收集大型数据流或图像识别也需要可扩展的解决方案。

亚马逊云科技 IoT Core 旨在处理大量每秒发送几条消息的物联网 (IoT) 设备。但是,当物联网设备每秒发送大量消息并在边缘进行处理时,管理大型数据流就具有挑战性。此外,在边缘缓冲或处理的数据可能会增加延迟。

这篇文章介绍如何 使用 亚马逊云科技 IoT Greengrass 流管理器创建可扩展的 IoT 架构,该架构每秒可以处理来自各种 IoT 设备的数千条关键消息。

中继来自高吞吐量 IoT 设备的关键消息

让我们来探讨一个例子。以图 1 中的架构为例,其中有两种类型的 IoT 设备向 亚马逊云科技 IoT Core 发送消息。一组物联网设备每秒发送数千条消息,而另一组设备每秒发送数十条消息。

每秒发送数千条消息的物联网设备包含不可丢失且必须在边缘处理的关键数据。每秒发送数十条消息的物联网设备不那么重要。

IoT devices sending messages to AWS IoT Core

图 1。物联网设备向 亚马逊云科技 IoT Core 发送消息

在考虑这种架构时,每秒发送数千条消息的关键物联网设备采用以下路径:

  1. 物联网设备将数据发送到 亚马逊云科技 IoT Greengrass 组件进行处理,服务质量 (QoS) 为 0。
  2. 亚马逊云科技 IoT Greengrass 组件处理数据并将其发送到 亚马逊云科技 IoT Gre engrass 消息代理。
  3. 亚马逊云科技 IoT Greengrass 消息代理将数据中继到 亚马逊云科技 IoT Core,服务质量为 1。
  4. 亚马逊云科技 IoT Core 将数据发送到 亚马逊 Kinesis Data Streams 进行进一步处理。

相比之下,每秒发送几条消息的物联网设备采用以下路径:

  1. 物联网设备向 亚马逊云科技 IoT Greengrass 消息代理发送数据。
  2. 亚马逊云科技 IoT Greengrass 消息代理将数据中继到 亚马逊云科技 IoT Core。
  3. 亚马逊云科技 IoT Core 将数据发送到 Kinesis 数据流进行进一步处理。

由于所发送消息的关键性质,亚马逊云科技 IoT Greengrass 消息代理被配置为向服务质量为 1 的 亚马逊云科技 IoT Core 发送消息。但是,当您将 QoS 配置为 1 时,亚马逊云科技 IoT Greengrass 消息代理必须等待确认 (ACK) 才能发送更多数据。

随着您添加更多 IoT 设备,许多设备会选择在将消息发送到 亚马逊云科技 IoT Core 之前对其进行批处理。当您处理许多每秒发送少量消息的物联网设备时,这可能是一个不错的策略。但是,当您添加每秒发送数千条消息的 IoT 设备时,等待 ACK 的时间可能会增加延迟,并在下游报告数据时造成不一致。

这是因为当 QoS 设置为 1 时,亚马逊云科技 IoT Greengrass 消息代理能够在等待 ACK 之前向 亚马逊云科技 IoT Core 发送 100 条消息。因此,扩展该架构以处理更多物联网设备可能会变得具有挑战性。

有关 亚马逊云科技 IoT Greengrass 消息代理限制的更多信息,请参阅 亚马逊云科技 通用参考指南的 A WS IoT Core 消息代理和协议限制 和配 部分。

亚马逊云科技 IoT Greengrass 流管理器可提高速度和可靠性

要扩展此类架构,您可以使用名为 亚马逊云科技 IoT Greengrass 流管理器的预建的 亚马逊云科技 IoT Greengrass 组件,绕过 Greengrass 消息代理和 亚马逊云科技 IoT Core 将数据直接发送到 亚马逊云科技 IoT Analytic s、Aws IoT S ite W ise 、Amazon Kinesis 或亚马逊简单存储服务 (Amazon S3))。

例如,以先前的场景为例,其中一组 IoT 设备每秒发送数千条关键消息,而另一组发送不太重要的数据。

相反,您可以使用 亚马逊云科技 IoT Greengrass 流管理器来创建架构,该架构可以轻松可靠地将大量数据从边缘直接发送到 Kinesis,如图 2 所示。

AWS IoT Greengrass stream manager sending data directly to Kinesis

图 2。亚马逊云科技 IoT Greengrass 流管理器将数据直接发送到 Kinesis

与图 1 的配置相反,每秒发送数千条消息的关键 IoT 设备现在可以采用以下路径:

  1. 关键物联网设备将数据发送到 亚马逊云科技 IoT Greengrass 组件进行处理。
  2. 亚马逊云科技 IoT Greengrass 组件处理数据并将其发送到 亚马逊云科技 IoT Core 流管理器。
  3. 亚马逊云科技 IoT Greengrass 流管理器直接发送数据 Amazon Kinesis Data Streams。

请注意,每秒发送几条消息的 IoT 设备也可以按较低的优先级发送到 亚马逊云科技 IoT Greengrass 流管理器。您仍在使用 亚马逊云科技 IoT Core,但它不再是主要数据路径。通过继续使用 亚马逊云科技 IoT Core,您可以从其控制平面功能中受益,例如管理更新、证书和策略。但是,亚马逊云科技 IoT Core 的数据平面功能(例如 规则引擎 )已不再用于该架构,这有助于降低成本。如果您选择绕过 亚马逊云科技 IoT Greengrass 消息代理并使用 亚马逊云科技 IoT Core 流管理器,则必须移动您构建的所有组件,以便在边缘进行处理。

在图 2 中的架构中,亚马逊云科技 IoT Greengrass 流管理器被用来绕过远离 亚马逊云科技 IoT Greengrass 消息代理和 亚马逊云科技 IoT Core 的主数据路径。绕过这些服务可以减少图 1 中由 亚马逊云科技 IoT Greengrass 消息代理等待来自 亚马逊云科技 IoT Core 的确认而导致的延迟。

亚马逊云科技 IoT Greengrass 流管理器每秒可以处理数千条消息,因此您可以:

  • 可靠地扩展您的架构
  • 创建多条数据路径,将关键和非关键数据发送到 亚马逊云科技 IoT Core 流管理器,同时仍可利用 亚马逊云科技 IoT Core 控制平面功能
  • 优先考虑您的关键数据路径,让特定的 IoT 设备获得更高的优先级
  • 创建配置以处理您的物联网设备连接有限或间歇性的情况。(例如,您可以创建配置,以便在互联网连接中断时使用本地存储或内存来缓存数据,然后在收到来自目标的 ACK 时刷新数据。)

所有这些功能都可以帮助您减少延迟、成本、数据不一致以及关键数据的潜在丢失。它们还提供了一种机制,可以扩展您的架构可以可靠处理的设备数量。

使用 亚马逊云科技 IoT Greengrass C ore 软件开发工具包 或 亚马逊云科技 IoT 控制台开始使用直播管理器。

结论

在这篇博客文章中,我们讨论了如何创建可扩展的物联网架构,该架构每秒可以处理来自各种物联网设备的数千条关键消息。将 亚马逊云科技 IoT Greengrass 流管理器集成到您的架构中可以提供一种绕过 亚马逊云科技 IoT Core 并高效、可靠地发送大量数据的方法,从而帮助减少延迟、数据不一致和关键数据的潜在丢失。

Neil Mehta

Neil Mehta

Neil Mehta 是中小型企业格林菲尔德团队的 亚马逊云科技 解决方案架构师。他热衷于帮助客户构建针对其特定需求量身定制的可扩展解决方案。在业余时间,尼尔喜欢与家人共度时光,为当地的华盛顿特区运动队加油。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。