【发布时间】:2020-09-05 10:56:30
【问题描述】:
我有一个带有 20 个分片的 kinesis 流设置,供基于 KCL 的 kinesis 消费者使用。消费者部署在 ECS 中,有 20 个实例。(意思是多个 KCL 实例?)
我认为在这种情况下会发生的是:
- 每个实例将为每个分片创建 20 个工作线程,彼此独立。
- 因此,在任何给定时间,一个分片都会有 20 个单独的线程连接到它
- 同一组记录将由每个实例处理(即:重复记录处理不会跨实例处理)
- 这也会超出每个分片的消费者速率限制。 (每秒 5 个事务)
- 运行我的消费者的单个实例就足够了。换句话说,跨多个实例扩展消费者根本没有任何好处。
This 的回答似乎暗示“分片租约”将确保它仅由单个实例处理。但是,这里的second answer 表示“一个 KCL 实例只会启动每个分片的一个进程,但假设第二个 KCL 实例具有权限,您可以让另一个 KCL 实例使用相同的流(和分片)。”。
进一步的this 文档建议“将实例数增加到最大打开分片数”作为一种可能的扩展方法,这与上述一些观点相矛盾。
消费者实例在这种情况下实际上是如何运作的?
【问题讨论】:
标签: amazon-web-services sharding producer-consumer amazon-kinesis