kafka分区分配策略
一个 consumer group 中有多个 consumer,一个 topic 有多个 partition,所以必然会涉及到 partition 的分配问题,即确定那个 partition 由哪个 consumer 来消费。Kafka 有两种分配策略,一是 RoundRobin(轮询),一是 Range(范围)。1)RoundRobin 按消费者组划分的两个主题,每一个主题里面三个分区,一个消费
·
一个 consumer group 中有多个 consumer,一个 topic 有多个 partition,所以必然会涉及
到 partition 的分配问题,即确定那个 partition 由哪个 consumer 来消费。
Kafka 有两种分配策略,一是 RoundRobin(轮询),一是 Range(范围)。
1)RoundRobin 按消费者组划分的
两个主题,每一个主题里面三个分区,一个消费者组有两个消费者,轮询的方式会利用哈希算法把这六个进行排序 ,然后轮流进两个消费者里面。这种方式的好处是各个消费者之间最多差一个,这就要保证消费组里面每一个消费者订阅的主题都是一样的,不然就可能出现错乱的情况,例如下面这种情况:
消费者也可以消费多个主题的内容,就像订阅多个公众号。
2)Range(默认用这个)
这个是按照单个主题分的,不是按照消费者组。7/3
这样A和B就会相差两个分区,随着主题的数目不断增大,消费者之间的数据量会悬差。
如果是A消费t1,B消费T2,就用Range,如果A和B订阅的主题一样就选轮询的方式。
更多推荐
已为社区贡献2条内容
所有评论(0)