[英]Conditions in which Kafka Consumer (Group) triggers a rebalance
我正在瀏覽卡夫卡的消費者配置。
什么是引發再平衡的參數? 例如,以下參數是? 我們需要更改或默認的任何其他參數就足夠了
connections.max.idle.ms在此配置指定的毫秒數后關閉空閑連接。 長540000中
我們還有三個不同的主題
假設上述場景是有效的(不一定是最佳實踐) - 如果其中一個主題是非常輕的流量,它是否會導致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.ms和max.poll.records 。 它的手段很明顯。
從中我們也可以了解到,在輪詢之間做很多工作是不好的做法,開銷工作可能會阻止心跳並導致會話超時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.