【问题标题】:How to scale kafka consumers in Node.js on Kubernetes如何在 Kubernetes 上的 Node.js 中扩展 kafka 消费者
【发布时间】:2021-01-18 01:51:23
【问题描述】:

有一些设计问题,希望根据您使用 Kafka 和 KafkaJS(任何此类库)的经验提供反馈:

  1. 分区是在 Kafka 中扩展的一种方式吗?如果我创建 3 个分区并且只有 1 个使用者,我是否会在这 2 个未使用的分区中丢失消息?如果我启动 2 个新消费者,KafkaJS 是否会从专用分区管理新消费者的分配? eachBatch是在消费者中实现并行处理的唯一方法吗,可以用eachMessage来做,并控制消息的处理速率吗?
  2. 推荐的扩展消费者的方法是什么?分区/异步并行/增加消费者节点等?目前,我有 1 个节点每分钟消耗约 30 条消息,我的目标是扩展消费者,因为预期速率可能在约 2000 条以上。

【问题讨论】:

  • 每分钟约 30 条消息对于单个消费者来说确实很慢......但是,是的,分区是比例因子,每个分区 1:1 的消费者会消耗最快

标签: node.js apache-kafka kafkajs


【解决方案1】:

我将尝试对您的问题给出一般性的回答:

  • 分区是 Kafka 的一种扩展方式吗?

    • 是的,分区将允许拆分数据和水平扩展
  • 如果我创建 3 个分区且只有 1 个使用者,我是否会在这 2 个未使用的分区中丢失消息?

    • 不,消费者将从所有 3 个分区中读取数据
  • 如果我启动 2 个新消费者,KafkaJS 是否会从专用分区管理新消费者的分配?

    • 是的,当旋转新的消费者时,他们会进行通信,并且会有一个重新平衡过程来为每个消费者分配 1 个分区
  • eachBatch 是在消费者中实现并行处理的唯一方法吗,可以用 eachMessage 完成并控制消息处理的速率吗?

    • 很遗憾,我没有足够的知识来回答这个问题:(
  • 推荐的扩大消费者规模的方法是什么?

    • 最好的方法是在消费者和分区之间建立 1:1 的关系,以便在需要时启动新的消费者。为什么?基本上,它比并发更容易处理

【讨论】:

    猜你喜欢
    • 2016-07-12
    • 2020-05-26
    • 2018-11-09
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多