訊息磁區策略
這里不是說Kafka的主題為什么要磁區,而是說在磁區的結構下,如何讓具有某種特點的訊息發送到特定磁區,
這里有一個很明顯的問題,就是主題磁區,那么生產者發送的訊息到底被發送到了哪個磁區呢?一般我們都知道有輪詢機制或者是隨機機制,這兩種機制都比較好理解,而且Kafka也都支持,在新版本中默認使用的是輪詢機制,如下圖所示:

但是在某些場景下我們需要控制某種型別的訊息發送到特定磁區或者說我們需要嚴格的進行訊息的順序消費,也就是說這些訊息有因果關系,要想消費下一條必須先要消費前一條,消費者消費某個磁區的訊息肯定是順序消費,但是由于訊息不是順序進入磁區的,你可以從上圖看到0002訊息并不是在0001訊息之后,這就導致有可能消費者程式先消費了0002,如果這些訊息沒有因果關系那么則沒問題,只要保證消費者都消費完就可以了至于先后順序無需關心,但是如果有因果關系就不行,這樣會造成混亂,
要想實作因果關系的消費可以有2個辦法
單磁區模式

我們創建一個具有單磁區的主題,這樣訊息就順序進入磁區,消費者也就順序消費,這樣實作了全域順性,不過這樣就降低了吞吐量,
基于訊息Key的磁區策略

這種就是為訊息設定Key,Key相同的發送到同一磁區,要注意這里雖然是多個磁區看似吞吐量增加,但是你可以設想一下如果你的因果訊息Key都一樣那么這種模式和上面的單磁區模式其實一樣,如果你的因果訊息可以繼續細分為幾個不同的Key,那么在多磁區模式下相對于整體來講吞吐量是提高的,
如何使用
kafka-python 模塊的使用
Java客戶端的使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500102.html
標籤:其他
下一篇:day04-Java基礎語法
