【问题标题】:Does one consumer thread against many partitions per topic in Kafka can cause latency?Kafka 中每个主题的一个消费者线程针对多个分区是否会导致延迟?
【发布时间】:2019-01-22 05:28:04
【问题描述】:

我们的kafka设置如下:

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

我们配置这种方式是为了能够在未来扩大规模。

当我们需要通过添加分区来扩大规模时,我们希望尽量减少重新平衡的时间,因为延迟对我们来说非常重要,并且在重新平衡期间,消息可能会一直卡住,直到协调阶段完成

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

【问题讨论】:

  • 超过延迟我消费会很慢
  • @deadpool 你能解释一下为什么吗?分区和线程之间的正确平衡是什么?
  • 由于有30个partition,并且只有一个consumer线程在消费,为了提高并行度,同组的每个线程可以消费一个partition
  • 但是如果我添加更多机器 it.will be.complex to.stop.threads 为了其他机器上的其他线程
  • 你在使用任何spring框架吗?即使您不需要在一个应用程序中创建多个线程

标签: apache-kafka kafka-consumer-api


【解决方案1】:

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

一般来说分区比较多,

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

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

更多详情请参考this blog post from Confluent.

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

【讨论】:

  • 唯一的问题是重新平衡会导致延迟。延迟是我们非常敏感的事情
猜你喜欢
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
相关资源
最近更新 更多