kafka-consumer深度剖析

Producer通过主动Push的方式将消息发布到Broker ,Consumer通过Pull从Broker消费数据,Pull的好处:

  • Consumer按实际处理能力获取相应量的数据;不会被压垮      
  • Broker实现简单                                                         
  • 如果处理不好,实时性相对不足

Kafka读写机制

每个partition有一个leader 和若干个Follower(replica),Kafka数据的读写都是找leader来完成的,那leader 的负载怎么解决呢?leader和follower是partition级别的,一个topic可以创建多个partition,是这样解决负载问题的。

Consumer Group High Level Consumer

  • 高层抽象,屏蔽掉细节,提供丰富的语义,适合大多数应用场景
  • 客户只需要从Kafka顺序读取数据,而无序关心offset等具体细节
  • 语义级别控制同一条消息只被某一个Consumer消费或被所有Consumer消费Low LevelConsumer

Consumer Group

  • 使用High Level Consumer的客户程序提供给Kafka一个名字,这个名字被称为Consumer Group。
  • Consumer Group是整个Kafka集群全局唯一的,而非针对某个Topic的。
  • 每个High Level Consumer实例都属于一个ConsumerGroup,若不指定则属于默认的Group。
  • High Level Consumer从某个Partition读取的最后一条消息的offset会被存于kafka的一个专用topic中。
  • 消息被消费后,并不会被删除,只是相应的offset加一
  • 对于每条消息,在同一个Consumer Group里只会被一个Consumer消费
  • 不同Consumer Group可消费同一条消息

Consumer Balance

  • 将Topic下的所有Partirtion排序
  • 对Consumer Group下所有Consumer排序
  • N=size(P)/size(C),向上取整
  • 将N个Partition分配给C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值