Составляющие базовой архитектуры SOA

Базовая архитектура SOA состоит из провайдера сервисов, сервиса и (необязательного) каталога сервисов. Для обмена информацией используется механизм обмена сообщениями типа "приложение к приложению".

Сходство между этой моделью и чистыми веб-сервисами совершенно очевидно, поскольку в обоих случаях применяется WSDL-документ, являющийся контрактом по активизации, хранящимся в каталоге сервисов, из которого этот сервис может быть запрошен и извлечен посредством механизма UDDI (UDDI — это отраслевая спецификация для публикации и поиска информации о веб-службах). Веб-сервисы в действительности являются реализацией архитектуры SOA на самом базовом уровне.

В этой модели базовый сценарий таков. Сначала провайдер сервиса создает сервис, принимает решение открыть этот сервис и публикует его. Публикация выполняется путем отправки информации о сервисе в каталог сервисов. С другой стороны, инициатор запросов сервиса, нуждаясь в определенном сервисе, просматривает каталог сервисов в поисках того из них, который удовлетворяет необходимому критерию. После обнаружения такого сервиса и использования доступной в каталоге сервисов информации инициатор запросов сервиса может напрямую обратиться к провайдеру сервисов надлежащим способом для удовлетворения бизнес-потребности.

Роль ESB в архитектуре SOA

ESB играет важную роль в архитектуре SOA. По сути, она предоставляет магистральную сеть и инфраструктуру для соединения провайдеров и потребителей сервисов.

Ниже более подробно перечислены роли ESB:

  • Предоставляет интеграционную инфраструктуру, соответствующую принципам SOA:
    • Устанавливает явные независимые от реализации интерфейсы для определения сервисов со слабым связыванием.
    • Использует коммуникационные протоколы, обеспечивающие независимость от месторасположения и способность к взаимодействию.
    • Способствует определению сервисов, инкапсулирующих повторно используемые бизнес-функциональности.
  • Предоставляет средства для управления инфраструктурой сервисов.
  • Функционирует в распределенной среде, поскольку она:
    • Поддерживает синхронное и асинхронное взаимодействие.
    • Использует стандартные интерфейсы и стандартные протоколы.
  • Централизует управление и распределяет обработку.
  • Поддерживает механизм посредничества для формулирования корректных запросов/ответов между различными участниками взаимодействия без необходимости их изменения.
  • Реализует защиту и обеспечение качества сервиса в проектах SOA.

Роль веб-сервисов в SOA

Хотя веб-сервисы появились до SOA, они представляют собой ответ и реализацию потребности архитектуры SOA в механизме взаимодействия между системами и платформами. Они помогают быстро внедрить и запустить SOA в работу, поскольку уже поддерживают технологии, удовлетворяющие ее потребности. Сегодня очевидно, что веб-сервисы представляют собой основу архитектуры SOA и являются рекомендованной технологией для обеспечения взаимодействия.

Веб-сервисы являются основой архитектуры SOA по следующим причинам:

  • Они заставляют применять стандарты и тем самым способствуют совместимости и переносимости;
  • Они не зависят от платформы и языка программирования;
  • Они поддерживаются повсеместно, что существенно облегчает внедрение SOA;
  • Они ориентированы на сообщения;
  • Они обеспечивают более быструю поддержку инструментальными средствами, что ускоряет реализацию SOA.

2.4 Анализ существующих аналогов ESB технологий

Проанализировав требования заказчика, было определено:

· Приложение должно быть построено на основе SOA;

· Использование ESB в приложении;

· Необходим сервер приложений.

Таким образом, требуется провести анализ существующих технологий и выбрать именно ту, которая наиболее четко и точно удовлетворяет поставленным требованиям.

Существует множество open-source ESB технологий. Самые известные и используемые из них это:

· Mule ESB;

· Talend-SE;

· UltraESB;

· WSO2 ESB.

Ниже представлен обзор этих ESB технологий.

Mule ESB

Mule ESB – корпоративная интеграционная шина с открытым исходным кодом, с более чем 2500 промышленных внедрений, включая 5 из 10 крупнейших мировых банков и более 35% компаний и списка Global 500.

