AWS Kinesis Stream returns "ProvisionedThroughputExceededException" 时数据丢失了吗?

Is data lost when AWS Kinesis Stream returns "ProvisionedThroughputExceededException"?

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

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

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

我看到该图表上有 200 或 300 个峰值计数,即使 lambda 消费者从不停止读取数据和向 DDB 写入数据 table,但是一旦迁移过程完成(没有更多要发送到运动的信息)我注意到有一些丢失的记录(lambda 消费者从未失败),我的问题是:AWS Kinesis Stream returns "ProvisionedThroughputExceededException" 时数据丢失了吗? 数据永远不会发送给运动消费者?

你是对的,受限制的调用不会被 Kinesis 处理;你的数据 will be dropped by Kinesis:

If a PutRecord request cannot be processed because of insufficient provisioned throughput on the shard involved in the request, PutRecord throws ProvisionedThroughputExceededException.

为避免这种情况,you should retry your PutRecord(s) 调用使用(最好)指数退避:

Throttled requests should be retried automatically after a short delay, using an exponential backoff strategy.