Очереди сообщений (Kafka / RabbitMQ)
Kafka, RabbitMQ
Что это такое
Брокер сообщений стоит между производителем и потребителем, чтобы производителю не приходилось ждать потребителя и знать, кто он такой: производитель публикует сообщение, брокер его хранит, а потребитель забирает, когда может. Kafka и RabbitMQ — две широко используемые реализации с разными моделями в основе: одна ведёт себя как журнал, в который только дописывают, другая — как очередь сообщений к доставке, и обе служат одному и тому же: развязанной асинхронной работе.
Почему это важно
Асинхронность меняет модель отказов системы — в основном к лучшему, иногда к худшему. Медленный потребитель больше не тормозит производителя, и система становится устойчивой к всплескам. Однако работа теперь происходит после отправки ответа, поэтому отказ не виден вызывающему, а сообщение может быть доставлено дважды или не по порядку. Проектировать с учётом этих свойств, а не обнаруживать их, — и есть весь навык; заботы тут одни и те же у любого брокера.
Что в этом треке
- Очереди и журналы (05-backend-data/17-message-queues-kafka-rabbitmq/01-queues-and-logs) — две модели в основе и то, что каждая из них означает.
- Повторные попытки, порядок и обратное давление (05-backend-data/17-message-queues-kafka-rabbitmq/02-retries-ordering-and-back-pressure) — механика, от которой зависит, надёжна ли асинхронная работа.
Предварительные требования
- Микросервисы (05-backend-data/12-microservices)
Что читать дальше
- Микросервисы (05-backend-data/12-microservices) — архитектура, которой обычно служит эта развязка, поэтому читайте их первыми.
- Операционная стоимость (05-backend-data/12-microservices/02-the-operational-cost) — заботы об отказах и наблюдаемости, которые брокер наследует.
- Архитектура программного обеспечения (01-cs-fundamentals/25-software-architecture) — границы и связанность, одним из механизмов которых является очередь.