微服务和 AWS-IoT

Micro-services and AWS-IoT

我计划在现场为我的设备使用 AWS IoT 以连接到我在云中的微服务。 这里的想法是,设备将发布到微服务将订阅的主题。微服务将发布到设备订阅的主题。

因此,例如,有 2 个设备 d1 和 d2。以及 2 个微服务 ms1 和 ms2。 d1 将订阅 devices/d1 个主题 d2 将订阅 devices/d2 个主题 和, ms1 将订阅 services/ms1 个主题 ms2 将订阅 services/ms2 个主题

当d1要给ms1发信息时,d1会发布到services/ms1话题,发信息给ms2,d1会发到services/ms2话题等。 同样,当 ms1 要向 d1 发送信息时,ms1 将发布到 devices/d1 主题等 我附上了一张图片,说明我是如何想象它的。

我担心的是,一个微服务可以同时拥有多个实例运行。所以 ms1 的所有实例都将订阅 services/ms1 主题。当设备发布有关该主题的消息时,我们如何确保只有一个实例而不是多个实例来处理该消息? 我知道处理这个问题的方法之一是使用 Lambda,消息被传递到 lambda,Lambda 可以在微服务上调用 REST API。但是,Lambda 可能对我想要达到的规模有限制(每小时 100,000 台设备,每台设备发送 1000 条消息)。

所以,想看看有没有更好的方法。

我建议花时间熟悉 AWS IoT 中的 all the actions available。您提到使用 Lambda 作为中介服务,但正确地指出那里可能存在问题。两个更适合您的用例的服务是 Kinesis 和 SQS。您可以配置 IoT 主题以将消息发送到 Kinesis 流或 SQS 队列,然后您的微服务可以订阅这些主题,以便它们可以单独处理消息,而不是每个微服务实例都接收每条消息的副本。