如何在更改 WriteUnits 的吞吐量并等待它完成时检查 DynamoDB 状态?
How to check DynamoDB Status while changing Throughput of WriteUnits and wait for it to complete?
如何等待 DynamoDB 活动状态?
我只想升级 DynamoDB,而没有其他进程 scaling/updating table 升级。因此我想知道如何查看是否有任何其他进程正在扩展 DynamoDB table?
根据 docs of dynamodb.waitFor Function 我只能检查 tableExists
和 tableNotExists
状态:
var params = {
TableName: 'STRING_VALUE' /* required */
};
dynamodb.waitFor('tableExists', params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
然而,这似乎只有 tableExists
和 tableNotExists
状态,但似乎不允许检查 'active' 和 'updating' 状态?
背景:我在一个多工作人员环境中,每个工作人员都试图开始升级,以防达到写入限制。这使得在从 table 读取当前配置的吞吐量并开始新的扩展操作之前必须等待任何 scalings/updates 完成。
一种方法是尝试 UpdateTable 操作并在您收到 ResourceInUseException 时实施重试逻辑(表明其他线程已经在尝试扩展 table)。重试逻辑将重复调用 DescribeTable(在重复调用之间有一些退避逻辑)并等待 ACTIVE 状态(并可能确保新限制不够),然后再次重试 UpdateTable。
您可能已经知道,但以防万一...:)
如果您的方法是在您收到 ProvisionedThroughputExceededException 时自动扩展 table,您需要非常小心地确保您的请求在哈希键 space 中很好地分布(或设置一些硬限制预配的吞吐量)。否则,在最坏的情况下,您的 table 最终可能会自动扩展以支持单个热键,而分配给其他键的大部分容量未被使用。
刚从 aws 得到答复。我上面的代码可能正在运行。在吞吐量发生变化时,table 切换到更新状态。 TableExists 正在等待更新 table。一旦 table 从更新切换回活动状态,它就会回调。
dynamodb.waitFor('tableExists', params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
如何等待 DynamoDB 活动状态?
我只想升级 DynamoDB,而没有其他进程 scaling/updating table 升级。因此我想知道如何查看是否有任何其他进程正在扩展 DynamoDB table?
根据 docs of dynamodb.waitFor Function 我只能检查 tableExists
和 tableNotExists
状态:
var params = {
TableName: 'STRING_VALUE' /* required */
};
dynamodb.waitFor('tableExists', params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
然而,这似乎只有 tableExists
和 tableNotExists
状态,但似乎不允许检查 'active' 和 'updating' 状态?
背景:我在一个多工作人员环境中,每个工作人员都试图开始升级,以防达到写入限制。这使得在从 table 读取当前配置的吞吐量并开始新的扩展操作之前必须等待任何 scalings/updates 完成。
一种方法是尝试 UpdateTable 操作并在您收到 ResourceInUseException 时实施重试逻辑(表明其他线程已经在尝试扩展 table)。重试逻辑将重复调用 DescribeTable(在重复调用之间有一些退避逻辑)并等待 ACTIVE 状态(并可能确保新限制不够),然后再次重试 UpdateTable。
您可能已经知道,但以防万一...:)
如果您的方法是在您收到 ProvisionedThroughputExceededException 时自动扩展 table,您需要非常小心地确保您的请求在哈希键 space 中很好地分布(或设置一些硬限制预配的吞吐量)。否则,在最坏的情况下,您的 table 最终可能会自动扩展以支持单个热键,而分配给其他键的大部分容量未被使用。
刚从 aws 得到答复。我上面的代码可能正在运行。在吞吐量发生变化时,table 切换到更新状态。 TableExists 正在等待更新 table。一旦 table 从更新切换回活动状态,它就会回调。
dynamodb.waitFor('tableExists', params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});