(3)Kafka消费者工作机制详解

Kafka设计原理总结

(1)Kafka设计架构综述

(2)Kafka中生产者工作机制详解

(3)Kafka 消费者工作机制详解

(4)Kafka高效读写原理、选举过程和事务实现

 

1.消费方式(pull vs push)


  • 传统Push模式虽然实时性高,但是容易造成consumer来不及处理消息,导致拒绝服务及网络拥塞。
  • consumer采用pull(拉)模式从broker读取数据,这样可以控制消费速度。
  • pull缺点:如果kafka没有数据,消费者可能会限于获取空数据的循环中。因此可以设置timeout参数,如果没有数据可供消费,consumer会等待一段时间再返回拿。

2.消费时分区分配策略


    由于CG中有多个 consumer,一个 topic 有多个 partition。那么需要策略来决定哪个partition 由哪个 consumer 来消费。

(1)RoundRobin(轮询)

    简而言之,有3个消费者,则当前分区号%消费者数量=当前分区所属的消费者数量。
    特点: 适合负责无规律的分区数据,或者每个分区数据量不均匀的情况

(2)Range

   按照范围划分,7/3=2,以每两个分区为一组分配,最后一个分区6单独分配给consumer-0。
    特点: 适合各分区内数据均匀情况

(3)消费者数量变化分区策略

    如果在分配时消费者数量突然变更,不管是RoundRobin还是Range都要重新计算再分配

3.offset维护


(1)offset作用

    如果Consumer在消费过程中宕机,等恢复后, offset可以帮助consumer从故障的位置继续消费

(2)offset存储

    Kafka0.9版本之前, consumer默认将 offset 保存在 ZK 中,从 0.9 版本开始,consumer 默认将 offset 保存在 Kafka 一个内置的 topic 中该 topic 为__consumer_offsets。
    通过参数可以修改存储位置:
    exclude.internal.topics=false  #不存储在内置Topic中

4.GC中不同消费者限制


(1)同一时刻,GC中只有一个Consumer消费。
(2)同一CG中,一个分区只能由一个消费者消费。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值