Mule ESB предоставляет разработчикам простой и эффективный инструмент, позволяющий интегрировать приложения и сервисы с минимальными затратами.

Mule ESB – это лёгкая и гибкая платформа, легко адаптируемая в существующую инфраструктуру, так же достаточно надёжная для обеспечения бесперебойной работы самых крупных и требовательных корпоративных реализаций SOA.

Низкие системные требования упрощают внедрение и поддержку.

Работает как под управлением сервера приложений так и без.

Более 100 транспортов и модулей для интеграции с различными системами, протоколами, SOAP и REST сервисами.

Преимуществами Mule ESB является то, что эта технология поддерживает:

· Различные серверы приложений, в том числе: JBoss и Apache Tomcat;

· СУБД MS SQL Server, которая используется в разрабатываемой системе;

· Средства разработки: Eclipse, IntelliJ, IDEA, Maven и т.д.;

· Транспорты: SOAP, Email, FTP, Hibernate, HTTP/S, WSDL и т.д.;

· Топологии внедрения:ESB, Client/ Server и т.д.;

· Безопасность:Spring Security и т.д.;

· Контейнеры:EJB3, Spring и т.д.;

· Языки:Java, Javascript и т.д.;

· Форматы данных:Byte arrays, HTML/XHTML, Java Objects, JSON, XML и т.д.;

Помимо этого, Mule имеет еще несколько продуктов, которые могут помочь в разработке приложения:

· Anypoint Service Registry – платформа управления SOA. Позволяет легко организовывать и обнаруживать сервисы, управлять ими на протяжении всего их жизненного цикла, контролировать их работу и обеспечить строгое соблюдение стандартов, политик и контрактов;

· Tcat - Enterprise Tomcat, сервер приложений, разработанный на базе Tomcat.

Talend-SE

Talend Open Studio ESB — инновационное средство (на базе Eclipse) для моделирования, настройки и развертывания интеграционных решений, использующее корпоративную сервисную шину с открытым исходным кодом Talend ESB на базе Apache. Talend Open Studio ESB устраняет длинную кривую обучения, типичную для большинства интеграционных инструментов. TOS ESB ускоряет развертывание, повышая тем самым продуктивность разработчиков и позволяя им быстро реагировать на интеграционные требования.

TOS ESB позволяет разработчикам быстро выстраивать интеграционные процессы, путем простого перемещения компонентов в графическую рабочую область, определения связей и отношений между ними и настройки специфических свойств.

Talend ESB Studio предоставляет доступ к библиотеке из 450 коннекторов, поддерживающих все типы источников и конечных систем для интеграции, миграции и синхронизации данных.

Ключевые особенности:

· Универсальность и гибкость. Легко разворачиваемые web-сервисы, сервисы данных, REST приложения и сложные маршруты передачи, облегченные пакеты, настраиваемые под любую топологию приложения;

· Динамическая маршрутизация;

· Высокое представление. Шина обеспечивает высокую пропускную способность в сочетании с прозрачными для клиента средствами восстановления после сбоев и балансировкой нагрузки для гарантии того, что будут соблюдены все принятые соглашения об уровне услуг;

· Простота в развертывании. Преднастроена производителем для работы в любом Java окружении.

Функциональные возможности:

· Настройка без программирования. Хорошо налаженный контейнер развертывания, установка и конфигурирование, не требующие программирования, повышают продуктивность разработчиков, позволяя программистам концентрироваться на бизнес-логике, а не на сложностях применяемых информационных технологий;

· Модульная сборка приложения. Модули из одного проекта в дальнейшем можно использовать и в других проектах;

· Поддержка стандартов безопасности веб-сервисов. Talend ESB SE предлагает ряд возможностей для построения безопасности веб-сервисов приложений, применяя при этом принятые отраслевые стандарты для XML шифрования, аутентификации и авторизации;

· Командная строка и инструменты для написания скриптов;

· Обмен сообщениями. Talend ESB SE снижает затраты на аппаратное и программное обеспечение, позволяя более эффективно использовать вычислительные ресурсы. Каждый брокер сообщения может управлять множеством соединений, наряду с обработкой тысяч сообщений в секунду с минимальной задержкой;

