如上所述。假設我有3個經紀人。當我作爲消費者聯繫時,其中一個經紀人成爲集團協調員。然後我殺了一個經紀人(或者死了)。如果我嘗試重新連接到經紀人,我會得到協調員不可用的錯誤。當卡夫卡經紀人在消費者羣體協調方面失敗時會發生什麼?
卡夫卡如何知道經紀人死亡以及指定新協調員需要多長時間?它是如何配置的?
這應該在文檔中,但我找不到它。
如上所述。假設我有3個經紀人。當我作爲消費者聯繫時,其中一個經紀人成爲集團協調員。然後我殺了一個經紀人(或者死了)。如果我嘗試重新連接到經紀人,我會得到協調員不可用的錯誤。當卡夫卡經紀人在消費者羣體協調方面失敗時會發生什麼?
卡夫卡如何知道經紀人死亡以及指定新協調員需要多長時間?它是如何配置的?
這應該在文檔中,但我找不到它。
我相信一個動物園管理員處理你問
阿帕奇卡夫卡的關鍵依賴一切都是Apache的動物園管理員,這是一個分佈式的配置和同步服務。 Zookeeper作爲卡夫卡經紀人和消費者之間的協調接口。卡夫卡服務器通過Zookeeper集羣共享信息。 Kafka在Zookeeper中存儲基本元數據,例如有關主題,經紀人,消費者偏移量(隊列讀取器)等的信息。
由於所有關鍵信息都存儲在Zookeeper中,並且它通常在其整個集羣中複製這些數據,所以Kafka broker/Zookeeper的故障不會影響Kafka集羣的狀態。一旦Zookeeper重新啓動,Kafka將恢復狀態。這給Kafka帶來零停機時間。卡夫卡經紀人之間的領導者選舉也是通過在領導失敗的情況下使用Zookeeper完成的。
我建議去通過博客
@ marvel208 consumer_offsets存儲在最新版本的Kafka 0.11.0.0版本的代理級別。所以,代理狀態可以影響整個集羣的狀態。 – FindingTheOne
@ marvel308不是真的。 Zookeeper只是狀態存儲(複製+一些邏輯)。但一個真正的經紀人擔任協調員。我想知道卡夫卡如何管理對協調員領導失去的承認,如何分配一個新的協調員,以及如何配置它。 – deitch
每個經紀人都有關於主題(和分區)及其領導人列表的信息,每當新領導人被選舉或分區數目發生變化時,動物園管理人員都會隨時更新。 – marvel308
我會推薦閱讀以下StackOverflow的後和卡夫卡Confluence維客瞭解內部。
Group Coordinator and Consumer Group
Kafka Client-side Assignment Proposal
有卡夫卡即__consumer_offsets的新版本輕微變化(用於存儲消費者的偏移)被存儲在代理而不是動物園管理員和協調+動物園管理員是用於維護消費者羣體。
中詢問版本號時沒有描述當協調員的經紀人失敗時會發生什麼情況。 – deitch
我在這個[link](https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Detailed+Consumer+Coordinator+Design#KafkaDetailedConsumerCoordinatorDesign-10.OnCoordinatorFailover)上找到了協調器故障切換的內容。 – FindingTheOne
更接近。我正在尋找實際的機制和配置控制。 – deitch
什麼是您使用的kafka版本? – marvel308
您能否成功驗證組協調器故障恢復?我有一個包含3個代理的測試拓撲,一旦消費者組協調器崩潰,主題就會正確地重新平衡,但消費者組停止接收消息。使用版本0.11.0.1 – Yamada
@Yamada是的,但它需要時間。它取決於您使用的客戶端在何種級別上運行。可以依靠協調員,或者在客戶端手動完成。我遇到了這兩個問題,並且導致了頭痛的問題。 – deitch