0

我有 2 个 greengrass 核心,一个在 AWS EC2 实例上运行,另一个在 Raspberry Pi 上运行。

在我的项目中,我将视频帧从本地机器发送到我的 RaspberryPi,然后我处理这些帧,找到帧中带有 QR 码的标记,并将标记的坐标发送到 Greengrass。然后我从我的笔记本电脑上读取这些坐标。

在第一种情况下,我的 greengrass 运行在一个 EC2 实例上(之前有它),为了提高性能,我决定在我的 Raspberry Pi 上运行另一个 greengrass 核心并改用它。我的想法是,我将基本上从这个过程中删除 EC2 实例和云组件,而不是使用三角形笔记本电脑->RBPi->EC2->笔记本电脑,从而提高我的性能。

问题是我没有看到太多/任何性能差异。

在这两种情况下,如果我想连接到我的 greengrass 核心实例,我使用 AWS 端点作为我的“联系”点,唯一的区别是在核心的连接设置中,我在一个场景中使用我的 Raspberry Pi 的 IP 地址和 IP另一个中 EC2 实例的地址。我这样做是错的,还有其他方法吗?

这种沟通在实践中如何运作?我的消息是否会发送到云中某处的 AWS 端点,然后发送到我的 greengrass 核心设备(Raspberry Pi 或 EC2)?

4

1 回答 1

0

Greengrass 是一种物联网服务,由于其目的,它使用快速、轻量级的 MQTT 协议进行通信。它的通信模型基于“发布-订阅”模型,中间有MQTT代理。

您说得对,消息发送到 AWS 端点——这将是 AWS IoT Core MQTT 代理。当物联网设备(即 RPI 或 EC2)运行 Greengrass 或实际上任何其他物联网 MQTT 客户端软件时,当它“发送”一条消息时 - 它会将其发布到特定主题的代理。另一方面,还有另一个物联网设备,它又通过同一个代理订阅了该主题。

代理就像一个集线器,设备在其中发布消息并使用主题订阅接收这些消息,因此可以进行通信。

IoT 设备需要该代理进行通信,因此在 EC2 或 RPI 上运行 Greengrass 并不重要,因为两者都必须发布才能订阅 AWS IoT 代理上的主题。

于 2021-11-25T20:33:46.833 回答