【问题标题】:AWS SQS and other servicesAWS SQS 和其他服务
【发布时间】:2018-02-19 05:16:15
【问题描述】:

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

【问题讨论】:

  • 我们需要更多信息。虽然您当然可以使用 SQS,但可能有更好的解决方案。要从 SQS 读取,您必须轮询队列 - 它不是事件驱动的。 SNS 是事件驱动的,再加上 AWS Lambda,可以将您的事件保存在您想要的任何位置,包括 DynamoDB。你能详细说明你想做什么吗?你有什么样的音量?目的地是否只有 DynamoDB?如果活动丢失怎么办?您的环境的实时性如何?
  • 我真正使用的是网关。 (他们使用 SQS)他们将发送数据(如 MAC 地址 + 更多信息),所以我想读取这些数据并将它们放入 DynamoDB。我将每 3 秒接收一次此数据,如果我丢失了无需担心每分钟 3 或 4 次数据(只是示例)。你能帮帮我吗?
  • @stdunbar 你能帮帮我吗?

标签: amazon-web-services queue amazon-sqs


【解决方案1】:

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

为了实现这一点,您的应用程序必须具有将使用消息的异步缓冲 SQS 消费者(sqs 消息的限制为 256KB),因此无论哪个应用程序发布消息,消息的大小都需要小于 256Kb。 sqs消费者请参考以下链接

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

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

Dynamodb reading and writing units

【讨论】:

    【解决方案2】:

    一般来说,你会有这样的设置:

    EC2 实例(一个或多个)将每隔几秒读取一次您的队列,以查看其中是否有任何内容。如果是这样,他们会将这些数据写入 DynamoDB。

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2012-04-20
      • 2017-09-27
      • 1970-01-01
      • 2011-06-19
      • 2018-06-25
      相关资源
      最近更新 更多