我开发了一个高度加载的应用程序,它从DynamoDB按需表中读取数据。假设它经常每秒执行大约500次读取。
有时,我需要将一个大型数据集上传到数据库(1亿条记录)。我使用蟒蛇,火花和audienceproject/spark-dynamodb。我设置了throughput=40k并使用BatchWriteItem()编写数据。
在开始时,我观察到一些编写限制的请求,写容量仅为4k,但随后发生了升级,并且写入容量增加了。
问题:
发布于 2022-03-29 15:28:45
这是很多问题在一个问题,你会得到一个高水平的答案。
DynamoDB通过增加分区数量来扩展。每个项目都存储在一个分区上。每个分区可以处理:
一旦达到任何这些限制,分区就被分割成两个,并且这些项被重新分配。在有足够的能力满足需求之前,就会发生这种情况。您不能控制这种情况是如何发生的,这是一个在后台执行此操作的托管服务。
分区的数量一直在增长。
根据这些信息,我们可以回答您的问题:
独立工作吗?
对于读和写活动,缩放机制是相同的,但是缩放点与上面提到的不同。在随需应变表中,不涉及AutoScaling,这仅适用于具有提供吞吐量的表。你不应该注意到这对你的阅读有影响。
我假设您设置了spark可以用作编写预算的吞吐量,它不会对按需表产生太大影响。它的信息,它可以使用内部来决定多大的并行化是可能的。
如果客户端使用BatchWriteItem,它将获得无法为每个请求写入的项的列表,并且可以再次对它们进行排队。指数退避可能涉及到,但这是一个实现细节。这不是魔术,您只需跟踪哪些项目您已经成功编写,并将那些您还没有再次队列,直到“写”队列是空的。
https://stackoverflow.com/questions/71663032
复制相似问题