Опубликовано 9 июня 2026 на Хабре. Кейс продакшн-сервиса: 300–400 RPS, обогащение из БД и отправка во внешний REST, который регулярно «отваливается». Разобрано, почему ручной commit в Kafka убивает пропускную способность и как auto-commit + asyncio + DLQ-топик + FSM удерживают и скорость, и гарантию доставки. 💡 Главные тезисы: • На ручном commit потолок одного консьюмера — около 10 сообщений/сек при RTT ~100 мс. 15M профилей дают 300–400 RPS, и синхронная модель сразу упирается в сетевую задержку внешнего сервиса. Масштабирование через consumer group обходится дорого. • Решение — auto-commit, отделение commit'а от обработки и пул асинхронных задач под asyncio.Semaphore. Скорость больше не привязана к RTT, но появляется новая ответственность: задачи в asyncio держатся через слабые ссылки и могут быть собраны GC посреди HTTP-вызова, поэтому нужен явный registry тасок с add_done_callback и логированием исключений. • DLQ здесь — не «кладбище», а временное хранилище недоставленных событий
📌 Dead Letter Queue в Kafka: как 15M профилей перестали терять события при деградации внешнего API
ВчераВчера
2 мин