кафка должен ли потребитель и производитель знать о разделах

#apache-kafka

#апач-кафка

Вопрос:

Я пытаюсь разобраться в Кафке, и то, что меня смущает, — это перегородки. Из всех/большинства примеров, которые я видел, потребители/продукты, похоже, имеют неявное знание разделов (в какой раздел писать сообщения, из какого раздела читать сообщения). Правильно ли это, я изначально думал, что разделы являются внутренними для системы, и потребителям/производителям не нужно знать информацию о разделах. Если им нужно знать информацию о разделах, то разве мы не раскрываем внутреннюю структуру темы в определенной степени внешнему миру?

Ответ №1:

В кафке каждый раздел в теме имеет набор брокеров и не более одного лидера брокера на раздел. У вас не может быть больше потребителей темы, чем количество разделов, потому что в противном случае какой-то потребитель был бы неактивен.У вас может быть несколько разделов для одного потребителя, но не может быть нескольких потребителей для одного раздела. Таким образом, количество разделов должно быть выбрано в соответствии с ожидаемой пропускной способностью. Количество разделов по теме можно увеличить, но никогда не уменьшать. Когда потребители подключаются к разделу, они фактически подключаются к лидеру брокера для получения сообщений. В любом случае лидер раздела может измениться, поэтому пользователь получит ошибку и должен отправить запрос на метаданные контроллеру кластера, чтобы получить информацию о новом лидере раздела. При запуске потребителя разделы назначаются в соответствии со стратегией параметра kafka partition.assignment.. Конечно, если потребители начнут в разное время в одной и той же группе потребителей, произойдет перераспределение распределения.

Наконец, вам нужно много информации о структуре kafka cluser в качестве клиента.