kafka中處理超大訊息的一些考慮

2022-06-27 07:36:13 字數 638 閱讀 8333

kafka設計的初衷是迅速處理短小的訊息,一般10k大小的訊息吞吐效能最好(可參見linkedin的kafka效能測試)。但有時候,我們需要處理更大的訊息,比如xml文件或json內容,乙個訊息差不多有10-100m,這種情況下,kakfa應該如何處理?

針對這個問題,有以下幾個建議:

最好的方法是不直接傳送這些大的資料。如果有共享儲存,如nas, hdfs, s3等,可以把這些大的檔案存放到共享儲存,然後使用kafka來傳送檔案的位置資訊。

第二個方法是,將大的訊息資料切片或切塊,在生產端將資料切片為10k大小,使用分割槽主鍵確保乙個大訊息的所有部分會被傳送到同乙個kafka分割槽(這樣每一部分的拆分順序得以保留),如此以來,當消費端使用時會將這些部分重新還原為原始的訊息。

不過如果上述方法都不是你需要的,而你最終還是希望傳送大的訊息,那麼,則可以在kafka中設定下面一些引數:

broker 配置:

consumer 配置:

所以,如果你一定要選擇kafka來傳送大的訊息,還有些事項需要考慮。要傳送大的訊息,不是當出現問題之後再來考慮如何解決,而是在一開始設計的時候,就要考慮到大訊息對集群和主題的影響。

一切的一切,都需要在權衡利弊之後,再決定選用哪個最合適的方案。

kafka中處理超大訊息的一些處理

kafka設計的初衷是迅速處理短小的訊息,一般10k大小的訊息吞吐效能最好 可參見linkedin的kafka效能測試 但有時候,我們需要處理更大的訊息,比如xml文件或json內容,乙個訊息差不多有10 100m,這種情況下,kakfa應該如何處理?針對這個問題,有以下幾個建議 不過如果上述方法都...

kafka的一些引數

python操作kafka 需求,如果topic不存在,不允許自動建立 每個topic的分割槽個數,更 多的partition會產生更多的segment file num.partitions 2 是否允許自動建立topic 若是false,就需要通過命令建立topic auto.create.to...

Kafka中關於分割槽的一些理解

分割槽和主題 一般我們會在乙個topic下設定多個分割槽,這樣多個分割槽對應多個消費者,以此可以提高kafka的吞吐量,相當於處理訊息時達到了多執行緒並行執行的效果。分割槽和訊息 當生產者要向某個主題傳送訊息時,生產者會先將訊息序列化處理,然後根據topic,serializedkey,serial...