· Фреймворк для создания Службы маркеров безопасности (STS). Talend ESB позволяет установить «доверие» между частями приложений, применяя новейшие стандарты безопасности веб-сервисов;

· Перехват управления при отказе и балансировка нагрузки. Talend ESB SE обеспечивает автоматический и прозрачный перехват управления при отказе с помощью протокола обнаружения сервисов (Service Locator), а также балансировку нагрузки с помощью динамической регистрации конечных точек и поиск с помощью Apache Zookeeper. Service Locator поддерживает доступность сервиса для удовлетворения требованиям и принятым соглашениям об уровне услуг;

· Служба мониторинга активности. Служба мониторинга активности (Service Activity Monitoring) отслеживает возникающие события и сохраняет эту информацию для дальнейшего глубого анализа;

· Небольшое дисковое пространство. Шина Talend ESB (под управлением Apache Karaf, занимающая небольшое дисковое пространство, OSGi-ориентированная) предоставляет облегченный контейнер для развертывания различных компонент и приложений. Talend ESB использует ресурсы по минимуму в плане размера загрузки и использования процессора и памяти;

· Поддержка транспортных протоколов (HTTP, Servlet, JMS), привязки данных и форматов(XML, JSON), Bindings (SOAP, REST/HTTP);

· Поддержка стандартов;

· Гибкое развертывание;

· Поддержка различных языков программирования.

UltraESB

UltraESB является бесплатным и свободно распространяемым Enterprise Service Bus, впервые выпущенный в январе 2010 года под AdroitLogic Zero-Dollar EULA. С августа 2010 года его исходный код был доступен по лицензии OSI, утвержденный Affero General Public License (AGPL).

Разработка,конфигурирование и тестирование:

· С использованием любого IDE, который предпочитает пользователь (IntelliJ IDEA, NetBeans, Eclipse и т.д.);

· Интеллектуальное автозаполнение и встроенная в IDE пошаговая отладка;

· Отправка более 70 образцов и соответствующих модульных тестов;

· Конфигурация ESB с испольщованием APIDirector AdroitLogic без программирования.

Управление и мониторинг:

· Все средства управления и мониторинга работает вне ядра ESB экземпляра;

· UConsole - веб-консоль управления;

· UTerm - интерфейс для администрирования;

· Встроенные метрики, оповещения и отладка сбоя подключения;

· Автоматизированный шаблон на основе метрик отчетности Zabbix.

Кластеризация и высокая доступность:

· Кластеризация на основе Apache ZooKeeper;

· Все узлы эквивалентны, отсутствуют специальные узлы управления;

· Управление всем кластером через любой подключенный узел;

· Репликация состояния и обмен контентом с помощью распределенного кэширования на основе Ehcache.

Технические особенности:

· Кэширование файлов на RAM дисках;

· Возможность динамической загрузки и перезагрузки единиц развертывания (то есть сервисы, логика посредничества и т.д.) автоматически во времени выполнения.

WSO2 ESB

WSO2 ESB придерживается стандартов веб-сервисов, включая SOAP, WS-*, REST.

WSO2 ESB может выполнять множество операций над сообщениями, проходящими через него, таких как маршрутизация к конечным точкам (endpoints), посредничество (mediation), преобразование, логирование информации, балансировка нагрузки и многое другое. Архитектура WSO2 ESB содержит различные функциональные компоненты, такие как транспорты, последовательности, прокси-сервисы, медиаторы, конечные точки, компоненты QoS (качества обслуживания) и так далее. Прием сообщений в ESB первоначально возлагается на транспортную составляющую, которая поддерживает общие транспортные протоколы, такие как HTTP / S, JMS, VFS, и т.д.

На транспортном уровне получение сообщений идентифицируется тегом content-type и созданием обрабатываемого xml документа с описанием маршрутизации и назначения медиаторов и конвертации к оригинальному формату сообщения путем направления content-type к точке выхода.

