Почему раздел какфа топи c не получает сообщения? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть кластер кафка с 3 брокерами и топи c с 8 разделами. Производитель, написанный на java, с использованием пружинной загрузки и без специального правила для балансировки нагрузки. Это означает, что он должен выполнять круговой алгоритм.

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

В чем может быть проблема? Версия Kafka, которую я использую, - 0.10.1.1. Дополнительное примечание: в этом случае я не использую реплики для разделов

1 Ответ

1 голос
/ 29 мая 2020

Это означает, что он должен выполнять циклический перебор.

Он будет выполнять только циклический перебор, если у вас нет keys в ваших сообщениях Kafka. В противном случае сообщения разбиваются на разделы на основе значения ключа ha sh:

hash(key) % number_of_partitions

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

...