KAFKA 0.9 新增消费者组加入和心跳多线程问题
KAFKA 0.9 new consumer group join and heart beat multi-thread problems
我正在尝试将我的 KAFKA 客户端从 0.8.2 更新到 0.9.0.1 以减轻对 zookeeper 集群的压力。我 运行 关注以下问题:
KAFKA 消费者协议说 "The join group request will park at the coordinator until all expected members have sent their own join group request"。然后我发现加入组请求是由 poll() 触发的,并且在组重新平衡完成之前该方法不会 return 。那么这是否意味着我需要与消费者数量相同的消费者线程来确保所有消费者可以同时发出组加入请求?如果我有超过 10000 个分区并且我希望每个分区都有自己的消费者,这是否意味着我需要超过 10000 个消费者线程?
要触发心跳,我需要调用poll()。但是如果我不想收到新消息,因为旧消息仍在消耗,我可以通过 consumer.pause() -> consumer.poll() -> consumer.resume() 来实现吗?有更好的方法吗?
消费者可以读取多个分区。所以一般来说,单个消费者就足够了——它可以将所有分区分配给自己。但是,如果您“希望 每个分区都有自己的消费者”,您当然需要每个分区一个消费者...
关于加入组:如果你有多个消费者并且你在重新平衡中,重新平衡不会永远阻塞。应用了超时。如果消费者没有在超时内发送加入请求,它会退出组(暂时)并且重新平衡可以完成。如果这个迟到的消费者再次上线并发送加入组请求,将触发新的再平衡。
暂停、轮询、恢复是正确的做法。注意:这将通过 KIP-62 进行更改,在消费者中引入心跳后台线程。
我正在尝试将我的 KAFKA 客户端从 0.8.2 更新到 0.9.0.1 以减轻对 zookeeper 集群的压力。我 运行 关注以下问题:
KAFKA 消费者协议说 "The join group request will park at the coordinator until all expected members have sent their own join group request"。然后我发现加入组请求是由 poll() 触发的,并且在组重新平衡完成之前该方法不会 return 。那么这是否意味着我需要与消费者数量相同的消费者线程来确保所有消费者可以同时发出组加入请求?如果我有超过 10000 个分区并且我希望每个分区都有自己的消费者,这是否意味着我需要超过 10000 个消费者线程?
要触发心跳,我需要调用poll()。但是如果我不想收到新消息,因为旧消息仍在消耗,我可以通过 consumer.pause() -> consumer.poll() -> consumer.resume() 来实现吗?有更好的方法吗?
消费者可以读取多个分区。所以一般来说,单个消费者就足够了——它可以将所有分区分配给自己。但是,如果您“希望 每个分区都有自己的消费者”,您当然需要每个分区一个消费者...
关于加入组:如果你有多个消费者并且你在重新平衡中,重新平衡不会永远阻塞。应用了超时。如果消费者没有在超时内发送加入请求,它会退出组(暂时)并且重新平衡可以完成。如果这个迟到的消费者再次上线并发送加入组请求,将触发新的再平衡。
暂停、轮询、恢复是正确的做法。注意:这将通过 KIP-62 进行更改,在消费者中引入心跳后台线程。