B
Backend | Boost
@py_backend1321 подп.
201просмотров
62.6%от подписчиков
1 ноября 2025 г.
Score: 221
💬 Message Deduplication в Kafka / RabbitMQ — как бороться с дублирующимися сообщениями В распределённых системах дубликаты сообщений — это норма, а не баг. Сеть может «повторить» запрос, брокер — переотправить сообщение, продюсер — не получить подтверждение и снова отправить. Если не обработать дубли — бизнес-логика может «стрельнуть себе в ногу». 🧠 Основные подходы к deduplication: 1️⃣ Идемпотентные операции — самое надёжное. Каждое сообщение обрабатывается так, что повтор не влияет на результат (пример: UPDATE balance SET amount = 100 вместо amount += 100). 2️⃣ Message ID tracking Храним идентификаторы уже обработанных сообщений (например, в Redis или в compacted-топике Kafka). Если ID уже есть — пропускаем. 3️⃣ Exactly-once delivery (Kafka Streams) Kafka поддерживает режим exactly-once semantics — гарантирует, что сообщение будет обработано ровно один раз, даже при сбоях. 4️⃣ TTL + Garbage Collector Старые ID через время можно очищать, чтобы не накапливались в памяти. ⚡️ Главное — помнить: в очередях не бывает «ровно один раз», бывает “at least once” или “at most once”. Deduplication — это то, что делает систему надёжной, несмотря на реальность сети.
201
просмотров
1178
символов
Да
эмодзи
Нет
медиа

Другие посты @py_backend1

Все посты канала →
💬 Message Deduplication в Kafka / RabbitMQ — как бороться с — @py_backend1 | PostSniper