2017-08-25 65 views
3

我正在瀏覽卡夫卡的消費者配置。卡夫卡消費品(集團)觸發重新平衡的條件

是什麼將觸發一個再平衡的參數?例如下面的參數將會是?任何其他我們需要更改或默認的參數都可以滿足要求

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

另外,我們有三個不同的主題

  1. 它是一個壞主意,有相同的消費集團(相同的ID)從多個主題消費。
  2. 假設上述情況是否有效(不一定是最佳實踐) - 如果話題之一的話務量很小,是否會導致消費者羣體重新平衡。

    後續問題 - 影響再平衡及其表現的因素有哪些?

+0

你問關於最新版本0.11嗎? –

+0

@HansJespersen我們在0.10.x –

回答

1

這些條件將觸發一組再平衡:對任何主題

主題創建的訂閱列表的改變

分區數或刪除

現有消費羣成員死亡

新成員通過加入API

它是一個壞主意,有相同的消費集團(相同的ID)從多個主題耗時添加到現有的消費羣。

至少它是有效的,對於好或壞,這取決於你的詳細情況。 這是由官方Java客戶端API的支持,看到這樣的方法定義:

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

它接受主題的集合。

如果其中一個話題的話務量很輕,是否會導致消費者羣體重新平衡。

不,因爲沒有列出條件。如果我們從主題方面考慮它。只有在主題被刪除或分區計數改變時,纔會發生rebalcance。

更新。

感謝@Hans Jespersen對session和hearbeat的評論。

這是卡夫卡消費者的Javadoc引用:

訂閱一組主題之後,當調用輪詢(長)消費者將自動加入該羣。民意調查API旨在確保消費者的生活。只要您繼續調用投票,消費者就會留在該組中,並繼續接收來自其分配的分區的消息。 在封面下方,輪詢API向服務器發送定期心跳;當你停止調用投票(可能是因爲引發異常),那麼將不會發送心跳。如果在服務器收到檢測信號之前經過配置的會話超時的一段時間,則消費者將被退出該組並且其分區將被重新分配。

並在你的問題,你問什麼會觸發再平衡

在這種情況下的參數,有兩個CONFIGS已與再平衡的關係。它是session.timeout.msmax.poll.records。其手段是顯而易見的。

由此我們也可以知道,在投票之間做很多工作是一種不好的做法,開銷工作可能會阻止心跳並導致會話超時。

+1

在最大輪詢間隔或會話超時範圍內也無法發送檢測信號或調用poll()。 –

+1

爲什麼從一個消費羣體的多個主題中消費不好?似乎具體情況。 – PragmaticProgrammer

+1

@亨斯柏斯恩,是的,謝謝你的分享。這種情況可以包含在「消費者組的現有成員死亡」狀況中。你怎麼看? – GuangshengZuo