Как мне масштабировать Потребителей Кафки в python? - PullRequest
0 голосов
/ 10 февраля 2020

Это, вероятно, несколько вопросов, так что терпите меня. Я все еще выясняю, как правильно использовать Kafka Architecture. Я знаю, что разделы topi c разделены ч / б потребителями.

Что такое потребители? Прямо сейчас я думаю о написании процесса демона 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

1 Ответ

0 голосов
/ 11 февраля 2020

Могу ли я иметь несколько потребителей (python скриптов) на одном компьютере?

Да. Вы также можете иметь темы Python.

Если вы не употребляете несколько тем, то нет необходимости в нескольких потребителях.

Что такое потребители?

Не стесняйтесь читать на сайте Apache Kafka ...

каждый микросервис имеет свою собственный потребитель?

Каждый ли сервис выполняет подобный код? Тогда да.

Я думал о порождении новой машины

Создание новых экземпляров вашего приложения на одной машине. Мониторинг процессора и памяти и сетевой нагрузки. Не приобретайте новые машины, пока хотя бы одна из них не превысит 70% при обычной обработке.

Нужно ли увеличивать разделы по темам, если мне нужно увеличить количество моих потребителей?

В общем да. Количество потребителей в группе потребителей ограничено количеством разделов в подписанных темах.

Могу ли я уменьшить количество разделов при меньшем количестве создаваемых сообщений?

Нет. Перегородки не могут быть уменьшены

При увеличении нагрузки приходится масштабировать потребителей

Не обязательно. Постоянно ли увеличивается повышенная нагрузка или есть волны? Если переменная, то вы можете позволить Kafka буферизировать сообщения. А потребитель продолжит опрос и обработку данных так быстро, как только сможет.

Вам необходимо определить свои SLA, сколько времени займет обработка сообщения после достижения топи c от производителя.

Сколько разделов изначально идеально?

Существует множество статей по этому вопросу, и это зависит конкретно от ваших требований к оборудованию и приложениям. Просто регистрируя каждое сообщение, вы можете иметь тысячи разделов ...

Когда потребитель получает сообщение от Kafka, есть задача, которую я должен выполнить

Похоже, вы хотите посмотреть на сельдерея, а не только Кафку. Вы также можете посмотреть на Faust для обработки Кафки

...