На странице собраны вопросы по Kafka — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: kafka, backend, api.
Redis Streams предоставляет журнал записей, consumer groups и подтверждения обработки. Это удобно для небольшого событийного контура, но не делает Redis полной заменой Kafka по хранению и масштабированию.
Kafka гарантирует порядок записей внутри одной партиции, но приложение может нарушить порядок обработки параллельными задачами, повторами или отправкой связанных событий в разные партиции.
Опишите фактический поток событий: кто публикует, какие группы читают, как выбираются топик и ключ, и на каком шаге сервис уведомлений выполняет действие.
Разделяйте шифрование TLS, аутентификацию SASL или клиентским сертификатом и авторизацию через ACL. Назовите фактическую комбинацию, использовавшуюся в вашем Kafka-кластере.
RabbitMQ обычно используют как брокер маршрутизируемых сообщений и рабочих очередей, Kafka — как распределённый сохраняемый журнал событий с независимыми потребителями.
Используйте Transactional Outbox: сущность и запись о событии сохраняются в одной транзакции БД, а отдельный процесс доставляет событие в брокер с повторами.
Kafka обычно удаляет старые сегменты по retention.ms или retention.bytes при cleanup.policy=delete. Потребление сообщений само по себе не удаляет их из лога.
Партиции распределяют хранение и обработку по брокерам и consumer-ам. Внутри одной группы одна партиция одновременно назначается одному consumer, поэтому число партиций ограничивает параллелизм.
После обнаружения сбоя partitions упавшего consumer будут переназначены. Если offset обработки не был подтверждён, новый consumer начнёт с последнего committed offset и может повторно получить сообщение.
Kafka позволяет строить at-most-once и at-least-once обработку, а транзакции и идемпотентный producer дают более сильные гарантии в определённых границах. End-to-end exactly-once не возникает автоматически.
Outbox читает отдельный relay: фоновой процесс приложения, специальный сервис или CDC-коннектор. Kafka и RabbitMQ сами по себе не начинают читать произвольную таблицу вашей БД.