【发布时间】:2018-06-19 07:50:29
【问题描述】:
我有多个 EC2 实例为同一个微服务运行,该微服务有一个 Kinesis 消费者正在运行(使用 KCL)。
我的问题是,当 Kinesis 流收到一个新事件时,由于所有消费者都在轮询,所有实例的消费者是否会消费同一个事件?
【问题讨论】:
标签: amazon-ec2 amazon-kinesis amazon-kcl
我有多个 EC2 实例为同一个微服务运行,该微服务有一个 Kinesis 消费者正在运行(使用 KCL)。
我的问题是,当 Kinesis 流收到一个新事件时,由于所有消费者都在轮询,所有实例的消费者是否会消费同一个事件?
【问题讨论】:
标签: amazon-ec2 amazon-kinesis amazon-kcl
KCL 的设计使得每个分片仅由一个工作人员处理 - 内置的租约机制是提供此功能的关键。
虽然在正常情况下,每个消费者只会收到与其拥有租约的分片有关的消息,但也有一些边缘情况(通常由连接超时/中断或主机死亡/停止响应引起)值得考虑的是,这可能会导致对来自流的消息进行双重处理。
作为一个具体示例:如果工作人员未能续订租约(通常由工作人员主机和 DynamoDB 之间的连接问题引起),则可能另一个工作人员将获得该租约并开始处理,而原来的工作人员仍在工作
【讨论】:
该事件将仅由一个消费者消费
【讨论】: