有没有办法限制 Kinesis Consumer 的速率?

Posted

技术标签:

【中文标题】有没有办法限制 Kinesis Consumer 的速率?【英文标题】:Is there any way to rate limit Kinesis Consumer? 【发布时间】:2021-07-16 09:44:55 【问题描述】:

我有一个用例,我想调用一个使用速率限制的外部 API。现在假设我们可以每 5 秒调用 10 个 API。

我想使用 Kinesis Data Stream 来完成我的用例。我将使用流上的 Kinesis Producer 生成事件,并且我想设置多个从同一流中消费的消费者。然后,这些消费者应根据速率限制调用外部 API。

问题是因为我有 2 个消费者实例作为 2 个不同的 EC2 实例运行,我想不出任何方法可以让这 2 个消费者一起工作并决定他们只需要对外部进行 10 次调用API 每 5 秒一次。

【问题讨论】:

【参考方案1】:

一个适合的解决方案是使用分布式速率限制器库,下面的库是一个支持redis滑动窗口速率限制器的库:https://github.com/mokies/ratelimitj redis/elastic-cache 需要额外的基础设施和成本

【讨论】:

以上是关于有没有办法限制 Kinesis Consumer 的速率?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法为 kinesis firehose 保存到 s3 的文件指定文件扩展名

Aws云形成模板:如何为Kinesis资源提供保留期?

将 AWS Lambda 数据推送到 Kinesis Stream

按事件时间对 Kinesis firehose S3 记录进行分区

有没有办法使用PhpStorm和Xdebug调试RabbitMQ Consumer(php-ampqlib)?

如何暂停/恢复aws lambda函数