我正在尝试建立一个流程,允许用户输入数据并将其存储在RDS中。我的问题是我需要从USER-> SQS-> Lambda-> RDS转到还是最好直接从USER-> Lambda-> RDS完全跳过队列。后者会存在可伸缩性问题吗?
我确实喜欢SQS可以重试很多次以保证数据,但是有单独的lambda重试的类似方法吗?重要的是及时存储和完成所有数据。我正在努力查看这两种方案之间的权衡。
[如果有人对情况有任何意见,那就太好了。
后者会不会存在可伸缩性问题?
取决于多个指标,包括流量,峰值,数据库大小,rpm等。>
在lambda之前放置SQS使您可以根据需要在t时间内管理数据库查询的数量。这是一个“队列”,您正在消耗该队列。在某些业务情况下,它可能无用(银行交易等),但在某些情况下(分析计算),可能会有所帮助。您可以设置batch size并插入batch(一次10条记录),从而减少查询数量,而不必在每次调用lambda时进行一次插入。
batch size
也可以定义dead letter queue来推送有问题的数据(无法将其发送到数据库)。这将是另一个队列,您以后需要检查以识别有问题的输入。可以找到该文档here
dead letter queue