1. 程式人生 > >kafka的分區模式?

kafka的分區模式?

我們 負責 所在 當我 kafka 模式 log div 如果

當別人問這個問題的時候,別人肯定是想你是否看過源碼。是否針對不同場景改過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的分區模式?