我有一個分區主題,它有X
分區。在Kafka中設計消息密鑰的最佳方式是什麼?
截至目前,在生成消息時,我創建了僅指定topic
和value
的卡夫卡ProducerRecord
。我沒有定義key
。 據我所知,我的消息將使用默認的內置分區器在分區間均勻分配。 另一方面,我有一個卡夫卡消費者的線程池。每個卡夫卡消費者都將在自己的專用線程中運行消耗該主題的消息。這些消費者中的每一個都被賦予相同的group.id
。這將允許消費並行消息。每個消費者將被分配公平份額的分區來讀取。
我希望我的消息有條不紊地被消費。我知道Kafka保證分區內的消息順序。所以,只要我想出了一個合適的密鑰結構,我就可以將我的消息進行分區,以便它們最終位於同一個分區中。在某種程度上,消息密鑰將消息分組並存儲在分區中。
它有道理嗎?
問:是否有機會由於設計錯誤的密鑰而導致分區不均勻?人們可能比其他人獲得更多的記錄。它是否會影響我的Kafka集羣的性能?消息密鑰設計的最佳實踐是什麼?
你已經提到過,消息的順序可能取決於生產者的配置方式,是否配置失敗嘗試後重試。是否有Kafka生產者配置參數?或重試策略是必須通過應用程序代碼進行思考和實施的嗎? –