簡體   English   中英

如何動態擴展Kafka流處理?

[英]How to scale Kafka stream processing dynamically?

我有一個固定數量的主題分區。 生產者在一天中的不同時間以不同的速率生產數據。

我想根據一天中的小時動態地添加消費者,以便可以盡快處理記錄。

例如,我有一個主題的10個分區。 我想在非高峰時段部署5個消費者,在高峰時段部署20個消費者。

我的問題是,當我有20個消費者時,每個消費者都將收到重復的記錄,這是我想避免的。 我只想處理唯一記錄,以加快記錄處理速度。

有什么機制可以做到這一點嗎?

如果您有N個分區,則在同一使用者組中最多可以有N個使用者,每個使用者都從一個分區讀取。 當使用者少於分區時,某些使用者將從多個分區中讀取數據。 另外,如果您的使用者數量大於分區數量,則某些使用者將處於非活動狀態,並且根本不會收到任何消息。

因此,如果要啟動20個使用者,則需要將主題的分區數增加到至少20個,否則,您的10個使用者將處於非活動狀態。

關於您提到的重復項 ,如果所有使用者都屬於同一組,則每條消息將只使用一次。

總而言之,

  1. 將主題的分區數增加到20。
  2. 創建一種機制,該機制將根據高峰/非高峰時間創建並殺死消費者,並確保在您踢消費者時,它屬於現有的消費者組,因此消息僅被消費一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM