网站带做收录排名,织梦怎么设置网站首页,vi形象设计企业vi设计公司,郑州新闻发布会1 Kafka消费方式
#xff08;1#xff09;pull#xff08;拉#xff09;模式#xff1a;消费者从broker中主动拉取数据。#xff08;Kafka中使用#xff09; 不足#xff1a;如果Kafka中没有数据#xff0c;消费者可能会陷入循环#xff0c;一直返回空数据。 #…1 Kafka消费方式
1pull拉模式消费者从broker中主动拉取数据。Kafka中使用 不足如果Kafka中没有数据消费者可能会陷入循环一直返回空数据。 2push推模式Kafka中不适用此种方式因为broker决定消息发送速率很难适应所有消费者的消费速度。
2 Kafka消费者工作流程
2.1 消费者总体工作流程
1生产者向分区中的每个Leader发送一批批的数据。
2Follower主动与Leader同步数据保证数据的可靠性。
3消费者可以消费某一个分区的数据一个消费者也可以消费多个分区的数据消费者与消费者之间是完全独立的。
4每一个分区的数据只能由消费者组中的一个消费者进行消费。把消费者组当成一个独立的消费者同一个分区不能由同一个消费者组里面两个及以上的消费者消费
5消费到哪里的具体位置为offsetoffset保存在系统主题_consumer_offsets中。Kafka的底层数据是持久化到磁盘上
2.2 消费者组原理 Consumer GroupCG消费者组由多个consumer组成。形成一个消费者组的条件是所有消费者的groupid相同。 1消费者组内每个消费者负责消费不同分区的数据一个分区只能由一个组内消费者消费。 2消费者组之间互不影响。所有的消费者都属于某个消费者组即消费者组是逻辑上的一个订阅者。 3如果向消费组中的消费者数超过主题分区数量则有一部分消费者就会闲置不会接收任何消息。 coordinator辅助实现消费者组的初始化和分区的分配。 coordinator节点选择 groupid写代码时手动给的的hashcode值 % 50consumer_offsets的分区数量 例如 groupid的hashcode值 11% 50 1那么 consumer_offsets 主题的1号分区在哪个broker上就选择这个节点的coordinator作为这个消费者组的老大。消费者组下的所有的消费者提交offset的时候就往这个分区去提交offset。
消费者组初始化流程
0生产者把数据发送到Kafka集群选择节点的coordinator。
1每个消费者都往选出的coordinator发送请求表示要加入到组当中。
2coordinator会从消费者中选出一个消费者作为Leader。
3coordinator会把收集到的所有topic信息都发送给消费者的Leader。
4Leader制定消费方案。
5制定计划后Leader将消费方案发给coordinator。
6coordinator把消费方案下发给各个消费者。
7每个消费者会定期给coordinator发送心跳反应默认3s**一旦超时session.timeout.ms45s则该消费者会被移除并触发再平衡别的消费者继续完成接下来的任务或消费者处理消息的时间过长max.poil.interval.ms5分钟**也会触发再平衡。
消费者组详细消费流程
1消费者组创建消费者网络连接客户端主要用于与Kafka集群进行交会。
2消费者调用sendFetches方法用于抓取数据的初始化。
3消费者网络连接客户端调用send方法发送请求。
4Leader通过回调方法onSuccess把数据拉取到消息队列里。
5消费者一次拉取一批次数据经过反序列化、拦截器再进行数据处理。
2.3 消费者重要参数