【发布时间】:2021-01-28 16:26:05
【问题描述】:
我有一个 kinesis 流(20 个分片),数据延迟大约 1 天,由基于 KCL 的 kinesis 消费者使用。消费者部署了 20 个 ECS 实例,因此每个实例都有一个线程从每个分片中提取数据。
根据文档,单个 getRecords 调用似乎可以获取多达 10,000 条记录或最大有效负载大小为 10 MB。但是,当我监控消费者日志时,并非所有分片似乎都达到了这个限制。使用单个 getRecords 调用获取的记录在消费者实例之间非常不一致。一些调用获取大约 100-400 条记录,而一些调用获取大约 4000-5000 条记录。在极少数情况下,某些调用会获取 9999 条记录。结果,数据延迟并没有减少。
消费者需要大约 5 分钟来处理 10,000 条记录,因此也没有达到读取吞吐量。
是否有对此的解释或我可以研究的指标,以进一步调试此问题?
【问题讨论】:
-
在您描述的情况下,getRecords 被调用的频率如何(对于分片)?
标签: amazon-web-services sharding producer-consumer amazon-kinesis