Обмен технологиями

продюсер Кафки

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

режиссер

Продюсеры несут ответственность за создание сообщений и последующую доставку их в Kafka.
Вставьте сюда описание изображения

Балансировка нагрузки

  1. Стратегия опроса.
  2. Случайная стратегия.
  3. Хэш по ключу.

Стратегия секционирования Kafka по умолчанию: если указан ключ, сообщения с тем же ключом будут отправляться в один и тот же раздел (разделы упорядочиваются, если ключ не указан, используется стратегия опроса);

Отправить сообщение

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

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

Есть 3 способа отправки сообщений:

Отправь и забудь.

подтверждений = 0.
Производитель не ждет ответа от брокера после отправки сообщения. В большинстве случаев сообщения могут быть успешно доставлены, поскольку Kafka имеет высокую доступность, а у производителя есть механизм автоматической попытки повторной отправки. Однако если произойдет неповторяемая ошибка или тайм-аут, сообщение будет потеряно, и приложение не получит никакой информации или исключения.
В той же среде конфигурации установка acks на 0 может обеспечить максимальную пропускную способность.

Отправить асинхронно

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

  • Если сообщение не может быть записано в ведущую копию, например, когда ведущая копия выходит из строя и переизбирается новая ведущая копия, производитель получит ответ об ошибке. Чтобы избежать потери сообщения, производитель может повторно отправить сообщение. сообщение.
  • Если сообщение записывается в ведущую копию и производителю возвращается успешный ответ, а ведущая копия выходит из строя до того, как ее извлекают другие подчиненные копии, сообщение все равно будет потеряно в этот момент, поскольку соответствующее сообщение не существует в копия вновь избранного лидера.
    acks установлено в 1, что является компромиссом между надежностью сообщений и пропускной способностью.
Отправить синхронно

acks = -1 или acks = все.
После того как производитель отправит сообщение, ему необходимо дождаться, пока все реплики в ISR успешно запишут сообщение, прежде чем он сможет получить успешный ответ от сервера.
В той же среде конфигурации установка acks значения -1 (все) может обеспечить максимальную надежность. Но это не значит, что сообщение должно быть достоверным, ведь в ISR может быть только лидерная копия, что вырождается в ситуацию acks=1.