kafka消费者协调器与重分配平衡机制

本文介绍了Kafka消费者协调器的作用,包括组协调器和消费者协调器,并详细讲解了Rebalance机制,包括Range、RoundRobin和Sticky三种策略。强调了Rebalance可能导致的性能消耗和系统不可用问题,建议保持消费节点稳定性以减少Rebalance的负面影响。
摘要由CSDN通过智能技术生成

(1)协调器是什么?

        什么是协调器,既然叫做协调器,那么肯定就是起协调作用的。
        协调器协调的对象,是Kafka中的生产者与消费者的协调。

(2)为什么需要协调?

        我们想象一下,Kafka中都是一个生产者,对应着一个消费组中的一个消费者(不可能存在一个消费组两个消费者消费同一个topic主题生产者),一群消费者中也只有一个leader,其他follower都是从leader同步数据的,如果某个leader由于网络延迟抖动,形成假死,如果没有协调器统一主持选举,就会出现多个leader的脑裂效应。同时一个topic中有新的消费者加入,也无法很好的协调分配分区消费,达不到加快消费速度的目的。

(3)协调器的分类?

组协调器
每个broker节点启动时,都会创建一个GrouCoordinator组协调器实例,负责管理消费组和消费组下每个消费者的偏移量。
作用:
        1:从ISR列表中选举leader消费者(其他follower消费者从leader消费者获取数据同步)
        2:将leader消费者协调器上交的分区分配结果同步给所有follower消费者协调器
        3:通过心跳机制感知存活的消费者
        4:管理全部消费者提交的偏移量,并保存在Kafka内部主题
        5:针对AR的所有不同同步效率的消费者,区分出ISR和O
Kafka消费者机制可以通过建立一个专门用于试的topic(retry topic)来实现。当消费者没有正确消费一条消息时,将该消息转发(发布)到试主题(retry topic)上,并提交消息的偏移量,以便继续处理下一个消息。这个时候,这个没有正确消费的消息,对于这个消费者来说,也算是消费完成了,因为也正常提交了偏移量,只不过是业务没有正确处理,而且这个消息被发布到另一个topic中了(retry topic)。之后再创建一个消费者,用于订阅这个试主题,只不过这个消费者,跟之前那个消费者处理相同的业务,两个逻辑是一样的。如果这个消费者也无法消费这条消息,那就把这个消息发布到另一个试主题上,并提交该消息的偏移量。循环,递归。最后,当创建了很多消费者的时候,在最终消费者无法处理某条消息后,把该消息发布到一个死信队列(DLQ)。 ```shell # 代码示例 # 创建一个专门用于试的topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic retry_topic # 消费者处理消息时,如果出现异常,将消息转发到试主题上 # 代码示例 try: # 处理消息的业务逻辑 except Exception as e: # 将消息转发到试主题上 producer.send('retry_topic', value=message.value, key=message.key) # 创建一个消费者,用于订阅试主题 # 代码示例 consumer = KafkaConsumer('retry_topic', bootstrap_servers=['localhost:9092'], group_id='retry_group') for message in consumer: try: # 处理消息的业务逻辑 except Exception as e: # 将消息转发到另一个试主题上 producer.send('retry_topic_2', value=message.value, key=message.key) # 提交消息的偏移量 consumer.commit() # 将无法处理的消息发布到死信队列 # 代码示例 producer.send('dead_letter_queue', value=message.value, key=message.key) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值