当前位置: 首页 > 知识库问答 >
问题:

微服务与AWS-IoT

罗学林
2023-03-14

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

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

当d1想要发送信息到ms1时,d1将发布到服务/ms1主题,而要发送信息到ms2时,d1将发布到服务/ms2主题等。类似地,当ms1想要发送信息到d1时,ms1将发布到设备/d1主题等。

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

想看看有没有更好的方法。

共有1个答案

司空鸿熙
2023-03-14

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

 类似资料:
  • 最近刚刚接触微服务相关的知识,想问一下微服务与golang推崇的云原生有什么异同,能否从宏观上对微服务与云原生概念进行一个区分?

  • 我在微服务之间的通信上遇到了麻烦。我有许多spring boot应用程序,它们之间有许多请求HTTP和AMQP(RabbitMQ)。在本地(在dev中),我使用没有Docker图像的Eureka(Netflix Oss)。

  • 我目前正在开发一个云备份解决方案,其中涉及到多达8个在spring-boot中开发的微服务,并使用mongo DB atlas作为持久层。 微服务包括Netflix ZUUL API网关和Netflix Eureka作为服务发现机制。微服务被要求彼此进行明显的对话。 对微服务进行了对接。到目前为止,我已经使用docker-compose文件将它们部署到EC2实例中,该文件列出了使用docker网络

  • 我是否可以将订购系统事件放到AWS Kinesis中,并在命令端服务中为客户监听?我是否应该将AWS Kinesis中的事件(orderCreated和OrderPayed event)持久化到客户命令端服务中的数据库?或者只更新客户查询端服务可以吗?我应该使用AWS Lambda作为事件处理器吗?你能给我一些这种模式的最佳实践吗? 提前谢了。

  • 最近在学微服务的分布式事务,不太明白为什么在微服务这种分布式系统中,原有的单体acid会出现问题 希望大佬们可以讲一下原理和思想

  • 基本 Nest 微服务是一种使用与HTTP不同的传输层的应用程序。 安装 首先,我们需要安装所需的软件包: $ npm i --save @nestjs/microservices 概述 通常,Nest支持一系列内置的传输器。它们基于 请求-响应 范式,整个通信逻辑隐藏在抽象层之后。多亏了这一点,您可以轻松地在传输器之间切换,而无需更改任何代码行。我们不支持具有基于日志的持久性的流平台,例如 Ka