AWS SQS 和其他服务

AWS SQS and other services

我公司有一个以 JSON 格式发送实时消息的消息系统,它不是建立在 AWS 上的 我们的团队正在尝试使用 AWS SQS 来接收这些消息,然后使用 DynamoDB 来存储这些消息 我正在考虑使用 EC2 读取此消息然后保存它们 任何更好的解决方案?或者怎么做我没有很好的经验

首先,EC2 是云上的基础设施,它类似于在本地设置 OS 的物理机。如果您想创建任何将从 Amazon SQS 获取数据(Json 格式的消息)并将其推送到 dynamodb(无 Sql 数据库)的应用程序,您的设计是正确的,因为 SQS 和 DynamoDb 都有彻底 Json 支持。一旦您的应用程序准备就绪,您就可以将该应用程序部署到 EC2 机器上。

为实现此目的,您的应用程序必须具有将使用消息的异步缓冲 SQS 使用者(sqs 消息的限制为 256KB),因此无论哪个应用程序发布消息,消息大小都需要小于 256Kb。 sqs consumer

请参考下方link

is putting sqs-consumer to detect receiveMessage event in sqs scalable

一旦您使用了来自 sqs 队列的消息,您需要将其保存在 dynamodb 中,您可以使用 crud 存储库 轻松完成。使用 Repository,您可以直接将 json 保存在 Dynamodb table 中,但请务必根据请求配置配置写入容量,因为配置容量越大,成本越高。 table.

的写入容量请参考下文link配置

Dynamodb reading and writing units

一般来说,您将拥有如下设置:

EC2 实例(一个或多个)将每隔几秒读取一次您的队列,看看那里是否有任何东西。如果是这样,他们会将此数据写入 DynamoDB。

根据您所说的情况,您一个月内从 SQS 获得的读取次数将少于 1,000,000 次,因此您可以从免费套餐开始。您最初可以有一个 EC2 实例,它可以是一个非常小的实例 - T2.micro 应该绰绰有余。在 DynamoDB 上,您每秒不需要超过几次写入。

SQS 的优势在于,如果由于某种原因您的 EC2 实例暂时不可用,消息会继续排队,您不会丢失任何消息。

从编码的角度来看,您没有提到您的开发环境,但有适用于各种环境的 AWS 库。我在 Java 中开发,执行此操作的代码将是 可能 100 行。我猜想其他语言也会类似。确保以您正在使用的语言查看长轮询 - 它有助于加快处理速度并节省资金。