2017-06-22 31 views
0

我看不到任何消息密鑰(org.apache.kafka.clients.producer.ProducerRecord.key),只是它們可能用於主題分區。卡夫卡的留言鍵有什麼特別之處嗎?

我可以自由地將任何我喜歡的數據放在關鍵字中,還是存在一些我應該符合的特殊語義?

該鍵看起來像是一個方便的標題,用於放置少量的元數據。這是一個壞主意嗎?

+0

它們在日誌壓縮過程中特別有用。 https://kafka.apache.org/documentation/#compaction –

+0

謝謝。如果每個消息密鑰都是唯一的,你知道密鑰的大小是否重要(例如64字節vs 200字節)? – Joe

回答

0

除了可用於主題分區之外,我看不到任何消息鍵(org.apache.kafka.clients.producer.ProducerRecord.key)。在卡夫卡

使用鍵的: 1.分區 2.保證日誌壓實過程中使用的分區 3中的排序,以創建偏移映射

可能更多,我還沒有學會。 。:-)

我可以自由地將任何我喜歡的數據放在關鍵字中,還是存在一些我應該符合的特殊語義?

鍵可以是任何類型的空值,字符串或任何其他具有有效序列化機制的表單。

你知道如果關鍵問題的大小(例如64個字節VS 200個字節)

關鍵的尺寸會事,因爲它會改變你的整個有效載荷大小。因此緩衝區中的每個消息利用率都會改變。我想不出任何其他影響。

+0

謝謝。日誌壓縮似乎非常重要! – Joe

+0

的確,密鑰用於確定分區(至少默認情況下),但在分區確定後,密鑰不再與分區內的排序有關。在多個生產者的情況下,分區內的排序只是順序的(對於給定的生產者)以及首先到達那裏的消息。當考慮批量和重試時,它只會變得更加混亂,但與密鑰本身無關。 –

+0

「壓縮」主題中不允許出現空鍵。 –