2017-08-08 29 views
2

如上所述。假設我有3個經紀人。當我作爲消費者聯繫時,其中一個經紀人成爲集團協調員。然後我殺了一個經紀人(或者死了)。如果我嘗試重新連接到經紀人,我會得到協調員不可用的錯誤。當卡夫卡經紀人在消費者羣體協調方面失敗時會發生什麼?

卡夫卡如何知道經紀人死亡以及指定新協調員需要多長時間?它是如何配置的?

這應該在文檔中,但我找不到它。

+0

什麼是您使用的kafka版本? – marvel308

+0

您能否成功驗證組協調器故障恢復?我有一個包含3個代理的測試拓撲,一旦消費者組協調器崩潰,主題就會正確地重新平衡,但消費者組停止接收消息。使用版本0.11.0.1 – Yamada

+0

@Yamada是的,但它需要時間。它取決於您使用的客戶端在何種級別上運行。可以依靠協調員,或者在客戶端手動完成。我遇到了這兩個問題,並且導致了頭痛的問題。 – deitch

回答

0

我相信一個動物園管理員處理你問

阿帕奇卡夫卡的關鍵依賴一切都是Apache的動物園管理員,這是一個分佈式的配置和同步服務。 Zookeeper作爲卡夫卡經紀人和消費者之間的協調接口。卡夫卡服務器通過Zookeeper集羣共享信息。 Kafka在Zookeeper中存儲基本元數據,例如有關主題,經紀人,消費者偏移量(隊列讀取器)等的信息。

由於所有關鍵信息都存儲在Zookeeper中,並且它通常在其整個集羣中複製這些數據,所以Kafka broker/Zookeeper的故障不會影響Kafka集羣的狀態。一旦Zookeeper重新啓動,Kafka將恢復狀態。這給Kafka帶來零停機時間。卡夫卡經紀人之間的領導者選舉也是通過在領導失敗的情況下使用Zookeeper完成的。
我建議去通過博客

The role of Apache ZooKeeper in Apache Kafka

+0

@ marvel208 consumer_offsets存儲在最新版本的Kafka 0.11.0.0版本的代理級別。所以,代理狀態可以影響整個集羣的狀態。 – FindingTheOne

+0

@ marvel308不是真的。 Zookeeper只是狀態存儲(複製+一些邏輯)。但一個真正的經紀人擔任協調員。我想知道卡夫卡如何管理對協調員領導失去的承認,如何分配一個新的協調員,以及如何配置它。 – deitch

+0

每個經紀人都有關於主題(和分區)及其領導人列表的信息,每當新領導人被選舉或分區數目發生變化時,動物園管理人員都會隨時更新。 – marvel308

0

我會推薦閱讀以下StackOverflow的後和卡夫卡Confluence維客瞭解內部。

Coordinator Failover

Group Coordinator and Consumer Group

Kafka Client-side Assignment Proposal

有卡夫卡即__consumer_offsets的新版本輕微變化(用於存儲消費者的偏移)被存儲在代理而不是動物園管理員和協調+動物園管理員是用於維護消費者羣體。

+0

中詢問版本號時沒有描述當協調員的經紀人失敗時會發生什麼情況。 – deitch

+0

我在這個[link](https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Detailed+Consumer+Coordinator+Design#KafkaDetailedConsumerCoordinatorDesign-10.OnCoordinatorFailover)上找到了協調器故障切換的內容。 – FindingTheOne

+0

更接近。我正在尋找實際的機制和配置控制。 – deitch