Очереди сообщений (Kafka / RabbitMQ)

Kafka, RabbitMQ

Что это такое

Брокер сообщений стоит между производителем и потребителем, чтобы производителю не приходилось ждать потребителя и знать, кто он такой: производитель публикует сообщение, брокер его хранит, а потребитель забирает, когда может. Kafka и RabbitMQ — две широко используемые реализации с разными моделями в основе: одна ведёт себя как журнал, в который только дописывают, другая — как очередь сообщений к доставке, и обе служат одному и тому же: развязанной асинхронной работе.

Почему это важно

Асинхронность меняет модель отказов системы — в основном к лучшему, иногда к худшему. Медленный потребитель больше не тормозит производителя, и система становится устойчивой к всплескам. Однако работа теперь происходит после отправки ответа, поэтому отказ не виден вызывающему, а сообщение может быть доставлено дважды или не по порядку. Проектировать с учётом этих свойств, а не обнаруживать их, — и есть весь навык; заботы тут одни и те же у любого брокера.

Что в этом треке

  1. Очереди и журналы (05-backend-data/17-message-queues-kafka-rabbitmq/01-queues-and-logs) — две модели в основе и то, что каждая из них означает.
  2. Повторные попытки, порядок и обратное давление (05-backend-data/17-message-queues-kafka-rabbitmq/02-retries-ordering-and-back-pressure) — механика, от которой зависит, надёжна ли асинхронная работа.

Предварительные требования

Что читать дальше

  • Микросервисы (05-backend-data/12-microservices) — архитектура, которой обычно служит эта развязка, поэтому читайте их первыми.
  • Операционная стоимость (05-backend-data/12-microservices/02-the-operational-cost) — заботы об отказах и наблюдаемости, которые брокер наследует.
  • Архитектура программного обеспечения (01-cs-fundamentals/25-software-architecture) — границы и связанность, одним из механизмов которых является очередь.