kafka的分割槽模式?

2022-05-03 19:27:08 字數 993 閱讀 1400

當別人問這個問題的時候,別人肯定是想你是否看過原始碼。是否針對不同場景改過kafka的分割槽模式

這是別人最想知道的是,你的message如何負載均衡的傳送給topic的partition

我們用kafka的時候,可以動態指定partition,也可以不指定partition

當我們動態指定了partition的時候,kafka會將訊息傳送到指定的partition

如果沒有指定partition

這就是關鍵了,

如何讓這些訊息,均衡的傳送給每個partition

先看看傳送訊息的方式

kafka首先判斷partition,如果有partition就傳送到指定的partition

如果沒有,就看有沒有key

如果有key就將,key弄成位元組,然後用個演算法,搞成整數,然後除以partition的個數,最後的餘數就是partition的所在

如果partition,和key都沒有的時候,原始碼弄了乙個int型別的counter,從0開始,每來一條訊息就累加,用counter除以partition的個數的餘數就是partition的所在

這樣就打到了每個partition的均衡了

【大俠】 ‭‎

2017/8/25

14:02:17

當然了,我們也可以自己定義partition

某些人用partition指定分割槽數發訊息,如果又有人不指定partition,key,就會發生負責不均衡

你設定了key,只能保證你自己均衡了

但是要是有其他人指定某個partition發訊息呢

【大俠】 ‭‎

2017/8/25

14:09:14

別個是,

1,2,3,4

,這是key的kafka的分的partition,你指定了就變成了1111

【大俠】 ‭‎

2017/8/25

14:09:40

很多公司,都重寫了kafka的分割槽

kafka 修改分割槽 kafka分割槽

一 topic下引入partition的作用 topic是邏輯的概念,partition是物理的概念。為了效能考慮,如果topic內的訊息只存於乙個broker,那這個broker會成為瓶頸,無法做到水平擴充套件。kafka通過演算法盡可能的把partition分配到集群的不同伺服器上。partit...

kafka 分割槽數

kafka的分割槽,相當於把乙個topic再細分成了多個通道 對應 多個執行緒 部署的時候盡量做到乙個消費者 執行緒 對應乙個分割槽。如果你的分割槽數是n,那麼最好執行緒數也保持為n。kafkastream 它是consumer的關鍵類,提供了遍歷方法用於consumer程式呼叫實現資料的消費。其底...

Kafka分割槽問題的記錄

kafka分割槽及相關的問題挺多的,目前就近期遇到的一些問題做乙個總結。建立生產者時預設分割槽為0,也可以通過手動指定分割槽 預設 producerrecordrecord new producerrecord topic,key,msg 手動指定分割槽為1 producerrecordrecord...