- PVSM.RU - https://www.pvsm.ru -
Представляю вашему вниманию небольшой обзор систем 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 и зачем системы такого класса используются в информационной инфраструктуре предприятий. На современных предприятиях используется всё большей приложений различного класса: 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
Нажмите здесь для печати.