【问题标题】:What are the drawbacks of SQS poller which AWS Lambda removes?AWS Lambda 消除的 SQS 轮询器有哪些缺点?
【发布时间】:2017-11-12 03:27:36
【问题描述】:

我的架构如下所示:-

多个 SNS ->(AWS Lambda 或带有轮询器的 SQS)??? -> 发电机数据库

所以,基本上有多个 SNS 使用 Poller 订阅了 AWS Lambda 或 SQS,然后将数据推送到 Dynamo Db。

但是这个?事情在两者之间做了大量的信息转换。所以,现在对于这种情况,我可以将 AWS Lambda 或 SQS 与 Poller 一起使用。使用 AWS Lambda,我可以在 Lambda 函数中进行转换,使用带有 Poller 的 SQS,我可以在 Poller 中进行转换。使用 AWS Lambda,我看到一个问题是代码会变得非常大,因为转换非常复杂(有很多规则),所以我正在考虑使用 SQS。但在最终确定 SQS 之前,我想知道 AWS Lambda 消除了 SQS 的缺点?

请帮忙。如果您需要更多信息,请告诉我。

【问题讨论】:

标签: aws-lambda amazon-sqs


【解决方案1】:

您的问题没有包含太多细节,因此我将尝试解释您的需求。

选项 1:SQS 轮询

  • 信息发送到 Amazon SNS 主题
  • SQS 队列订阅了 SNS 主题
  • 在 Amazon EC2 实例上运行的应用程序定期轮询 SQS 队列以请求消息
  • 如果消息可用,消息中的数据将被转换并保存到 Amazon DynamoDB 表中

如果转换需要很长时间来处理,这种方法很好。 EC2 实例的数量可以根据队列中的工作量进行扩展。 多条消息可以同时接收。这是一种传统的基于消息的方法。

选项 2:使用 Lambda

  • 信息发送到 Amazon SNS 主题
  • AWS Lambda 函数订阅了 SNS 主题
  • 向 SNS 主题发送消息时调用 Lambda 函数
  • Lambda 函数转换消息中的数据并将其保存到 Amazon DynamoDB 表中

AWS Lambda 函数的执行时间限制为五分钟,因此这种方法只有在转换过程可以在该时间范围内完成时才有效。

不需要服务器,因为 Lambda 会自动并行运行多个函数。当不执行任何工作时,不会执行任何 Lambda 函数,也不会产生计算费用。

在这两个选项之间,使用 AWS Lambda 更加高效和可扩展,但它可能会因您的特定工作负载而异。

【讨论】:

  • 感谢您的回答。那么aws lambda代码的大小呢?我担心的是我放入AWS lambda中的代码的大小,因为它将是一个文件。设计上会不会好点?
  • 我不知道如何回答这个问题。您编写的代码完全由您自己控制,并且在两个选项中都非常相似。
【解决方案2】:

我们现在可以使用 SQS 消息来触发 AWS Lambda 函数。

2018 年 6 月 28 日:AWS Lambda 将 Amazon Simple Queue Service 添加到支持 事件源

此外,不再需要运行消息轮询服务或创建 SQS 到 SNS 的映射。 AWS 无服务器模型支持如下新的事件源:

Type: SQS
 PropertiesProperties:
  QueueQueue: arn:aws:sqs:us-west-2:213455678901:test-queue arn:aws:sqs:us-west-2:123791293
  BatchSize: 10

AWS 控制台还支持:

更多详情:
https://aws.amazon.com/blogs/aws/aws-lambda-adds-amazon-simple-queue-service-to-supported-event-sources/
https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 2021-11-28
    • 2021-03-22
    • 2021-06-07
    • 1970-01-01
    • 2020-05-17
    • 2019-02-02
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多