AWS Kinesis 如何限制写入吞吐量?

Jus*_*meo 3 amazon-web-services amazon-kinesis amazon-kinesis-kpl

AWS Kinesis 的写入吞吐量相当低,为 1000 次写入/秒和 1MB/写入秒。Kinesis 如何强制执行此限制?如果我尝试在一秒钟内执行 1500 次写入,那么额外的 500 次写入是否会被放入某种队列中,还是会直接失败?

str*_*gjz 6

看起来它只是失败并抛出异常。

未成功处理的记录包括 ErrorCode 和 ErrorMessage 值。ErrorCode 反映错误类型,可以是以下值之一:ProvisionedThroughputExceededException 或 InternalFailure。ErrorMessage 提供有关 ProvisionedThroughputExceededException 异常的更多详细信息,包括帐户 ID、流名称和受限制的记录的分片 ID。有关部分成功响应的更多信息,请参阅 Amazon Kinesis Data Streams 开发人员指南中的使用 PutRecords 添加多个记录。

https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html

速率限制是如何完成的

速率限制 KPL 包含速率限制功能,该功能限制从单个生产者发送的每个分片的吞吐量。速率限制是使用令牌桶算法实现的,该算法具有针对 Kinesis Data Streams 记录和字节的单独存储桶。每次成功写入 Kinesis 数据流都会向每个存储桶添加一个令牌(或多个令牌),最多可达特定阈值。该阈值是可配置的,但默认设置为比实际分片限制高 50%,以允许单个生产者的分片饱和。

您可以降低此限制以减少由于过度重试而导致的垃圾邮件。然而,对于每个生产者来说,最佳实践是积极重试最大吞吐量,并通过扩展流的容量和实施适当的分区键策略来处理任何确定为过度的限制。

https://docs.aws.amazon.com/streams/latest/dev/kinesis- Producer-adv-retries-rate-limiting.html