docs 确认您了解 DynamoDB 如何在按需容量模式下横向扩展(强调我的):
峰值流量和扩展属性
[...] 按需容量模式可立即容纳最多两倍于以前的桌子上的峰值流量。例如,如果您的应用程序的流量模式在每秒 25,000 和 50,000 次强一致性读取之间变化,其中每秒 50,000 次读取是之前的流量峰值,则按需容量模式会立即适应高达每秒 100,000 次读取的持续流量。如果您的应用程序维持每秒 100,000 次读取的流量,该峰值将成为您之前的新峰值,从而使后续流量达到每秒 200,000 次读取。
如果您需要将之前的表峰值提高一倍以上,DynamoDB 会随着流量的增加自动分配更多容量,以帮助确保您的工作负载不会受到限制。但是,如果您在 30 分钟内超过之前峰值的两倍,则可能会发生限制。例如,如果您的应用程序的流量模式在每秒 25,000 到 50,000 次强一致性读取之间变化,其中每秒 50,000 次读取是之前达到的流量峰值, DynamoDB 建议将您的流量增长间隔至少 30 分钟,然后再推动每秒超过 100,000 次读取。
关于为新表设置初始峰值的策略,首先以预置容量模式和较大的 RCU/WCU 值部署它们,然后将其切换到按需模式 - 这也有效。它通过将前一个峰值的起始值设置为 RCU/WCU 的一半来自动允许相同的吞吐量,并且由于始终支持该数字的两倍,因此您可以保留容量。
文档没有明确声明它会无限期地保持这种状态,但他们也没有谈到缩小规模。在实践中,我也没有看到这种情况发生。根据我的经验,AWS 不会在文档中留下这样的内容。
这也不太可能基于 DynamoDB 的架构,AWS 在这个非常酷的 tech talk at re:invent 2018 中解释了这一点。 DynamoDB 在分区中进行扩展,并且表的分区数量只能增加。每个存储分区能够:
- 为多达 3000 个 RCU 提供服务
- 服务多达 1000 个 WCU
- 存储 10GB 的数据
一旦达到这些限制中的任何一个,就会发生分区拆分 - 创建两个新分区并在它们之间分配数据。这会根据需要发生多次,直到可以容纳新配置的参数(RCU、WCU、存储)。
没有明确说明,但由于您几乎可以立即从按需容量更改为预配容量,反之亦然,因此可以假设底层架构相同或至少非常相似,但上面有不同的计费模型。
由于分区数量总是只能增加,因此峰值容量不太可能下降。
话虽如此:它不是已发布 API 的一部分,并且被视为实现细节,因此无法保证或承诺它会一直保持这种状态。