Javascript 发电机节流
我有一个5读5写的发电机表。在这张表中,我有两条记录 然后,我决定通过一次执行大量写入操作(一次突发大约4000条记录),看看会得到什么样的错误响应。蓝色的“消耗”线直接越过红色的“容量”线,但是我没有收到任何类型的错误消息 指标显示发生了节流,但如果超过两个容量级别,则仍会发生读取和写入 我花了超过30分钟的时间将读写操作推到远远超过容量的位置,还没有出现错误 我不确定这是否是因为我在node js中使用了官方的javascript SDK,它可能会透明地处理节流并重试节流查询 我希望有人能在这方面给我一些指导Javascript 发电机节流,javascript,node.js,amazon-web-services,amazon-dynamodb,Javascript,Node.js,Amazon Web Services,Amazon Dynamodb,我有一个5读5写的发电机表。在这张表中,我有两条记录 然后,我决定通过一次执行大量写入操作(一次突发大约4000条记录),看看会得到什么样的错误响应。蓝色的“消耗”线直接越过红色的“容量”线,但是我没有收到任何类型的错误消息 指标显示发生了节流,但如果超过两个容量级别,则仍会发生读取和写入 我花了超过30分钟的时间将读写操作推到远远超过容量的位置,还没有出现错误 我不确定这是否是因为我在node js中使用了官方的javascript SDK,它可能会透明地处理节流并重试节流查询 我希望有人能在
谢谢这是因为突发容量。您可以在AWS文档中了解更多信息:
基本上它的意思是,你可以拥有300秒的“存储容量”,当你的负载达到峰值时,可以将其用作一个池。在您的情况下,这将是一个包含1500个请求的池,您可以立即使用该池,并在容量未使用时重新填充 只是想在@Luc Hendriks的回答中添加一个关于节流的通知 即使在您的“突发容量”用完并且DynamoDb开始节流之后,您也很少会通过PutteExceedexception获得供应(根据我的经验)。这是因为SDK以静默方式重试限制请求(所以您是对的,SDK透明地处理限制) 您可以使用参数禁用自动重试,以便在看到度量中的限制后立即通过PutExceedeDexception获得ProvisionedThroughtThroughtThroughPutExceedexception 以下是如何在不自动重试的情况下执行更新请求的示例:
var aws_dynamodb = new aws.DynamoDB({maxRetries: 0}),
aws_dynamodb_doc = new aws.DynamoDB.DocumentClient({service: aws_dynamodb});
// ...
aws_dynamodb_doc.update(params, function(err, data) {
// ...
});