Обзор ESB-систем ServiceMix и Fuse
Для начала, разберемся что такое ESB и зачем системы такого класса используются в информационной инфраструктуре предприятий. На современных предприятиях используется всё большей приложений различного класса: ERP, CRM, BPM, DWH, ECM и ещё множество трех-буквенных аббревиатур. Все эти приложения используют для интеграции различные протоколы и различные форматы данных. Для того чтобы связать все эти системы между собой и используется ESB.
Итак ESB-системы выполняют следующие основные функции:
- подключение по различным протоколам
- маршрутизация запросов и сообщений
- преобразование данных
Обе системы Apache ServiceMix и Red Hat JBoss Fuse имеют в своей основе следующие компоненты:
Apache Camel реализует непосредственно функции ESB на основе паттернов EIP (Enterprise Integration Patterns). Apache Camel имеет свой DSL для задач интеграции. Существует несколько его реализаций: Spring DSL, Blueprint DSL, Java DSL, Groovy DSL, Scala DSL. Так же, в состав Apache Camel входит более 100 компонент отвечающих за подключение по различным протоколам и преобразование данных.
Apache ActiveMQ — система очередей сообщений. Реализуется различные функции обмена сообщениями: обмен сообщениями по моделям отправитель-получатель (sender-receiver), издатель-подписчик (publish-subscribe), синхронный обмен (request-response), персистентные сообщения (persistent message), поддержку транзакций, включая распределенные XA-транзакции.
Apache CXF — библиотека, реализующая функции веб-сервисов, включая SOAP и REST.
Apache Karaf — платформа для запуска приложений на основе OSGi. OSGi позволяет устанавливать, удалять и обновлять различные модули (bundle) без перезапуска всей системы и без остановки зависимых модулей. Это особенно важно в корпоративной инфраструктуре, где остановки компонент крайне нежелательны, так как могут привести к прямым финансовым потерям. В системах на основе OSGi всё является модулем (bundle): библиотеки, маршруты интеграции, подключения к ресурсам.
Для Red Hat JBoss Fuse существует альтернативный вариант запуска. Вместо Apache Karaf можно использовать Red Hat JBoss EAP.
Обе системы поддерживают отказоустойчивую (failover) конфигурацию по модели master-slave.
Встает резонный вопрос, если Apache ServiceMix и Red Hat JBoss Fuse состоят из одних и тех же компонент, реализуют одну и ту же функциональность, разрабатываются одними и теми же людьми, то зачем платить больше? Кроме указанных выше компонентов, Red Hat JBoss Fuse включает несколько дополнительных, упрощающих работу администратора и позволяющих управлять кластером.
Hawtio — графическая консоль управления, позволяющая подключать различные плагины, в том числе для управления Apache Camel, Apache ActiveMQ, Fuse Fabric и т.д… Несмотря на то что Hawtio не входит в состав Apache ServiceMix, она может быть установлена на любую версию Apache ServiceMix двумя командами.
Fuse Fabric — система управления кластером на основе Fabric8. Позволяет управлять конфигурациями узлов кластера группами или по отдельности. Поддерживает версионирование конфигурации. Так же как и Hawtio, Fabric8 может быть легко установлена на Apache ServiceMix. Кроме того, для Apache ServiceMix имеется альтернативный способ управления кластером на основе Apache Karaf Cellar.
При приобретении подписки Red Hat JBoss Fuse вы получаете поддержку от компании Red Hat и возможность использовать инструмент мониторинга Red Hat JBoss Operation Network. Для Apache ServiceMix можно использовать RHQ, open-source аналог Red Hat JBoss Operation Network. Как альтернатива, для целей мониторинга Apache ServiceMix может быть использован Apache Karaf Decanter.
Apache ServiceMix’у тоже есть чем похвастаться. В состав последних версий Apache ServiceMix входит движок бизнес-процессов Activiti, который позволяет реализовывать персистентные интеграционные процессы. Apache Camel не предназначен для реализации интеграционных взаимодействий разнесенных по времени. Если при использовании Apache Camel без Activiti происходит сбой, то все не отправленные данные будут потеряны, все транзакции откатятся. В то же время, с использованием Activiti мы можем сохранить состояние процесса в БД. Red Hat для решения подобных задач предлагает использовать Red Hat JBoss BPM Suite.
Основным преимуществом Apache ServiceMix перед Red Hat JBoss Fuse является то что Apache ServiceMix включает более новые версии компонент.
Компонент | Apache ServiceMix | Red Hat JBoss Fuse |
---|---|---|
Последняя версия | 6.1.2 | 6.2.1 |
Apache Camel | 2.16.3 | 2.15.1 |
Apache ActiveMQ | 5.12.3 | 5.11.0 |
Apache CXF | 3.1.5 | 3.0.4 |
Apache Karaf | 3.0.7 | 2.4 |
Что выбрать? Универсального ответа нет. Если у вас есть команда профессионалов, имеющих опыт работы с Apache ServiceMix или Red Hat JBoss Fuse, то можно задействовать все преимущества Apache ServiceMix и заплатить при этом меньше. Если же опыт отсутствует, то поддержка от компании Red Hat не будет лишней.
Кроме рассмотренных систем, на основе Apache Camel существует Talend ESB. Но я не имел практического опыта работы с ней, поэтому в обзор она не включена.
Комментарии (5)
3 октября 2016 в 09:16
0↑
↓
Что выбрать? Универсального ответа нет.
Я бы выбрал чистый karaf без примесей :) Все остальное интегрируется один раз, небольшими усилиями, а в итоге практически ничем не отличается от решения из коробки.
3 октября 2016 в 09:35
0↑
↓
Тоже хороший вариант.
3 октября 2016 в 09:55
0↑
↓
Насчет BPM и транзакций — это вы кстати того, преувеличили…
Персистентность процессов и транзакции — вещи перпендикулярные, и друг от друга практически не зависят. Никто не мешает завести в camel route transaction manager (ровно так, как это описано в документации), и реализовать любой сценарий обработки ошибок, включая и откат транзакции, конечно. Никакой BPM движок для этого не нужен совершенно.
3 октября 2016 в 10:46
0↑
↓
Ничего противоречащего вашим словам я не писал.3 октября 2016 в 10:59
0↑
↓
Если при использовании Apache Camel без Activiti происходит сбой, то все не отправленные данные будут потеряны, все транзакции откатятся.
А вот тут, по-вашему, об Activity зачем написано? Я не знаю, может вы имели в виду что-то другое, но читается это странно, и запутывает знатно.