是否需要 AWS SQS

AWS SQS Required or not

我正在构建一项服务,该服务将使用来自另一个来源(服务)的数据。所以,我正在考虑使用以下管道:-

其他服务----> SNS 主题----> SQS ----> AWS Lambda ----> Dynamo Db

所以,上面的流程说的是另一个服务将数据推送到 SNS 主题,SQS 将是订阅者。现在 AWS Lambda 将在此 SQS 上有一个触发器,它将侦听 SQS 中的消息并将其推送到 Dynamo Db。虽然这样做看起来没问题。但是现在我在想我是否真的需要 SQS。我可以避免使用它吗? AWS Lambda 没有使用 SQS,而是直接在 SNS 上有一个触发器。如果我不使用 AWS SQS,我只是在考虑一种情况。如果 AWS Dynamo DB 失败,它将如何处理这种情况?我认为只有 SNS,在此期间我会丢失一些消息,我的 Dynamo Db 处于失败状态,但如果我有 SQS,那么这些消息将存储在 SQS 队列中。

如果我的理解正确,请告诉我。

非常感谢您的帮助。

无法在评论中回答那么多,所以我会在这里尝试。

您链接到的架构很常见。两个最大的缺点是,即使您无事可做,您仍要为 Lambda 使用付费,并且您的数据可能会延迟至少 1 分钟的轮询间隔。不过,这些事情都可能与您的问题无关。

SQS 可用作 DynamoDB 发生故障时的临时数据存储。但是,如果它失败了,你到底要做什么?如果 SQS 失败并丢失消息怎么办?如果 Lambda 失败并且永远不会运行您的代码怎么办? DynamoDB 是一种托管服务,就像 SQS 和 Lambda 一样 - 亚马逊将非常努力地保持它 运行 就像他们的其他服务一样。试图围绕每一种可能的故障场景进行架构将意味着您永远不会交付代码。我会专注于尽可能简单的架构,并对您付费的服务给予一定的信任。