Kafka分割槽策略

所謂分割槽策略是決定生產者將訊息傳送到哪個分割槽的演算法。Kafka 為我們提供了預設的分割槽策略,同時它也支援你自定義分割槽策略。

常見的分割槽策略包含以下幾種:輪詢策略隨機策略按訊息鍵保序策略

輪詢策略

將訊息順序分配到各個分割槽中,假設一個主題下有三個分割槽,第一條訊息將被髮送到分割槽0,第二條訊息被髮送到分割槽1,第三條訊息被髮送到分割槽2,以此類推,第四條訊息將被髮送到分割槽0。如下圖所示

輪詢策略有非常優秀的負載均衡表現,它總是能保證訊息最大限度地被平均分配到所有分割槽上,故預設情況下它是最合理的分割槽策略,也是我們最常用的分割槽策略之一

隨機策略

將訊息隨機地放到任意一個分割槽上,本質上看隨機策略也是力求將資料均勻地打散到各個分割槽,但從實際表現來看,它要遜於輪詢策略,所以如果追求資料的均勻分佈,還是使用輪詢策略比較好。事實上,隨機策略是老版本生產者使用的分割槽策略,在新版本中已經改為輪詢了。

按訊息鍵保序策略

Kafka允許為每條訊息建立訊息鍵,稱為Key,每個Key可以代表具體的業務含義,如業務ID,使用者ID等。一旦訊息被定義了 Key,那麼你就可以保證同一個 Key 的所有訊息都進入到相同的分割槽裡面,由於每個分割槽下的訊息處理都是有順序的,故這個策略被稱為按訊息鍵保序策略,如下圖所示。