码迷,mamicode.com
首页 > 其他好文 > 详细

【kafka】消费者对应的分配partition分区策略

时间:2020-08-01 12:40:15      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:解决   range   排序   不同的   负载均衡   消费   总结   消息   增加   

  • 一个topic有多个partition,且partition分布在多个broker上
  • 一个消费组有多个consumer
  • 这种设计让一个topic的消息能够分散存储到多个broker服务器里的partition分区中,消费组里面的消费者又可以同时消费不同的partition分区。
    解决问题:
    1.实现了负载均衡(分布在多个broker上,可以同时对外提供服务)。
    2.多消费者并发消费,提升kafka的吞吐量。


    消费者的分区策略:

    现有两个主题topic1、topic2,各自都有三个partition。两个消费者

    [topic1_partition0,topic1_partition1,topic1_partition2]
    [topic2_partition0,topic2_partition1,topic2_partition2]

    • RoundRobin 轮询,按照消费组来份,需要消费者组里面的所有的消费者订阅同一个主题。
    TopicAndPartition(string Topic,integer Partition);

    TopicAndPartition对象,多个主题整体排序
    [topic1_partition0,topic1_partition1,topic1_partition2,topic2_partition0,topic2_partition1,topic2_partition2]

    优点:多个消费者消费分区最多相差一个,相对均衡。

    问题:consumer1可能完全被分配到Topic1,Consumer2完全消费Topic2。

    总结:轮询是按照消费者组来划分的,需要保证当前消费组里面的消费者订阅同一个topic。

    • Range 范围,按照topic主题来分划分。

    consumer1 消费 topic1_partition0,topic1_partition1,
    consumer2消费 topic1_partition2
    consumer1再消费topic2_partition0,topic2_partition1
    consumer2再消费topic2_partition2

    问题:consumer2消费的少
    总结:范围是按照主题来划分的。

    • kafka默认采用的是range范围

    • 什么时候会触发策略?
      消费者组里面的消费者的数量发生改变的时候(增加/减少消费者),重触发重新分配策略。

    【kafka】消费者对应的分配partition分区策略

    标签:解决   range   排序   不同的   负载均衡   消费   总结   消息   增加   

    原文地址:https://blog.51cto.com/phpme/2515433

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!