我一次从提供商 API 接收多个 json 项目更新,但无法控制可以接收多少个项目,有时可能只有 1 个项目,有时则有 100k 个项目。
这些项目被放入 SQS 队列。然后我使用一些代码处理它以将其插入 dynamoDB(主要是更新,因为项目已经存在但发生了变化)
然后将这些项目插入到 DynamoDB 中,你可以想象,当它一次获得 100k 个项目时,配置的容量是不够的,它需要自动扩展,这会浪费我的时间和金钱。
您是否知道是否有某种架构机制可以用于平滑交易,这样我就不需要一次处理 100K 个项目,从而节省自动缩放和更多配置容量的费用?
答案1
您可以使用按需模式,这样就无需自动扩展(或在突发事件后自动缩减)。如果项目小于 1kb,则写入 100,000 个项目的成本约为 0.12 美元。
按需服务是针对您所描述的突发性工作负载而设计的。
答案2
使用您的 SQS 队列作为缓冲区,不要尝试一次写入所有项目。
设置批处理大小和最大并发数,以确保不会通过平滑较长时间内的流量来使 DynamoDB 表过载。您可以尝试使用事件源映射的其他配置,直到获得正确的结果。