2017-06-29 11 views
0

據我所知,如果我在我的主題之一使用鍵控消息,卡夫卡分區將始終發送具有相同鍵的消息到相同的分區,這將確保該特定的一組消息。消息到分區分配,排序和分區號調整大小

此外,默認分區程序最初將根據可用於該特定主題的分區數來決定發送消息的分區。就像messageKeyHash%numberOfPartitions一樣。

我的問題是,如果我有咱們5個分區一個主題,發送3消息是有密鑰A,他們都分配給分區0,後來我增加對於該主題的分區數量從5到5 + x,是否kafka「記住」帶密鑰A的消息應該分配給分區0,或者分區器可以使用密鑰A將消息發送到另一個分區?

換句話說:如果增加主題的分區數,在運行時,我會失去該主題中特定鍵的排序保證嗎?

如果是,我該如何解決這個問題?如果我需要訂購保證,應該總是過度分割?我應該實現一個定製的分區(我不明白)?

謝謝

回答

3

是如果增加分區的數量,你會失去這樣的保證,因爲有一個關鍵的信息可以去不同的分區,而不是分區0了。 通常,當您要創建主題時,過度分區或者至少知道最佳分區數是一件好事。