AWS Kinesis Stream 返回“ProvisionedThroughputExceededException”时数据是否丢失?

dev*_*ser 1 amazon-web-services amazon-kinesis aws-lambda

我有一个在 AWS 中运行的数据迁移作业,它将数据发送到 Kinesis Stream 和一个 Lambda 函数,该函数充当将数据写入 DynamoDB 的使用者(我将 kinesis 设置为 lambda的触发器)。

当 Kinesis Stream 开始命中时,我的问题就出现了:

超出写入吞吐量(计数/请求)- 平均值 - WriteProvisionedThroughputExceeded

我在该图表上看到 200 或 300 次计数,即使 lambda 使用者从未停止读取数据并将数据写入 DDB 表,但是一旦迁移过程完成(没有更多信息要发送到 kinesis)我注意到有一些丢失的记录(lambda 使用者从未失败),我的问题是:当 AWS Kinesis Stream 返回“ProvisionedThroughputExceededException”时,数据是否丢失?那些数据永远不会发送给kinesis消费者?

spg*_*spg 6

你是对的,Kinesis 不处理节流调用;您的数据将被 Kinesis 删除

如果由于请求所涉及的分片上的预置吞吐量不足而无法处理 PutRecord 请求,PutRecord 将抛出 ProvisionedThroughputExceededException。

为避免这种情况,您应该使用(最好)指数退避重试您的 PutRecord(s)调用:

应使用指数退避策略在短暂延迟后自动重试受限制的请求。