使用 AWS 构建任务处理的最佳实践是什么?
What is the best practice to architect tasks processing using AWS?
我想知道如何配置 AWS Lambda、SNS 和 SQS 来处理后台任务。
我想到了三种方式。
选项 1。一个名为 consumer 的函数可以通过从队列中接收任务来执行 worker。
选项 2。将所有任务发送到 SNS。一名工作人员和一名 SQS 从 SNS 接收和工作。
选项 3。 APP直接将任务转发给1个SQS和1个lambda
最大的顾虑是在应用程序中直接调用Lambda还是使用SQS或SNS的任务消费者。
我的想法来自
典型的模式是:
- 将 jobs/tasks 推送到 Amazon SQS 队列
- 配置 AWS Lambda 函数以订阅 SQS 队列
- Lambda 将自动为 SQS 队列中的每条消息执行 Lambda 函数
我想这符合您的选项 1,但 AWS Lambda 服务充当触发各个 Lambda 函数的“消费者”。
如果有不同类型的输入(例如三个不同的任务),每个都需要不同的 Lambda 函数,则创建 3 个单独的队列,每个队列链接到它自己的 Lambda 函数(您的选项 3).
在中间插入 Amazon SNS(在您的 选项 2 中显示)可以更轻松地 'fork' 信息,例如向每条消息添加另一个订阅者,以防他们需要并行处理。否则没有必要。
这取决于您当前和未来的要求:
选项 1:选择消费者 lambda 将允许您在事件中添加验证和操作。
但是你的消费者 lambda 将是 运行 直到你的工人 lambda 是 运行.
选项 2:SNS 使您可以灵活地在未来添加新事件和新订阅者,并且您的应用程序将只需要处理 SNS。
选项 3:如果您确定将来不会有这样的其他 lambda。在这种情况下,您的应用需要配置哪种类型的事件将转到哪个 SQS。
您可以根据您的要求选择任何选项,但我建议您选择选项 2,因为您的应用将需要仅将通知推送到 SNS(单一集成)。在 SNS 中,您可以为不同类型的事件添加过滤器。
您也可以从 SNS 直接触发 lambda。
如果您的应用程序不需要 lambda 函数的输出,您应该使用 SNS/SQS 进行异步处理。
我想知道如何配置 AWS Lambda、SNS 和 SQS 来处理后台任务。
我想到了三种方式。
选项 1。一个名为 consumer 的函数可以通过从队列中接收任务来执行 worker。
选项 2。将所有任务发送到 SNS。一名工作人员和一名 SQS 从 SNS 接收和工作。
选项 3。 APP直接将任务转发给1个SQS和1个lambda
最大的顾虑是在应用程序中直接调用Lambda还是使用SQS或SNS的任务消费者。
我的想法来自
典型的模式是:
- 将 jobs/tasks 推送到 Amazon SQS 队列
- 配置 AWS Lambda 函数以订阅 SQS 队列
- Lambda 将自动为 SQS 队列中的每条消息执行 Lambda 函数
我想这符合您的选项 1,但 AWS Lambda 服务充当触发各个 Lambda 函数的“消费者”。
如果有不同类型的输入(例如三个不同的任务),每个都需要不同的 Lambda 函数,则创建 3 个单独的队列,每个队列链接到它自己的 Lambda 函数(您的选项 3).
在中间插入 Amazon SNS(在您的 选项 2 中显示)可以更轻松地 'fork' 信息,例如向每条消息添加另一个订阅者,以防他们需要并行处理。否则没有必要。
这取决于您当前和未来的要求:
选项 1:选择消费者 lambda 将允许您在事件中添加验证和操作。 但是你的消费者 lambda 将是 运行 直到你的工人 lambda 是 运行.
选项 2:SNS 使您可以灵活地在未来添加新事件和新订阅者,并且您的应用程序将只需要处理 SNS。
选项 3:如果您确定将来不会有这样的其他 lambda。在这种情况下,您的应用需要配置哪种类型的事件将转到哪个 SQS。
您可以根据您的要求选择任何选项,但我建议您选择选项 2,因为您的应用将需要仅将通知推送到 SNS(单一集成)。在 SNS 中,您可以为不同类型的事件添加过滤器。 您也可以从 SNS 直接触发 lambda。
如果您的应用程序不需要 lambda 函数的输出,您应该使用 SNS/SQS 进行异步处理。