Сообщения отсылаются через канал сообщений по транспорту к фреймворку-медиатору(посреднику). В канале аспекты качества обслуживания (например, безопасность и надежность сообщений) добавляются к сообщениям. Обычно посредничество между сообщениями происходит в одном канале сообщений, но в случае с прокси-сервисами каждый из них дожжен поддерживать свой канал сообщений.

Фреймворк-медиатор, разработанный Synapse принимает решение о маршрутизации и трансформации сообщения и внедряет сообщения в различные каналы в зависимости от обозначенных точек назначения. Транспортный слой должен снова позаботиться о преобразовании транспортного протокола, необходимого в ESB. С помощью REST API любую реализацию SOAP сервиса можно представить как REST клиент для сервиса.

Изображение внизу показывает архитектуру WSO2 ESB.

Составляющие базовой архитектуры SOA - student2.ru

Рис. 5 Архитектура WSO2 ESB

WSO2 ESB имеет следующие особенности: полная поддержка XML и веб-сервисов, высокое качество использования регулирования соединения, неблокированный I/O и модель непрерывного разбора XML. Другой важной особенностью является поддержка событийно-ориентированной архитектуры. Процесс посредничества сообщениями расширяется поддержкой разбиения на части, агрегации, кэширования и регулирования сообщений. WSO2 ESB также обеспечивает всесторонний мониторинг производительности, через консоль управления, а так же через JMX.

Особенности

  • Подключения
    • Транспорт: HTTP, HTTPS, JMS, TCP, UDP, FTPS, SFTP и др.;
    • Форматы и протоколы: JSON, XML, SOAP 1.1, SOAP 1.2, WS-*, HTML, Text, JPEG, все бинарные форматы и др.;
  • Маршрутизация, посредничество и преобразование
    • Маршрутизация: на основе заголовка, содержания, основанная на правилах и приоритетно- основанная маршрутизация;
    • Посредничество: гарантированная доставка сообщений, интеграция с базами данных, публикация событий, логирование и аудит, валидация;
    • Преобразование: XSLT 1.0/2.0, XPath, XQuery, Smooks.
  • Сообщения, API и безопасная маршрутизация
    • Предоставление доступа к существующим приложениям и сервисам через различные протоколы и форматы сообщений;
    • Виртуализация услуг для слабой связи и управления SOA;
    • Балансировки нагрузки для обеспечения масштабируемости и отказоустойчивости для обеспечения высокой доступности конечных точек системы;
    • Централизованное обеспечение и управление безопасностью, в том числе аутентификацией, авторизацией доступом;
    • Предоставление доступа к сервисам и приложениям через RESTful APIs с управлением ключами.

Проведение тестов

Для того чтобы определиться, какая из представленных систем лучше всего удовлетворяет поставленным целям, было решено проанализировать их производительность и другие характеристики, проведя несколько соответствующих тестов. Было решено сравнивать производительность самых последних версий технологий, о которых было сказано выше: WSO2 ESB 4.6.0, Mule 3.3.0, Talend-SE-5.1.1 и UltraESB 1.7.1- Enhanced. Так как по результатам тестов WSO2 ESB 4.6.0 показал одни из лучших результатов, то так же было решено проанализировать и одну из предыдущих версий этого продукта: WSO2 ESB 4.5.1, а так же особое внимание будет уделяться именно этому продукту, чтобы дать более полные его характеристики и объяснить достоинства его использования в проекте.

WSO2 ESB 4.6.0 является последней версией ESB на момент проведения анализа, и данные ниже показывают прирост производительности по сравнению с WSO2 ESB 4.5.x.Критерии оценки эффективности работы выполняются в Amazon EC2, поэтому они могут быть независимо проверены и повторены. Amazon EC2 — веб-сервис, который предоставляет вычислительные мощности в облаке. Простой веб-интерфейс сервиса позволяет получить доступ к вычислительным мощностям и настроить с минимальными затратами ресурсы. Он предоставляет пользователям полный контроль над вычислительными ресурсами, а также доступную среду для работы. Сервис сокращает время, необходимое для получения и загрузки нового сервера.

Сценарии тестирования:

Составляющие базовой архитектуры SOA - student2.ru

· DirectProxy;

· CBRProxy;

· CBRSOAPHeaderProxy;

