- PVSM.RU - https://www.pvsm.ru -

Обзор ESB-систем ServiceMix и Fuse

Представляю вашему вниманию небольшой обзор систем ESB (Enterprise Service Bus) на основе Apache Camel [1]: Apache ServiceMix [2] и Red Hat JBoss Fuse [3]. Эти две системы построены на одних и тех же компонентах и обладают схожими возможностями. Более того, в большинстве случаев, они взаимозаменяемы. Apache ServiceMix [2] разрабатывается open-source сообществом, Red Hat JBoss Fuse [3] компанией Red Hat [4]. По большей части, это одни и те же люди.

Обзор ESB-систем ServiceMix и Fuse - 1

Для начала, разберемся что такое ESB и зачем системы такого класса используются в информационной инфраструктуре предприятий. На современных предприятиях используется всё большей приложений различного класса: ERP, CRM, BPM, DWH, ECM и ещё множество трех-буквенных аббревиатур. Все эти приложения используют для интеграции различные протоколы и различные форматы данных. Для того чтобы связать все эти системы между собой и используется ESB.

Итак ESB-системы выполняют следующие основные функции:

  • подключение по различным протоколам
  • маршрутизация запросов и сообщений
  • преобразование данных

Обе системы Apache ServiceMix [2] и Red Hat JBoss Fuse [3] имеют в своей основе следующие компоненты:

Apache Camel [1] реализует непосредственно функции ESB на основе паттернов EIP [5] (Enterprise Integration Patterns). Apache Camel имеет свой DSL для задач интеграции. Существует несколько его реализаций: Spring DSL, Blueprint DSL, Java DSL, Groovy DSL, Scala DSL. Так же, в состав Apache Camel входит более 100 компонент [6] отвечающих за подключение по различным протоколам и преобразование данных.

Apache ActiveMQ [7] — система очередей сообщений. Реализуется различные функции обмена сообщениями: обмен сообщениями по моделям отправитель-получатель (sender-receiver), издатель-подписчик (publish-subscribe), синхронный обмен (request-response), персистентные сообщения (persistent message), поддержку транзакций, включая распределенные XA-транзакции.

Apache CXF [8] — библиотека, реализующая функции веб-сервисов, включая SOAP и REST.

Apache Karaf [9] — платформа для запуска приложений на основе OSGi [10]. OSGi [10] позволяет устанавливать, удалять и обновлять различные модули (bundle) без перезапуска всей системы и без остановки зависимых модулей. Это особенно важно в корпоративной инфраструктуре, где остановки компонент крайне нежелательны, так как могут привести к прямым финансовым потерям. В системах на основе OSGi [10] всё является модулем (bundle): библиотеки, маршруты интеграции, подключения к ресурсам.

Для Red Hat JBoss Fuse [3] существует альтернативный вариант запуска. Вместо Apache Karaf [9] можно использовать Red Hat JBoss EAP [11].

Обе системы поддерживают отказоустойчивую (failover) конфигурацию по модели master-slave.

Встает резонный вопрос, если Apache ServiceMix [2] и Red Hat JBoss Fuse [3] состоят из одних и тех же компонент, реализуют одну и ту же функциональность, разрабатываются одними и теми же людьми, то зачем платить больше? Кроме указанных выше компонентов, Red Hat JBoss Fuse [3] включает несколько дополнительных, упрощающих работу администратора и позволяющих управлять кластером.

Hawtio [12] — графическая консоль управления, позволяющая подключать различные плагины, в том числе для управления Apache Camel [1], Apache ActiveMQ [7], Fuse Fabric и т.д… Несмотря на то что Hawtio [12] не входит в состав Apache ServiceMix [2], она может быть установлена на любую версию Apache ServiceMix [2] двумя командами.

Fuse Fabric — система управления кластером на основе Fabric8 [13]. Позволяет управлять конфигурациями узлов кластера группами или по отдельности. Поддерживает версионирование конфигурации. Так же как и Hawtio [12], Fabric8 [13] может быть легко установлена на Apache ServiceMix [2]. Кроме того, для Apache ServiceMix [2] имеется альтернативный способ управления кластером на основе Apache Karaf Cellar [14].

При приобретении подписки Red Hat JBoss Fuse [3] вы получаете поддержку от компании Red Hat [4] и возможность использовать инструмент мониторинга Red Hat JBoss Operation Network [15]. Для Apache ServiceMix [2] можно использовать RHQ [16], open-source аналог Red Hat JBoss Operation Network [15]. Как альтернатива, для целей мониторинга Apache ServiceMix [2] может быть использован Apache Karaf Decanter [17].

Apache ServiceMix [2]'у тоже есть чем похвастаться. В состав последних версий Apache ServiceMix [2] входит движок бизнес-процессов Activiti [18], который позволяет реализовывать персистентные интеграционные процессы. Apache Camel [1] не предназначен для реализации интеграционных взаимодействий разнесенных по времени. Если при использовании Apache Camel [1] без Activiti [18] происходит сбой, то все не отправленные данные будут потеряны, все транзакции откатятся. В то же время, с использованием Activiti [18] мы можем сохранить состояние процесса в БД. Red Hat [4] для решения подобных задач предлагает использовать Red Hat JBoss BPM Suite [19].

Основным преимуществом Apache ServiceMix [2] перед Red Hat JBoss Fuse [3] является то что Apache ServiceMix [2] включает более новые версии компонент.

Компонент 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 [2] или Red Hat JBoss Fuse [3], то можно задействовать все преимущества Apache ServiceMix [2] и заплатить при этом меньше. Если же опыт отсутствует, то поддержка от компании Red Hat [4] не будет лишней.

Кроме рассмотренных систем, на основе Apache Camel [1] существует Talend ESB [20]. Но я не имел практического опыта работы с ней, поэтому в обзор она не включена.

Автор: kefirfromperm

Источник [21]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/195173

Ссылки в тексте:

[1] Apache Camel: https://camel.apache.org/

[2] Apache ServiceMix: https://servicemix.apache.org/

[3] Red Hat JBoss Fuse: http://developers.redhat.com/products/fuse/overview/

[4] Red Hat: https://www.redhat.com/

[5] EIP: http://www.enterpriseintegrationpatterns.com/

[6] более 100 компонент: https://camel.apache.org/components.html

[7] Apache ActiveMQ: http://activemq.apache.org/

[8] Apache CXF: https://cxf.apache.org/

[9] Apache Karaf: https://karaf.apache.org/

[10] OSGi: https://www.osgi.org/

[11] Red Hat JBoss EAP: http://developers.redhat.com/products/eap/overview/

[12] Hawtio: http://hawt.io/

[13] Fabric8: https://fabric8.io/

[14] Apache Karaf Cellar: https://karaf.apache.org/manual/cellar/latest-4/

[15] Red Hat JBoss Operation Network: https://www.redhat.com/en/technologies/jboss-middleware/operations-network

[16] RHQ: https://rhq-project.github.io/rhq/

[17] Apache Karaf Decanter: https://karaf.apache.org/manual/decanter/latest-1/

[18] Activiti: http://activiti.org/

[19] Red Hat JBoss BPM Suite: http://developers.redhat.com/products/bpmsuite/overview/

[20] Talend ESB: https://www.talend.com/resource/open-source-esb.html

[21] Источник: https://habrahabr.ru/post/311540/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best