Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kafka: kafka, ordering, transactions

Как обеспечить последовательность сообщений в Kafka?

Проверяет знание методов сохранения порядка сообщений в распределённой системе.

Короткий ответ

  1. Использовать 1 партицию (порядок гарантирован только в пределах партиции).

  2. Ключевые сообщения (key): Одинаковые key попадают в одну партицию.

  3. Транзакции (для exactly-once).

Длинный ответ

1. Одна партиция

  • Плюс: Полный порядок.

  • Минус: Нет параллелизма.

2. Ключи сообщений (key)

  • Сообщения с одинаковым key идут в одну партицию.

  • Пример:

    producer.send(new ProducerRecord<>("orders", "user123", "Order 1")); // Все сообщения для user123 — в одну партицию.

3. Транзакции

  • Гарантируют атомарность и порядок для producer-а.

  • Пример:

    producer.initTransactions();
    producer.beginTransaction();
    producer.send(record1);
    producer.send(record2);
    producer.commitTransaction();

Вывод:

  • Для строгого порядка: 1 партиция или ключи.

  • Для exactly-once: Транзакции.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Kafka

    Kafka

Ключевые слова

#kafka

#ordering

#transactions

Подпишись на Python Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.