AWS SQS 的无服务器扩展考虑因素
AWS SQS 扩展考量
SQS 队列缓冲 API Gateway 查询,实现异步处理。
作为 Lambda 事件源,AWS SQS 会为您控制轮询队列。
但您仍然可以控制其他与性能相关的设置。
AWS SQS 扩展考量视频
W3schools.com 与 Amazon Web Services 合作,为我们的学生提供数字培训内容。
如何运作
Lambda 自动使用五个并行进程来清空队列。
这五个并发进程表示 Lambda 会调用您的 Lambda 函数五次。
为防止 Lambda 函数被限流,请确保预留并发数至少为五。
如果 Lambda 服务检测到队列大小增加,它会增加批处理大小。
这意味着它将并发调用更多 Lambda 函数。
Lambda 将继续每分钟增加进程数,直到队列减慢或达到容量。
除非另有说明,最大并发数为 1000。
Lambda 故障
Lambda 服务将在 Lambda 函数出现故障时减少轮询队列的进程数。
故障将被放入死信队列,并从您的 SQS 队列中删除。
如果批处理大小设置得太大,您的 Lambda 函数可能会超时。
如果这种情况频繁发生,Lambda 会减慢轮询速度,导致队列阻塞。
未处理的消息
如果在 Lambda 函数处理它们之前可见性超时到期,未处理的消息将变得可见。
这些消息需要再次处理,从而增加队列大小。
这增加了重复处理消息的可能性。
理想的方法是将可见性超时设置为函数超时的 6 倍。
设置“最大接收次数”以在高并发情况下保持平衡至关重要。
当发送过多消息到死信队列时,这有助于保持队列的流动。
下表显示了 SQS 队列作为 Lambda 事件源的特性。
参数 | 值/限制 | 参数设置方式 |
---|---|---|
批处理消息大小限制 | 1-10 | 在 Lambda 函数的事件源上配置 |
默认轮询器数量 | 5 | 由 Lambda 服务管理 |
Lambda 增加并行轮询器的速率 | 每分钟最多 60 个 | 由 Lambda 服务管理 |
Lambda 处理的并发批次数 | 最多 10000 | 由 Lambda 服务管理 |
并发 Lambda 函数数量 | 1000、函数或账户限制中的较小者 | 预留并发限制 |
每个队列的消息数 | 无限制 | 不适用 |
可见性超时 | 0 秒至 12 小时 | 在队列上配置 |
重试次数 | 1-1000 | 最大接收次数 |
函数超时 | 0 秒至 15 分钟 | 在函数上配置 |
相关阅读
使用长轮询处理消息Amazon SQS 限制
Lambda 开发人员指南:使用 Lambda 和 Amazon SQS
如何将 Amazon SQS 用作 Lambda 的事件源