Kafka消费者身份标识依据及同消费组多实例身份判定问题
Kafka Consumer 身份标识相关问题解答
1. 术语consumers的身份标识依据是主机/IP,还是客户端连接?
Kafka的消费者身份判定既不依赖主机/IP,也不依赖单纯的客户端连接。
核心判定依据是消费者实例的唯一标识:每个消费组下的每一个独立消费者实例,都会被Kafka集群分配一个全局唯一的member.id作为身份标记,和消费者所在的主机地址、网络连接没有绑定关系。就算多个消费者部署在同一台主机上,只要是独立初始化的实例,都会被判定为不同的消费者。
2. 若我启动两个线程或进程,运行相同的Kafka客户端代码且使用同一个consumer group,这两个实例会被判定为1个consumer还是2个consumer?
会被判定为2个独立的consumer。
无论是多进程启动,还是同一进程内多线程分别初始化独立的Kafka Consumer对象,每个实例都会在向集群注册时拿到独立的member.id,属于消费组下两个不同的成员,会触发消费组的重平衡(Rebalance),最终按照配置的分区分配策略各自分配到对应的分区进行消费。
注:如果是多个线程复用同一个Kafka Consumer实例对象调用消费方法,才会被判定为同一个消费者,但Kafka Consumer本身不是线程安全的,这种用法会导致运行异常,不建议使用。
内容的提问来源于stack exchange,提问作者hangyuan
相关产品推荐
相关产品推荐

