簡體   English   中英

Kafka Consumer(Group)觸發重新平衡的條件

[英]Conditions in which Kafka Consumer (Group) triggers a rebalance

我正在瀏覽卡夫卡的消費者配置。

什么是引發再平衡的參數? 例如,以下參數是? 我們需要更改或默認的任何其他參數就足夠了

connections.max.idle.ms在此配置指定的毫秒數后關閉空閑連接。 長540000中

我們還有三個不同的主題

  1. 讓多個主題使用相同的使用者組(相同ID)是一個壞主意。
  2. 假設上述場景是有效的(不一定是最佳實踐) - 如果其中一個主題是非常輕的流量,它是否會導致Consumer組重新平衡。

    后續問題 - 哪些因素會影響再平衡及其表現。

這些條件將觸發組重新平衡:

任何訂閱的主題列表的分區數都會發生變化

主題已創建或刪除

消費者組織的現有成員死亡

通過連接API將新成員添加到現有使用者組

讓多個主題使用相同的使用者組(相同ID)是一個壞主意。

至少它是有效的,無論好壞,這取決於你的詳細情況。 這是官方java客戶端api支持的,請參閱此方法定義:

public void subscribe(Collection<String> topics,
             ConsumerRebalanceListener listener)

它接受一系列主題。

如果其中一個主題是非常輕量級的流量,它是否會導致Consumer組重新平衡。

不,因為這沒有在條件中列出。 如果我們只從主題方面考慮它。 只有當主題被刪除或分區計數發生變化時,才會發生贖罪。

更新。

感謝@Hans Jespersen關於會話和聽力的評論。

這是由kafka Consumer javadoc引用的:

訂閱一組主題后,當調用poll(long)時,使用者將自動加入該組。 poll API旨在確保消費者的活力。 只要您繼續調用poll,消費者將留在該組中並繼續從分配的分區接收消息。 在封面下,poll API會定期向服務器發送心跳 ; 當你停止調用poll(可能是因為拋出了異常)時,就不會發送心跳。 如果在服務器收到心跳之前經過了配置的會話超時的一段時間 ,那么消費者將被踢出組,並且將重新分配其分區。

在您的問題中,您會詢問觸發重新平衡的參數是什么

在這種情況下,有兩個配置與重新平衡有關。 它是session.timeout.msmax.poll.records 它的手段很明顯。

從中我們也可以了解到,在輪詢之間做很多工作是不好的做法,開銷工作可能會阻止心跳並導致會話超時。

暫無
暫無

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

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