簡體   English   中英

如何增加卡夫卡消費者沒有

[英]How to increase Kafka Consumers no

比如說 - Kafka 主題名稱 - topic_X topic_X 在 Kafka Broker 中有 500 個分區

現在我們為 Consumer_X 組設置了 500 個消費者來處理每個分區。

在哪里運行這 500 個消費者? 單機500線程? 這可能嗎 - 因為線程與核心有關系

如何做到這一點?

即使我們在 Consumer_X 組中減少到 100 個消費者(1 個消費者 =5 個分區),那么上述問題也同樣有效

請解釋一下

消費者組的主要目的是將工作拆分到多台機器上。 每個線程運行一個消費者也是可能的,但在高負載主題場景中,它不會帶來任何價值。

從 Kafka 輪詢記錄非常有效。 通常,處理它們是瓶頸。 因此,主要思想是將工作拆分到多台機器上,以便每個消費者應用程序都能跟上工作負載。

只有在您的用例中,分區和消費者之間的 1:1 關系才有意義:

  1. 記錄是均勻分布的:這意味着您的生產者必須對發送記錄時正在寫入的分區進行最低限度的控制。 在 Kafka 2.4 之后,這意味着很多,因為默認的分區器不再是 RoundRobin,而是 Sticky。 因此,您需要在生產者中顯式設置 RoundRobin 才能實現這一點。
  2. 甚至分區分配:在最近的 Kafka 版本中,將分區分配給消費者的默認行為發生了變化。 在引入增量/合作再平衡協議之后,有一種趨勢是分區被分配給相同的消費者,以減少再平衡期間的停頓。 使用更均勻的分配意味着放棄新協議的創新,因此,如果其中一個的活躍性受到損害,使您的消費者更有可能暫停。

除非您正在處理需要盡快處理每條記錄的高吞吐量用例,否則分區和消費者之間的 1:1 成本太高,因為每個消費者線程都不是免費的。 例如,不建議將它們放在同一個盒子中,因為您可能只有很少的內核可用並且更高的線程數會導致不斷的上下文切換,從而降低吞吐量。 解決方案是將這些線程分布在多個盒子上,但是它們……成本問題又來了。

我會衡量擁有 100:1 的效率。 這似乎是合理的,特別是如果入口吞吐量不高並且一些消費者滯后是可以容忍的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM