使用kafka和python-kafka库实现消费群体的无限平衡吗?

时间:2019-08-12 19:49:37

标签: apache-kafka kafka-consumer-api

我正在使用docker swarm部署1个zookeeper和3个代理。我在那里有两个组,其中将我的客户应用程序复制到一个特定的组中。

在小组中,我遇到了一个问题。当一个消费者针对特定的组和主题时,就没有问题。但是,当我将某个消费者组的消费者复制为大于一个的消费者时,似乎只有一个消费者获得了所有分区,并且在实施了分区算法的情况下,从来没有均匀分布,除此之外,主要问题是团队有无限的平衡。

如果我不重新启动kafka服务器,则世代相传成千上万。

在我的kafka配置(properties.server)中,我有:     我的group.max.session.timeout.ms = 300000

在我的使用者代码中,我正在使用kafka-python: 消费者使用以下配置实例化:

   self.kafka_server = KafkaConsumer(
                group_id=self.kafka_topic,
                bootstrap_servers=self.kafka_brokers,
                enable_auto_commit=True,
                value_deserializer=lambda x: json.loads(x),
                api_version=(0, 10),
                session_timeout_ms=300000,
                heartbeat_interval_ms=100000,
                max_poll_interval_ms=300000,
                partition_assignment_strategy=[RoundRobinPartitionAssignor, RangePartitionAssignor]
            )
            sleep(10)
            self.kafka_server.subscribe(topics=self.kafka_topic)

我的轮询代码是:

  try:
            while True:
                fetch_from_all_partitions = self.kafka_server.poll(timeout_ms=3000, max_records=20)

正在正确联系消费者并与经纪人取得联系。但是,使用者日志显示没有问题。 kafka日志显示现在都出现了问题,似乎组协调员继续尝试无限地重新平衡。

谢谢

以下是日志输出:

[2019-08-13 18:47:20,294] INFO [GroupCoordinator 2]: Preparing to rebalance group group_name in state PreparingRebalance with old generation 124 (__consumer_offsets-22) (reason: Adding new member kafka-python-1.4.6-e2ea4ede-b28a-4ff1-a986-ef42efe9101a with group instanceid None) (kafka.coordinator.group.GroupCoordinator)

[2019-08-13 18:47:20,295] INFO [GroupCoordinator 2]: Stabilized group group_name generation 125 (__consumer_offsets-22) (kafka.coordinator.group.GroupCoordinator)

[2019-08-13 18:47:20,296] INFO [GroupCoordinator 2]: Assignment received from leader for group group_name for generation 125 (kafka.coordinator.group.GroupCoordinator)

这是无限的重复。

0 个答案:

没有答案