2017-05-25 126 views
2

我們正在設計一個Kafka集羣(至少3個節點),它將處理來自Web服務器陣列的事件。由於日誌大部分相同,因此我們計劃僅創建一個主題(例如 - webevents)負載平衡1主題Kafka集羣

我們期望來自服務器的大量流量。由於只有一個主題,所以會有一個單獨的領導者經紀人。在這種情況下,集羣如何平衡高流量?所有寫入請求將始終始終路由到領導代理,其他節點可能未充分利用。

外部硬件平衡器是否有助於解決此問題?或者,Kafka配置可以幫助在1個主題的羣集上平均分配寫請求嗎?

感謝, Sharod

回答

6

簡短的回答:一個主題可以有多個分區,每個分區,沒有話題,有一個領導者。領導者平均分佈在經紀人中間。所以,如果你的話題中有多個分區,你將有多個領導者,你的寫作將平均分配給經紀人。

您將擁有一個擁有大量分區的主題,您可以複製分區以實現數據的高可用性/持久性。

每個代理將保存均勻分佈數量的分區,並且這些分區中的每一個都可以是主題的領導者或副本。卡夫卡生產者(在您的案例中運行在您的網絡服務器上的卡夫卡客戶端)寫信給一位領導者,這提供了一種負載平衡生產的方式,以便每一次寫入都可以由單獨的經紀人和機器提供服務。

生產者做負載均衡選擇每個消息的目標分區。它可以基於消息密鑰完成,因此具有相同密鑰的所有消息都會轉到同一個分區,或者如果您未設置消息密鑰,則採用循環方式。

enter image description here

看看this不錯的職位。我從那裏拿走了圖表。

+0

謝謝澄清。很好的答案。 – Sharod

+0

謝謝@Sharod,如果您對答案感到滿意,請接受它作爲最佳答案。您也可以在接受其他答案之前等待其他答案,但請接受其中之一。 –

+0

非常有用的答案。 –