【问题标题】:Same Kinesis Consumer running on multiple EC2 instances在多个 EC2 实例上运行的同一个 Kinesis Consumer
【发布时间】:2018-06-19 07:50:29
【问题描述】:

我有多个 EC2 实例为同一个微服务运行,该微服务有一个 Kinesis 消费者正在运行(使用 KCL)。

我的问题是,当 Kinesis 流收到一个新事件时,由于所有消费者都在轮询,所有实例的消费者是否会消费同一个事件?

【问题讨论】:

    标签: amazon-ec2 amazon-kinesis amazon-kcl


    【解决方案1】:

    KCL 的设计使得每个分片仅由一个工作人员处理 - 内置的租约机制是提供此功能的关键。

    虽然在正常情况下,每个消费者只会收到与其拥有租约的分片有关的消息,但也有一些边缘情况(通常由连接超时/中断或主机死亡/停止响应引起)值得考虑的是,这可能会导致对来自流的消息进行双重处理。

    作为一个具体示例:如果工作人员未能续订租约(通常由工作人员主机和 DynamoDB 之间的连接问题引起),则可能另一个工作人员将获得该租约并开始处理,而原来的工作人员仍在工作

    【讨论】:

      【解决方案2】:

      该事件将仅由一个消费者消费

      【讨论】:

        猜你喜欢
        • 2012-09-24
        • 1970-01-01
        • 2014-05-11
        • 2013-05-09
        • 2020-05-30
        • 2018-09-16
        • 2016-01-17
        • 1970-01-01
        • 2014-11-23
        相关资源
        最近更新 更多