Вопрос проверяет практический опыт эксплуатации брокеров сообщений и понимание рисков асинхронных систем.
В продакшене брокеры сообщений могут становиться узким местом системы.
Часто возникают проблемы с потерей сообщений, дублированием и ростом задержек.
Также сложность добавляет мониторинг и отладка асинхронных потоков.
Без правильных настроек и наблюдаемости брокер может привести к деградации всей системы.
Использование брокеров сообщений упрощает масштабирование и снижает связность сервисов, но добавляет новые классы проблем, которые необходимо учитывать заранее.
Определение:
Проблемы доставки — это ситуации, когда сообщение не доходит до consumer’а корректно или доходит несколько раз.
На практике встречаются следующие сценарии:
Потеря сообщений при сбоях брокера
Дублирование сообщений при повторной доставке
Нарушение порядка сообщений
Это требует:
идемпотентной обработки
корректных ack
повторных попыток обработки
Когда consumer’ы не справляются с нагрузкой:
Очереди начинают расти
Увеличивается latency
Повышается нагрузка на диск и память
Без ограничений это может привести к:
Out Of Memory
падению брокера
остановке обработки событий
Асинхронность затрудняет понимание поведения системы:
нет явного call stack
сложнее воспроизводить ошибки
требуется distributed tracing
К ним относятся:
сложность обновлений
необходимость резервного копирования
чувствительность к неправильной конфигурации
Брокеры сообщений требуют зрелой эксплуатации: мониторинга, ретраев, идемпотентности и контроля нагрузки.