【问题标题】:DynamoDB on-demand scaling and throttlingDynamoDB 按需扩展和节流
【发布时间】:2021-12-23 17:10:24
【问题描述】:

我目前正在研究 DynamoDB 的按需设置。我们偶尔会在高流量峰值期间看到一些限制,它跨越所有索引,因此不特定于分区。所有与按需容量模式相关的 DynamoDB 文档似乎都表明,一旦设置了新的峰值使用量,它基本上是无限期的峰值。我的假设是正确的,还是在一段时间后重置/缩小?是否有任何地方记录了按需容量模式的发电机扩展的内部结构?

我想通过预置任意高容量并切换回按需容量模式来预热我的低容量表,只是想最终发现这种策略会随着时间的推移而成立?

【问题讨论】:

    标签: database amazon-web-services nosql amazon-dynamodb devops


    【解决方案1】:

    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 的一部分,并且被视为实现细节,因此无法保证或承诺它会一直保持这种状态。

    【讨论】:

    • 谢谢,讲得很好!我找不到任何信息的一件事是;如果 DynamoDB 通过添加分区来扩展,并且它们的数量只能增加,这是否意味着预置容量模式下的自动扩展正在使用速率限制机制在“非高峰”时间进行缩减?他们为什么不让相同的能力像按需一样立即达到 2 倍的峰值,这仅仅是 AWS 的计费决定吗?在我看来,预置容量本质上是一种 v1 模式,除非使用量持平或非常可预测,否则不应真正使用它?
    • 再想一想,我意识到按需可能允许双峰吞吐量,因为它正在使用用于确定突发容量的令牌机制。因为表格广告分区但不带走任何内容,所以这设置了绝对最大吞吐量。按需 30 分钟突增容量可让您持续访问最大值,直到表需要扩展以添加更多分区。从这个意义上说,缩减是无关紧要的,因为我们按请求而不是按小时吞吐量付费,并且计费机制正在考虑增加的突发容量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多