Перейти к основному содержимому

ESB, MOM, MQ

  • ESB (Enterprise Service Bus, шина данных) — посредник для обмена данными между системами. Объединяет системы и приложения в единую интеграционную архитектуру. Управляет бизнес-логикой и маршрутизацией данных.
  • MOM (Message-Oriented Middleware) — промежуточное ПО для асинхронной передачи сообщений между приложениями.
  • MQ (Message Queue) — реализация системы очередей, частный случай MOM.
    MOM/MQ — не шины данных, но могут быть частью решения, основанного на шине.

ESB (Enterprise Service Bus)

  • Управление данными идет через одну точку, что позволяет контролировать потоки данных
  • Применяется для большого количества приложений с разными протоколами и форматами данных
  • Обеспечивает маршрутизацию, трансформацию и оркестрацию сообщений между ними
  • Часто используется с легаси-системами для интеграции старых приложений с новыми
  • Может направлять сообщения между системами через MOM или MQ

Как работает

  1. Приложение отправляет данные на ESB через адаптер (например, для БД или веб-сервиса)
  2. ESB преобразует формат данных, если требуется
  3. Шина маршрутизирует сообщение в нужное приложение
  4. Получатель получает сообщение и обрабатывает его

Шина данных считается устаревшим видом интеграции:

  • Требует сложной настройки и поддержки, т.к. нужно интегрировать много систем с разными протоколами и форматами данных
  • Труднее масштабировать: централизованная шина может не справляться с нагрузкой, в отличие от микросервисов — легко масштабируются независимо.
  • Центральная точка, сбой может привести к остановке всего обмена данными
  • Альтернативы: микросервисы и очереди сообщений (MQ). Они более гибкие: каждое приложение управляет своими связями без централизованного посредника

Примеры: Apache Camel, MuleSoft

MOM (Message-Oriented Middleware)

  • Может поддерживать очереди (MQ), публикацию/подписку (Pub/Sub), маршрутизацию, обработку событий
  • Используется, когда не нужно дожидаться ответа от другой системы
  • Полезен в микросервисной архитектуре, чтобы разгрузить приложение и повысить отказоустойчивость

Как работает

  1. Приложение отправляет сообщение посреднику (MOM)
  2. Посредник сохраняет сообщение в буфере до тех пор, пока приложение-получатель не будет готово его принять
  3. Получатель обрабатывает сообщение, когда готов
  4. MOM удаляет сообщение из буфера только после его успешной доставки

Плюсы и минусы

Плюсы:

  • Приложения могут работать независимо друг от друга, что снижает зависимость от времени обработки
  • Сохраняет сообщения, что предотвращает их потерю при сбое приложения

Минусы:

  • Не поддерживает сложные правила маршрутизации или трансформации данных
  • Большой объем данных требует больше ресурсов для хранения и передачи сообщений

Примеры: ActiveMQ, RabbitMQ — поддерживают и очереди, и другие модели, такие как Pub/Sub

MQ (Message Queue)

  • Используется для гарантированной доставки сообщений между приложениями, например, в платежных системах
  • Сообщения обрабатываются по принципу FIFO (первый пришел, первый ушел) и удаляются после их получения
  • Позволяет передавать данные без ожидания мгновенного ответа

Пример: IBM MQ

Подборка материалов

  1. От хаоса к порядку: как легко интегрировать сервисы с помощью Enterprise Service Bus
  2. Шины данных (ESB): зачем компаниям использовать этот инструмент
  3. Почему технари против шин данных: middleware, ESB, брокеров сообщений?
  4. Как я 10 лет строю интеграцию в банке: от ESB-монолита к целой линейке систем
  5. Уже поменяли шину? Наш опыт «переобувания» и разработки интеграционной платформы
  6. История одного монолита
  7. ESB интеграция: объяснение и цель
  8. Особенности корпоративной интеграции на ESB и Apache Kafka: vs или вместе?
  9. Интеграция на основе сообщений. Преимущества и отличия от других подходов
  10. Middleware — что такое
  11. Кафка это шина? API, MQ, шины/ESB. Неочевидные минусы подходов и их плюсы
  12. Что такое middleware?
  13. Очереди сообщений: как ускорить взаимодействие в системе, не потеряв в надежности
  14. Что такое MQ? Основные понятия
  15. Краткий обзор MQ (Messages queue) для применения в проектах на РНР

Видео

  1. Корпоративный шиномонтаж: внедрение шины данных в платформу | Антон Сухов, Авито
  2. Сравнение ESB-систем | Ключевые отличия от брокеров сообщений
  3. Что такое RabbitMQ и чем он отличается от Apache Kafka за 10 минут
  4. Интеграционные шины
  5. Что такое middleware за 7 минут, и как он поможет снизить стоимость разработки мобильного приложения
  6. Очереди сообщений в банке: IBM MQ, Rabbit MQ, Kafka взаимодействие с .Net Core
  7. Межсервисное взаимодействие. Очереди сообщений
  8. Курс «Системный аналитик». Урок 9: Очередь сообщений | Сам курс