在此用例中,Lambda 是否需要 SQS?
Is an SQS needed with a Lambda in this use case?
我正在尝试构建一个允许用户输入数据并将其存储在 RDS 中的流程。我的问题是我是否需要从 USER -> SQS -> Lambda -> RDS 转到或者直接从 USER -> Lambda -> RDS 转到完全跳过队列更好。后者会存在可扩展性问题吗?
我很喜欢SQS可以重试很多次来保证数据,但是有没有类似的方法可以单独用lambda重试?及时存储并完成所有数据非常重要。我很难看到这两种情况的权衡。
如果有人对这种情况有任何意见,那就太好了。
Are there going to be scalability issues with the latter?
这取决于多个指标,包括流量、峰值、数据库大小、rpm 等。
将 SQS 放在 lambda 之前可以让您根据需要在 t 时间内管理数据库查询的数量。它是 "queue" 并且您正在使用该队列。在某些业务案例中,它可能没有用(银行交易等),但在某些情况下(分析计算)它可能会有帮助。您可以设置 batch size
并插入 batch(一次 10 条记录),而不是每次调用 lambda 时都进行一次插入,这样可以减少查询次数。
您还可以定义 dead letter queue
来推送有问题的数据(无法将其发送到数据库)。这将是您稍后检查以识别有问题的输入的另一个队列。可以找到文档here
我正在尝试构建一个允许用户输入数据并将其存储在 RDS 中的流程。我的问题是我是否需要从 USER -> SQS -> Lambda -> RDS 转到或者直接从 USER -> Lambda -> RDS 转到完全跳过队列更好。后者会存在可扩展性问题吗?
我很喜欢SQS可以重试很多次来保证数据,但是有没有类似的方法可以单独用lambda重试?及时存储并完成所有数据非常重要。我很难看到这两种情况的权衡。
如果有人对这种情况有任何意见,那就太好了。
Are there going to be scalability issues with the latter?
这取决于多个指标,包括流量、峰值、数据库大小、rpm 等。
将 SQS 放在 lambda 之前可以让您根据需要在 t 时间内管理数据库查询的数量。它是 "queue" 并且您正在使用该队列。在某些业务案例中,它可能没有用(银行交易等),但在某些情况下(分析计算)它可能会有帮助。您可以设置 batch size
并插入 batch(一次 10 条记录),而不是每次调用 lambda 时都进行一次插入,这样可以减少查询次数。
您还可以定义 dead letter queue
来推送有问题的数据(无法将其发送到数据库)。这将是您稍后检查以识别有问题的输入的另一个队列。可以找到文档here