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...