這種設計讓一個topic的消息可以分散存儲到多個broker服務器裏的partition分區中,消費組裏面的消費者又能夠同時消費不一樣的partition分區。
解決問題:
1.實現了負載均衡(分佈在多個broker上,能夠同時對外提供服務)。
2.多消費者併發消費,提高kafka的吞吐量。服務器
現有兩個主題topic一、topic2,各自都有三個partition。兩個消費者併發
[topic1_partition0,topic1_partition1,topic1_partition2]
[topic2_partition0,topic2_partition1,topic2_partition2]負載均衡
TopicAndPartition(string Topic,integer Partition);
TopicAndPartition對象,多個主題總體排序
[topic1_partition0,topic1_partition1,topic1_partition2,topic2_partition0,topic2_partition1,topic2_partition2]ide
優勢:多個消費者消費分區最多相差一個,相對均衡。設計
問題:consumer1可能徹底被分配到Topic1,Consumer2徹底消費Topic2。code
總結:輪詢是按照消費者組來劃分的,須要保證當前消費組裏面的消費者訂閱同一個topic。對象
consumer1 消費 topic1_partition0,topic1_partition1,
consumer2消費 topic1_partition2
consumer1再消費topic2_partition0,topic2_partition1
consumer2再消費topic2_partition2排序
問題:consumer2消費的少
總結:範圍是按照主題來劃分的。kafka
kafka默認採用的是range範圍string