Kafka分割槽問題的記錄

2021-08-28 08:25:21 字數 942 閱讀 5434

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程式呼叫實現資料的消費。其底...