如何在python中扩展Kafka使用者?

如何在python中扩展Kafka使用者?,python,apache-kafka,microservices,kafka-consumer-api,confluent-platform,Python,Apache Kafka,Microservices,Kafka Consumer Api,Confluent Platform,这可能有很多问题,所以请耐心听我说。我仍在寻找使用卡夫卡建筑的正确方法。我知道一个主题的分区是与消费者一起划分的 消费者到底是什么?现在,我正在考虑编写一个充当使用者的守护进程python进程。当消费者使用来自卡夫卡的消息时,我必须完成一项任务。这是一个巨大的任务,所以我正在创建并发运行的子任务。我可以在同一台机器上有多个使用者(python脚本)吗 我有多个正在工作的微服务,所以每个微服务都有自己的消费者 当负荷增加时,我必须调整耗电设备的规模。我想生产一台新的机器,作为另一个消费者。但我只是

这可能有很多问题,所以请耐心听我说。我仍在寻找使用卡夫卡建筑的正确方法。我知道一个主题的分区是与消费者一起划分的

消费者到底是什么?现在,我正在考虑编写一个充当使用者的守护进程python进程。当消费者使用来自卡夫卡的消息时,我必须完成一项任务。这是一个巨大的任务,所以我正在创建并发运行的子任务。我可以在同一台机器上有多个使用者(python脚本)吗

我有多个正在工作的微服务,所以每个微服务都有自己的消费者

当负荷增加时,我必须调整耗电设备的规模。我想生产一台新的机器,作为另一个消费者。但我只是觉得我做错了什么,觉得必须有更好的办法

你能告诉我你是如何根据负荷来衡量你的消费者的吗?如果我需要增加我的消费者,我是否必须增加主题中的分区?我如何动态地执行它?当生成的消息较少时,我可以减少分区吗?最初有多少个分区是理想的

请提出一些好的做法

这是我正在使用的消费者脚本

while True:
    message = client.poll(timeout=10)#client is the KafkaConsumer object
    if message is not None:
        if message.error():
            raise KafkaException(message.error())
        else:
            logger.info('recieved topic {topic} partition {partition} offset {offset} key {key} - {value}'.format(
                topic=message.topic(),
                partition=message.partition(),
                offset=message.offset(),
                key=message.key(),
                value=message.value()
            ))
            #run task
我可以在同一台机器上有多个使用者(python脚本)吗

对。不过,您也可以使用Python线程

如果您没有使用多个主题,那么就不需要使用多个使用者

消费者到底是什么

请随意阅读ApacheKafka站点

每个微服务都有自己的消费者

每个服务是否运行相似的代码?那么是的

我想制造一台新机器

在一台计算机上生成应用程序的新实例。监控CPU和Mem以及网络负载。在正常加工条件下,至少有一台机器超过70%之前,不要购买新机器

如果我需要增加我的消费者,我是否必须增加主题中的分区

一般来说,是的。使用者组中的使用者数量受订阅主题中分区数量的限制

当生成的消息较少时,我可以减少分区吗

不可以。分区不能减少

当负荷增加时,我必须调整耗电设备的规模

不一定。增加的负荷是不断上升,还是有波动?如果变量为,则可以让Kafka缓冲消息。消费者将尽可能快地进行轮询和处理

您需要为消息从制作人处到达主题后处理所需的时间定义SLA

最初有多少个分区是理想的

关于这方面有多篇文章,具体取决于您自己的硬件和应用程序需求。只需记录每条消息,您就可以拥有数千个分区

当消费者使用来自卡夫卡的消息时,我必须完成一项任务


听起来你可能想看看芹菜,不一定只是卡夫卡。你也可以对卡夫卡进行处理

注意:请将你的帖子限制为一个单一的、具体的问题