Недостатки использования очередей сообщений
Мы уже рассказывали о преимуществах использования очередей сообщений в микросервисах. Однако несмотря на многочисленные плюсы, самостоятельное внедрение может оказаться сложной задачей. И вот почему:
- Message Queues, по сути, представляют собой еще одну систему, которую надо купить, инсталлировать, а также правильно сконфигурировать и на протяжении эксплуатации поддерживать. Соответственно, потребуются дополнительные мощности.
- Если брокер когда-нибудь выйдет из строя, может остановиться работа многих систем, с ним взаимодействующих. Следовательно, по меньшей мере надо будет выполнить резервное копирование данных.
- Кода растет количество очередей, усложняется и отладка. В случае синхронной обработки сразу понятно, какой именно запрос вызвал сбой. А вот в очередях сообщений потребуется наличие системы трассировки, которая позволит быстро связать несколько этапов обработки одного запроса -- так вы обнаружите причины ошибок.
- Во время применения очередей вы в любом случае столкнетесь с необходимостью выбора стратегии доставки сообщений. В идеальной ситуации сообщения должны обрабатываться каждым потребителем однократно. Однако в реальной жизни реализовать это сложно, т. к. сети и инфраструктура несовершенны. Вообще, большая часть брокеров поддерживает 2 стратегии: доставка хотя бы один раз (At-least-once) либо доставка максимум раз (At-most-once). Первая стратегия способна стать причиной появления дубликатов, вторая может привести к потере сообщений. Обе эти стратегии не идеальны и требуют тщательного мониторинга. Также некоторые брокеры гарантируют строго однократную доставку (Exactly-once) с применением порядковых номеров пакетов данных -- однако даже в этом случае понадобится дополнительная проверка на стороне получателя.
В общем идеальных технологий, как известно не бывает. Правда, скрасить жизнь может услуга от современных облачных провайдеров, которые предлагают очереди как сервис (MQ as a Service). Это выход, если ресурсов для самостоятельной настройки и регулярной поддержки очередей сообщений вам не хватает. Можно найти оптимальное предложение, в которое будут включены и автоматизация настройки, и масштабирование, и диагностика ошибок, и техподдержка, и даже поддержка Exactly-once в очередях FIFO.
По материалам https://mcs.mail.ru/blog/.