Auto-commit уместен, когда его семантика соответствует обработке: приложение успевает завершить работу с полученными записями до фиксации позиции и допускает возможные повторы или потери по выбранному сценарию.
Сравните не только технологии, но и свои реальные задачи: какие события или задания передавали, как обеспечивали повторную обработку, порядок и наблюдаемость. Чётко отделите практический опыт от теории.
Партиция Kafka — упорядоченный журнал записей внутри топика. Каждая запись получает offset в своей партиции; топик с несколькими партициями распределяет хранение и обработку между узлами.
Да. Чтение потребителем и фиксация offset не удаляют запись из Kafka. Данные хранятся по политике retention и, если настроено, очищаются log compaction независимо от конкретного чтения.
Партиции позволяют увеличить пропускную способность за счёт параллельной записи, хранения и обработки. Но увеличение их числа не гарантирует ускорение: есть накладные расходы и пределы ресурсов.
Offset — позиция записи внутри конкретной партиции Kafka. Он позволяет потребителю продолжать чтение с нужного места и сохранять прогресс; единого offset для всего топика нет.
At-least-once допускает повторы и требует идемпотентной обработки. Exactly-once ограничено определённым контуром: транзакция Kafka не делает произвольную запись во внешнюю БД однократной.
В обычной consumer group Kafka одновременно обрабатывать 10 партиций могут не более 10 назначенных consumers. Но даже до этого предела добавление экземпляра не помогает, если bottleneck вне чтения топика.
Kafka прежде всего предоставляет партиционированный журнал с хранением событий и offsets читателей. RabbitMQ часто служит брокером очередей с exchanges, маршрутизацией и подтверждением отдельных сообщений.
Consumer обычной очереди RabbitMQ подтверждает отдельные доставки через ack; consumer Kafka читает записи партиций и управляет offsets. Отсюда различаются повторное чтение, распределение работы и хранение истории.
RabbitMQ чаще используют для очередей задач и гибкой маршрутизации сообщений, Kafka — для долговечного партиционированного журнала событий с независимым чтением и повторным проигрыванием.
Разделите разработку producer/consumer и эксплуатацию кластера. Назовите реальные задачи с топиками, offsets, ключами, схемами и ошибками, а администрирование обозначьте только при наличии опыта.