ESB, MOM, MQ
- ESB (Enterprise Service Bus, шина данных) — посредник для обмена данными между системами. Объединяет системы и приложения в единую интеграционную архитектуру. Управляет бизнес-логикой и маршрутизацией данных.
- MOM (Message-Oriented Middleware) — промежут очное ПО для асинхронной передачи сообщений между приложениями.
- MQ (Message Queue) — реализация системы очередей, частный случай MOM.
MOM/MQ — не шины данных, но могут быть частью решения, основанного на шине.
ESB (Enterprise Service Bus)
- Управление данными идет через одну точку, что позволяет контролировать потоки данных
- Применяется для большого количества приложений с разными протоколами и форматами данных
- Обеспечивает маршрутизацию, трансформацию и оркестрацию сообщений между ними
- Часто используется с легаси-системами для интеграции старых приложений с новыми
- Может направлять сообщения между системами через MOM или MQ
Как работает
- Приложение отправляет данные на ESB через адаптер (например, для БД или веб-сервиса)
- ESB преобразует формат данных, если требуется
- Шина маршрутизирует сообщение в нужное приложение
- Получатель получает сообщение и обрабатывает его
Шина данных считается устаревшим видом интеграции:
- Требует сложной настройки и поддержки, т.к. нужно интегрировать много систем с разными протоколами и форматами данных
- Труднее масштабировать: централизованная шина может не справляться с нагрузкой, в отличие от микросервисов — легко масштабируются независимо.
- Центральная точка, сбой может привести к остановке всего обмена данными
- Альтернативы: микросервисы и очереди сообщений (MQ). Они более гибкие: каждое приложение управляет своими связями без централизованного посредника
Примеры: Apache Camel, MuleSoft
MOM (Message-Oriented Middleware)
- Может поддерживать очереди (MQ), публикацию/подписку (Pub/Sub), маршрутизацию, обработку событий
- Используется, когда не нужно дожидаться ответа от другой системы
- Полезен в микросервисной архитектуре, чтобы разгрузить приложение и повысить отказоустойчивость
Как работает
- Приложение отправляет сообщение посреднику (MOM)
- Посредник сохраняет сообщение в буфере до тех пор, пока приложение-получатель не будет готово его принять
- Получатель обрабатывает сообщение, когда готов
- MOM удаляет сообщение из буфера только после его успешной доставки
Плюсы и минусы
Плюсы:
- Приложения могут работать независимо друг от друга, что снижает зависимость от времени обработки
- Сохраняет сообщения, что предотвращает их потерю при сбое приложения
Минусы:
- Не поддерживает сложные правила маршрутизации или трансформации данных
- Большой объем данных требует больше ресурсов для хранения и передачи сообщений
Примеры: ActiveMQ, RabbitMQ — поддерживают и очереди, и другие модели, такие как Pub/Sub
MQ (Message Queue)
- Используется для гарантированной доставки сообщений между приложениями, например, в платежных системах
- Сообщения обрабатываются по принципу FIFO (первый пришел, первый ушел) и удаляются после их получения
- Позволяет передавать данные без ожидания мгновенного ответа
Пример: IBM MQ
Подборка материалов
- От хаоса к порядку: как легко интегрировать сервисы с помощью Enterprise Service Bus
- Шины данных (ESB): зачем компаниям использовать этот инструмент
- Почему технари против шин данных: middleware, ESB, брокеров сообщений?
- Как я 10 лет строю интеграцию в банке: от ESB-монолита к целой линейке систем
- Уже поменяли шину? Наш опыт «переобувания» и разработки интеграционной платформы
- История одного монолита
- ESB интеграция: объяснение и цель
- Особенности корпоративной интеграции на ESB и Apache Kafka: vs или вместе?
- Интеграция на основе сообщений. Преимущества и отличия от других подходов
- Middleware — что такое
- Кафка это шина? API, MQ, шины/ESB. Неочевидные минусы подходов и их плюсы
- Что такое middleware?
- Очереди сообщений: как ускорить взаимодействие в системе, не потеряв в надежности
- Что такое MQ? Основные понятия
- Краткий обзор MQ (Messages queue) для применения в проектах на РНР
Видео
- Корпоративный шиномонтаж: внедрение шины данных в платформу | Антон Сухов, Авито
- Сравнение ESB-систем | Ключевые отличия от брокеров сообщений
- Что такое RabbitMQ и чем он отличается от Apache Kafka за 10 минут
- Интеграционные шины
- Что такое middleware за 7 минут, и как он поможет снизить стоимость разработки мобильного приложения
- Очереди сообщений в банке: IBM MQ, Rabbit MQ, Kafka взаимодействие с .Net Core
- Межсервисное взаимодействие. Очереди сообщений
- Курс «Системный аналитик». Урок 9: Очередь сообщений | Сам курс