kafka分割槽及相關的問題挺多的,目前就近期遇到的一些問題做乙個總結。
建立生產者時預設分割槽為0,也可以通過手動指定分割槽
//預設
producerrecordrecord = new producerrecord<>(topic, key, msg);
//手動指定分割槽為1
producerrecordrecord = new producerrecord<>(topic,1, key, msg);
消費者可以通過低階api手動拉取指定分割槽
listtopicpartitionlist= new arraylist<>();
//手動指定分割槽為0
topicpartitionlist.add(new topicpartition(consumer_kafka_topic,0));
this.consumer.assign(topicpartitionlist);
高階api會自動根據策略選擇分割槽,配置策略如下:
partition.assignment.strategy
partionassignor根據給定的消費者和主題,決定哪些分割槽應該被分配給哪個消費者。kafka有兩個預設的分配策略。預設策略為range。
range;該策略會把主題連續的若干個分割槽分配給消費者。
roundrobin:該策略會把主題所有分割槽逐個分配給消費者。
補充問題(待驗證)
1,高階api自動提交後同時消費兩個分割槽會以何種策略消費,如何保證偏移量不出現錯誤,能在該種情境下手動非同步提交偏移量嗎。
2,高階api手動選擇方式和手動配置策略。
3,同時消費多個topic時的上述問題
其他關於kafka的內容
kafka消費者的偏移量和高階/簡單消費者
使kafka每次讀取訊息到最新傳送訊息的解決方案
kafka 修改分割槽 kafka分割槽
一 topic下引入partition的作用 topic是邏輯的概念,partition是物理的概念。為了效能考慮,如果topic內的訊息只存於乙個broker,那這個broker會成為瓶頸,無法做到水平擴充套件。kafka通過演算法盡可能的把partition分配到集群的不同伺服器上。partit...
kafka的分割槽模式?
當別人問這個問題的時候,別人肯定是想你是否看過原始碼。是否針對不同場景改過kafka的分割槽模式 這是別人最想知道的是,你的message如何負載均衡的傳送給topic的partition 我們用kafka的時候,可以動態指定partition,也可以不指定partition 當我們動態指定了par...
kafka 分割槽數
kafka的分割槽,相當於把乙個topic再細分成了多個通道 對應 多個執行緒 部署的時候盡量做到乙個消費者 執行緒 對應乙個分割槽。如果你的分割槽數是n,那麼最好執行緒數也保持為n。kafkastream 它是consumer的關鍵類,提供了遍歷方法用於consumer程式呼叫實現資料的消費。其底...