Анализ архитектуры приложения
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
“ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ”
Факультет компьютерных наук
Кафедра программирования и информационных технологий
Анализ инструментов для создания ESB приложений на примере разработки модуля для навигационной системы
Дипломная работа
230201 Информационные системы и технологии
Программирование и информационные технологии
Зав. Кафедрой __________ Тюкачев Н.А. к.ф.-м.н, доцент __.__.2013
Студент 5 курса __________ Стукалова Т. А.__.__.2013
Руководитель __________ Беляев А.С. ст. преподаватель __.__.2013
Воронеж 2013
Оглавление
Введение. 3
1. Постановка задачи. 5
2. Анализ задачи. 6
2.1 Анализ требований заказчика. 6
2.2 Анализ архитектуры приложения. 8
2.3 Анализ предметной области. 13
2.3.1 Сервисная шина предприятия. 13
2.3.2 Основы архитектуры SOA.. 14
2.3.3 Составляющие базовой архитектуры SOA.. 14
2.3.4 Роль ESB в архитектуре SOA.. 15
2.3.5 Роль веб-сервисов в SOA.. 16
2.4 Анализ существующих аналогов ESB технологий. 17
2.4.1 Mule ESB.. 17
2.4.2 Talend-SE.. 18
2.4.3 UltraESB.. 21
2.4.4 WSO2 ESB.. 22
2.4.5 Проведение тестов. 25
2.5 Анализ используемых средств. 34
2.5.1 WSO2 Enterprise Service Bus. 34
2.5.2 WSO2 Application Server 34
2.5.3 WSO2 Governance Registry. 37
2.5.4 WSO2 Carbon. 39
2.5.5 Java. 41
2.5.6 Microsoft SQL Server 41
2.5.7 Фреймворк Spring. 41
3. Реализация. 42
3.1 Описание архитектуры приложения. 42
3.2 Структура базы данных. 44
3.3 Реализация классов. 46
3.4 Развертывание приложения. 56
Заключение. 58
Список литературы.. 59
Введение
Корпоративная сервисная шина ESB (Enterprise Service Bus) - это инфраструктурная платформа, которая объединяет стандартизованную сервис-ориентированную архитектуру с мощными веб-сервисами. Данная технология является принципиально новым, более мощным и эффективным подходом к интеграции приложений. В последнее время эта технология довольно быстро развивается и является наиболее мощным, признанным инструментом, который легко адаптируется для реализации механизмов интеграции.
ESB имеет ряд преимуществ:
- Компоненты системы легко внедряются в существующие системы компании, также, исходя из текущих и перспективных требований бизнеса, разрабатываются дополнительные компоненты, выполняется взаимодействие, причем привычный ход бизнеса не нарушается.
- Все приложения быстро настраиваются, так как были созданы на совершенно новой платформе, которая отличается от обычных клиент-серверных систем.
- В приложениях с унаследованными системами, ESB убирает потребность сложного процесса их внедрения. Приложения и платформу легко установить на “шину” и обеспечить их сосуществование независимо друг от друга.
Технология ESB, в первую очередь, предназначена для крупных компаний и корпораций, которым необходимо достичь эффективного взаимодействия между приложениями, максимизировать использование ресурсов, а также обеспечить надежные средства построения соответствий между документами.
На данный момент существует множество инструментов, позволяющих без особых усилий создавать приложения на основе ESB. Каждый из них имеет свои преимущества и недостатки.
Исходя из вышесказанного, было решено проанализировать существующие инструменты, помогающие при построении приложений, в основе которых лежит ESB. На основе результатов анализа будет выбран наиболее зарекомендовавший себя инструмент. С его использованием в качестве примера будет разработан модуль для навигационной системы, основной целью которого является нахождение парковочного места относительного текущего позиционирования автомобиля. Модуль необходимо внедрить в существующую систему таким образом, чтобы он удовлетворял поставленным требованиям к системе.
Постановка задачи
Цель работы: анализ существующих инструментов, помогающие при построении приложений, в основе которых лежит ESB. С использованием выбранного инструмента в качестве примера будет разработан модуль для навигационной системы. Функциональность модуля будет включать нахождение парковочного места относительного текущего позиционирования автомобиля. Модуль необходимо внедрить в существующую систему таким образом, чтобы он удовлетворял поставленным требованиям к системе.
Для достижения поставленных целей необходимо решить следующие
задачи:
· Определиться с используемыми технологиями;
· Также требуется проанализировать и выбрать инструмент для создания модуля, в основе которого будет лежать сервис-ориентированная архитектура.
· Разработать базу данных, удовлетворяющую поставленным целям;
· Продумать общую архитектуру модуля, который будет удовлетворять поставленным требованиям.
Состав технических средств определен следующим образом:
· Сервер базы данных Microsoft SQL Server;
· Среда разработки – Java (версия 1.6).
Анализ задачи
2.1 Анализ требований заказчика
Разрабатываемое приложение будет предназначено для работы на встроенной системе в автомобиле. Эта система будет подключена к интернет и будет взаимодействовать с водителем автомобиля, который будет получать онлайн услуги во время вождения.
Будет производиться большое количество запросов к различным внешним ресурсам, и число ресурсов будет постоянно расти. Будет так же расти число клиентов, которых надо будет обслуживать. Такие условия и приводят к тому, что система должна быть гибкой, масштабируемой, безопасной и иметь модульную архитектуру, позволяющую обрабатывать миллионы транзакций в день.
Общая схема приложения представлена ниже.
Рис. 1 Обзор архитектуры системы
Основным требованием заказчика является то, что система состоит из трех основных модулей:
· Head Unit and Browser – это устройство, которое встроено в автомобиль, внутри него функционирует собственная операционная система, управляющая этим устройством. На базе этой операционной системы есть браузер, позволяющий взаимодействовать с внешними ресурсами. Этот модуль взаимодействует с модулем Vehicle Backend. Взаимодействие осуществляется через мобильное соединение через VPN канал.
· Vehicle Backend – этот модуль предназначен для связи различных внешних ресурсов с Head Unit and Browser модулем.
· Content and Services – это внешние сервисы и ресурсы из которых система получает информацию.
Описав некоторую структуру приложения, было выдвинуто требование, что приложение будет построено с использованием языка Java как веб приложение с использованием различных технологий (JSP, Spring).
Итак, на основе рекомендаций, требования к разрабатываемому модулю заключаются в следующем:
· Удобство и простота в эксплуатации на каждом уровне;
· Высокая доступность и надежность всех компонентов;
· Надежность: осуществление высокой степени конфиденциальности передаваемой информации;
· Масштабируемость: модуль должен быть масштабируемым для поддержки меняющихся требований;
· Гибкость: модуль должен быть разработан с возможностью его изменения в плане расширения и улучшения;
· Комплексный мониторинг: модуль должен предоставлять соответствующую информацию о выполнении своей работы на каждом уровне, информация затем может быть использована в качестве основы дальнейшего улучшения на каждом уровне (например, улучшение процессов);
· Своевременная технология обновления, позволяющая обновить функциональные компоненты для качественного улучшения производительности.
Основные принципы, применяемые в рамках системы для достижения целей:
· Модульный подход к системе;
· Хорошо продуманный дизайн архитектуры для обеспечения четкого разделения подсистем приложения;
· Строгое использование слоев в системе, способствующее гибкости в отношении повторного использования и расширяемости;
· Ориентация на сервисы;
· Использование стандартизированных интерфейсов на каждом уровне;
Анализ предметной области
Сервисная шина предприятия
Сервисная шина предприятия (англ. enterprise service bus, ESB) — связующий программный продукт, обеспечивающий централизованный и унифицированный событийно-ориентированный обмен сообщениями между различными информационными системами по принципу сервис-ориентированной архитектуры.
Основной принцип ESB — концентрация обмена сообщениями между различными системами через единую точку, в которой, при необходимости, обеспечивается транзакционный контроль, преобразование данных, сохранность сообщений. Все настройки обработки и передачи сообщений предполагаются также сконцентрированными в единой точке, и формируются в терминах служб, таким образом, при замене какой-либо информационной системы, подключённой к шине, нет необходимости в перенастройке остальных систем.
Наименование подобрано по аналогии с системной шиной компьютера, позволяющей подключать несколько устройств и передавать данные между ними по одному набору проводников.
Основными задачами ESB являются:
· Поддержка синхронного и асинхронного способа вызова служб;
· Использование защищённого протокола передачи сообщений с гарантией доставки;
· Статическая и алгоритмическая маршрутизация сообщений;
· Доступ к данным из сторонних информационных систем с помощью готовых или специально разработанных адаптеров;
· Обработка и преобразование сообщений;
· Разнообразные механизмы контроля и управления (аудиты, протоколирование).
Конкретные программные продукты обычно также содержат готовые адаптеры для соединения с определенным прикладным программным обеспечением, а также могут включать API для создания таких адаптеров.
Основы архитектуры SOA
Сервис-ориентированная архитектура (SOA, англ. service-oriented architecture) — модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам.
Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST).
Интерфейсы компонентов в сервис-ориентированной архитектуре инкапсулируют детали реализации (операционную систему, платформу, язык программирования) от остальных компонентов, таким образом обеспечивая комбинирование и многократное использование компонентов для построения сложных распределённых программных комплексов, обеспечивая независимость от используемых платформ и инструментов разработки, способствуя масштабируемости и управляемости создаваемых систем.
Теперь рассмотрим некоторые более сложные технические аспекты, такие как роль ESB, бизнес-процессы, а также роль веб-сервисов.
Роль 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.
Рис. 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 — веб-сервис, который предоставляет вычислительные мощности в облаке. Простой веб-интерфейс сервиса позволяет получить доступ к вычислительным мощностям и настроить с минимальными затратами ресурсы. Он предоставляет пользователям полный контроль над вычислительными ресурсами, а также доступную среду для работы. Сервис сокращает время, необходимое для получения и загрузки нового сервера.
Сценарии тестирования:
· 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 |
Тем не менее, было обнаружено, что результаты данного теста были, возможно, ненадежными. Данный факт был исследован более подробно и было отмечено, что в опубликованных тестах при большом количестве параллельных клиентов для 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 |
На приведенном выше графике показано, что WSO2 ESB 4.6.0 работает значительно быстрее, чем ESB 4.5.1 и является конкурентоспособным с UltraESB. Заметно, что XSLTProxy на WSO ESB проходит значительно медленнее, чем эквивалентный тест для UltraESB. Но эта проблема решается путем включения в WSO2 ESB 4.6.0 новой опции FastXSLT, которая обеспечивает производительность на уровне UltraESB.
Заключение.
На основе представленной информации о технологиях ESB и проведенных тестах можно сделать некоторые выводы, доказывающие целесообразность использования определенной технологии ESB из представленных.
Mule и WSO2 имеют множество дополнительных удобных инструментов, помогающих программисту в разработке приложений, основанных на SOA. Это такие инструменты как:
· Application Server;
· Governance Registry;
· Activity Monitor и др.
Но тесты для Mule показывают более низкие результаты, чем для WSO2.
В отличие от Mule и WSO2, UltraESB показывает более высокие результаты в тестах. Но эта технология не имеет такого количества дополнительных инструментов для облегчения разработки, как представленные выше технологии, поэтому использование UltraESB на данный момент является нецелесообразным.
Talend-SE имеет в своем арсенале службу мониторинга активности, облегченный контейнер для развертывания различных компонент и приложений и т.д. Но помимо не очень высоких показателей эффективности в тестах, Talend-SE не имеет четкой, хорошей документации, что в свою очередь очень затрудняет использование этого продукта.
На основе вышесказанного можно сделать вывод о том, что наиболее подходит для использования на данный момент технологии WSO2. Имеется линейка продуктов WSO2, которая удовлетворяет поставленным требованиям. Они были выбраны именно потому, что хорошо интегрируются друг с другом, обладают хорошей устойчивостью и решают поставленные задачи. Также наличие отличной документации является несомненным преимуществом.
Анализ используемых средств
WSO2 Enterprise Service Bus
WSO2 ESB - легковесный, имеет высокую производительность, поэтому именно он лучше всего подходит для использования в системе. На основе анализа, проведенного ранее, был выбран именно этот продукт для реализации SOA в приложении.
WSO2 Application Server
WSO2 Application Server является равноправным WSO2 сервером, включающим хостинг, развертывание и управление различными приложениями. Поэтому WSO2 Application Server поддерживает хостинг веб-приложений, веб-сервисов, служб данных и многого другого.
В основе WSO2 Application Server лежат Apache Tomcat, Apache Axis2 и Apache CXF. В соответствии с упомянутыми фреймворками, WSO2 Application Server использует многие стандарты веб-сервисов, такие как JAX-WS 2.2, JAX-RS 2.0 спецификации, SOAP 1.1 & 1.2, WSDL 1.1 & 2.0, все WS-* стандарты и др.. Аналогичным образом он так же поддерживает широкий спектр транспортных протоколов, в том числе HTTP/S, JMS, SMTP и TCP. Более того, WSO2 Application Server может принимать и обрабатывать сообщения, предназначенные для Axis2 и CXf веб-сервисов (т.е. поддерживает работу с различными веб-сервисами). Поддержка Apache Tomcat сделала возможным его работу в качестве контейнера приложений.
Следующее изображение показывает архитектуру WSO2 Application Server.
Рис. 6 Архитектура WSO2 Application Server
WSO2 Application Server может принимать SOAP и REST сообщения из веб-каналов, в то время как транспортный уровень сервера одновременно прослушивает сообщения от настроенного протокола.
Поскольку в основе сервера лежит фреймворк Axis2, то запросы направляются через канал сообщений, и набор обработчиков будет делать дополнительную обработку сообщений, таких как операции QoS (безопасность, надежный обмен сообщениями, информацией расшифровки и так далее). Полученные сообщения передаются в приемник сообщений, который принимает решение о том, какой веб-сервис должен быть вызван. Кроме того, клиенты веб-приложений могут вызывать веб-приложения, развернутые внутри сервера приложений непосредственно через транспорт Tomcat (HTTP / S).
WSO2 Application Server так же поставляется с полным набором API для разработки приложений, обеспечивающими безопасность, управление данными, управление метаданными и производительностью системы.
Особенности
· Хостинг и управление веб-приложениями:
- Запуск любого стандартного файла WAR, также получение решений для RESTful сервисов;
- Полная административная консоль для WAR файлов;
- Комплексное управление безопасностью приложений;
- Авторизация через интеграцию с WSO2 Enterprise Service Bus и WSO2 Identity Server;
- Источник данных управления для масштабируемого управления данными;
- Хостинг и управление веб-сервисами:
- Поддержка SOAP, RESTful и JAX-WS сервисов;
- Интеграция Apache Axis2 и Apache CXF инструментов веб- сервисов;
- Комплексное управление пользователями с помощью интеграции с WSO2 Identity Server;
- Встроенная поддержка для сервисов передачи данных;
- Кластеризация и репликация HTTP-сессии для веб-служб;
- Управление и мониторинг.
- Богатый контекст для программирования масштабируемых приложений и сервисов:
- Всеобъемлющие простые в использовании API-интерфейсы для разработки корпоративных приложений, освобождающие разработчиков от сложности слежения за безопасностью, производительностью, управлением данными, метаданными и системами управления;
- Распределенное кэширование для больших масштабных приложений;
- Общий реестр метаданных и хранилище для любой области применения метаданных с помощью встроенного реестра или WSO2 Governance Registry;
- JNDI провайдер для доступа к общему источнику данных и других ресурсов;
- Распределенный обмен кэшем и метаданными для различных приложений и услуг;
- Масштабируемость, легковесность, простота развертывания:
- Легкая разработка, отладка и развертывание как приложений, так и сервисов с инструментами для отслеживания сообщений и интерактивного тестирования;
- Очень простое управление безопасностью;
- Настройка сервера и выбор способа развертывания;
- Интеграция с SVN, Maven, Ant и другими стандартными инструментами для разработки и развертывания;
- Интегрировано с WSO2 Developer Studio, Eclipse IDE на основе всех продуктов WSO2.
WSO2 Governance Registry
Registry – это компонент управления ресурсами в си<