代码之家  ›  专栏  ›  技术社区  ›  rayman

在Kafka中,每个主题针对多个分区的一个使用者线程是否会导致延迟?

  •  1
  • rayman  · 技术社区  · 6 年前

    我们的卡夫卡设置如下:

    1. 每个主题30个分区
    2. 1消费线

    我们用这种方式配置,以便将来能够扩大规模。

    我们希望在需要通过添加分区来扩展时最小化重新平衡的时间,因为延迟对我们非常重要,并且在重新平衡期间,消息可能会一直保留到完成协调阶段。

    每个主题有一个具有多个分区的消费线程会以某种方式影响整个消息传递消耗延迟?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Giorgos Myrianthous    6 年前

    但是,Kafka集群中的更多分区会导致更高的吞吐量,您需要注意分区的数量也会影响可用性和延迟。

    通常更多的分区,

    • 提高吞吐量
    • 需要更多打开的文件句柄
    • 可能增加不可用性
    • 可能会增加端到端延迟
    • 可能需要更多的内存在客户端

    您需要研究权衡,并确保选择了满足吞吐量、延迟和所需资源需求的分区数量。

    有关更多详细信息,请参阅 this blog post from Confluent.

    我的意见是:做些测试,写下你的发现。例如,尝试在一个主题上运行一个消费者,主题为5、10、15,…分区,测量影响并选择满足您需求的配置。最后问问自己你是否需要 x 分区。最后,如果您需要更多的分区,就不必担心重新平衡等问题。Kafka的设计是可扩展的。