· XSLTProxy;

· XSLT Enhanced Proxy (Используется FAST XSLT медиатор, управляемый сквозным(passthrough) траспортом);

· SecureProxy.

Для каждого сценария были проведены тесты с использованием различных значений: размеров сообщений и количества пользователей. Размеры образца сообщения колебались от 512 до 100K байт, с одновременным количеством 20, 40, 80, 160, 320, 640, 1280 и 2560 пользователей.

Общие наблюдения.

В следующей таблице и графике показаны результаты теста производительности. Этот график показывает среднее значение среди сообщений всех размеров.

Количество сообщений для одного клиента N = 1000 при подключении до 320 параллельных клиентов и N = 10 для реализации более высокого параллелизма (1280/2560 клиентов).

 
  Mule 3.3.0 Talend-SE-5.1.1 UltraESB 1.7.1 -Enhanced WSO2 ESB 4.5.1 WSO2 ESB 4.6.0
DirectProxy 3,375 3,315 4,839 2,879 8,278
CBRProxy 1,458 3,108 4,703 2,694 7,765
CBRSOAPHeaderProxy 2,262 3,185 5,063 3,118 7,573
CBRTransportHeaderProxy 2,225 3,751 5,523 3,502 11,024
XSLTProxy 2,225 2,333 3,387 1,735 2,504
XSLTEnhancedProxy (Fast XSLT mediator) 2,225 2,333 3,387 N/A 5,473
Security

Составляющие базовой архитектуры SOA - student2.ru

Тем не менее, было обнаружено, что результаты данного теста были, возможно, ненадежными. Данный факт был исследован более подробно и было отмечено, что в опубликованных тестах при большом количестве параллельных клиентов для WSO2 ESB проявляются неожиданно высокие показатели. Для тестов было задано очень низкое количество сообщений на одного клиента (N = 10) при большом количестве параллельных клиентов. Это не позволяет дать JVM достаточного количества времени, чтобы разогреться, а также не представляет собой длительных испытаний, которые могут показать правдоподобные результаты.

Поэтому было решено повторно запустить тест для WSO2 ESB с использованием 200 сообщений на клиенте с большим числом параллельно работающих клиентов. После этого аномальных данных больше не наблюдалось. Также были перезапущены тесты для UltraESB в EC2 с 200 сообщениями на каждом клиенте для более высокого числа параллельно работающих клиентов. Наблюдения для N = 200 и с большой степенью параллелизма с UltraESB были намного ниже, чем ранее опубликованные. Тесты для Mule и Talend с использованием N = 200 не перезапускались. Результаты показаны в следующей диаграмме и таблице.

В будущих тестах будет использовано N = 200 для высокого числа параллельно работающих клиентов для обеспечения приемлемых результатов.

Количество сообщений в клиенте N = 1000 в случае до 320 параллельных клиентов и N = 200 для большего числа параллельных клиентов (1280/2560).

  Mule 3.3.0 Talend-SE-5.1.1 UltraESB 1.7.1-Enhanced WSO2 ESB 4.5.1 WSO2 ESB 4.6.0
DirectProxy 3,375 3,315 4,839 3,311 5,278
CBRProxy 1,458 3,108 4,703 2,920 4,078
CBRSOAPHeaderProxy 2,262 3,185 5,063 3,270 4,634
CBRTransportHeaderProxy 2,225 3,751 5,523 3,849 5,998
XSLTProxy 2,225 2,333 3,387 1,856 1,800
XSLTEnhancedProxy (Fast XSLT mediator) 2,225 2,333 3,387 N/A 3,456
Security

Составляющие базовой архитектуры SOA - student2.ru

На приведенном выше графике показано, что WSO2 ESB 4.6.0 работает значительно быстрее, чем ESB 4.5.1 и является конкурентоспособным с UltraESB. Заметно, что XSLTProxy на WSO ESB проходит значительно медленнее, чем эквивалентный тест для UltraESB. Но эта проблема решается путем включения в WSO2 ESB 4.6.0 новой опции FastXSLT, которая обеспечивает производительность на уровне UltraESB.

Наши рекомендации