Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
“ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ”
Факультет компьютерных наук
Кафедра программирования и информационных технологий
Анализ инструментов для создания ESB приложений на примере разработки модуля для навигационной системы
Дипломная работа
230201 Информационные системы и технологии
Программирование и информационные технологии
Зав. Кафедрой __________ Тюкачев Н.А. к.ф.-м.н, доцент __.__.2013
Студент 5 курса __________ Стукалова Т. А.__.__.2013
Руководитель __________ Беляев А.С. ст. преподаватель __.__.2013
Воронеж 2013
Оглавление
[1]
[2] [2.1] 2.1 Анализ требований заказчика [2.2] 2.2 Анализ архитектуры приложения [2.3] 2.3 Анализ предметной области [2.3.1] 2.3.1 Сервисная шина предприятия [2.3.2] 2.3.2 Основы архитектуры SOA [2.3.3] 2.3.3 Составляющие базовой архитектуры SOA [2.3.4] 2.3.4 Роль ESB в архитектуре SOA [2.3.5] 2.3.5 Роль веб-сервисов в SOA [2.4] 2.4 Анализ существующих аналогов ESB технологий [2.4.1] 2.4.1 Mule ESB [2.4.2] 2.4.2 Talend-SE [2.4.3] 2.4.3 UltraESB [2.4.4] 2.4.4 WSO2 ESB [2.4.5] 2.4.5 Проведение тестов [2.5] 2.5 Анализ используемых средств [2.5.1] 2.5.1 WSO2 Enterprise Service Bus [2.5.2] 2.5.2 WSO2 Application Server [2.5.3] 2.5.3 WSO2 Governance Registry [2.5.4] 2.5.4 WSO2 Carbon [2.5.5] 2.5.5 Java [2.5.6] 2.5.6 Microsoft SQL Server [2.5.7] 2.5.7 Фреймворк Spring [3] 3. Реализация [3.1] 3.1 Описание архитектуры приложения [3.2] 3.2 Структура базы данных [3.3] 3.3 Реализация классов
[3.4]
[4]
[5] |
Введение
Корпоративная сервисная шина ESB (Enterprise Service Bus) - это инфраструктурная платформа, которая объединяет стандартизованную сервис-ориентированную архитектуру с мощными веб-сервисами. Данная технология является принципиально новым, более мощным и эффективным подходом к интеграции приложений. В последнее время эта технология довольно быстро развивается и является наиболее мощным, признанным инструментом, который легко адаптируется для реализации механизмов интеграции.
ESB имеет ряд преимуществ:
- Компоненты системы легко внедряются в существующие системы компании, также, исходя из текущих и перспективных требований бизнеса, разрабатываются дополнительные компоненты, выполняется взаимодействие, причем привычный ход бизнеса не нарушается.
- Все приложения быстро настраиваются, так как были созданы на совершенно новой платформе, которая отличается от обычных клиент-серверных систем.
- В приложениях с унаследованными системами, ESB убирает потребность сложного процесса их внедрения. Приложения и платформу легко установить на “шину” и обеспечить их сосуществование независимо друг от друга.
Технология ESB, в первую очередь, предназначена для крупных компаний и корпораций, которым необходимо достичь эффективного взаимодействия между приложениями, максимизировать использование ресурсов, а также обеспечить надежные средства построения соответствий между документами.
На данный момент существует множество инструментов, позволяющих без особых усилий создавать приложения на основе ESB. Каждый из них имеет свои преимущества и недостатки.
Исходя из вышесказанного, было решено проанализировать существующие инструменты, помогающие при построении приложений, в основе которых лежит ESB. На основе результатов анализа будет выбран наиболее зарекомендовавший себя инструмент. С его использованием в качестве примера будет разработан модуль для навигационной системы, основной целью которого является нахождение парковочного места относительного текущего позиционирования автомобиля. Модуль необходимо внедрить в существующую систему таким образом, чтобы он удовлетворял поставленным требованиям к системе.
Цель работы: анализ существующих инструментов, помогающие при построении приложений, в основе которых лежит ESB. С использованием выбранного инструмента в качестве примера будет разработан модуль для навигационной системы. Функциональность модуля будет включать нахождение парковочного места относительного текущего позиционирования автомобиля. Модуль необходимо внедрить в существующую систему таким образом, чтобы он удовлетворял поставленным требованиям к системе.
Для достижения поставленных целей необходимо решить следующие
задачи:
Состав технических средств определен следующим образом:
Разрабатываемое приложение будет предназначено для работы на встроенной системе в автомобиле. Эта система будет подключена к интернет и будет взаимодействовать с водителем автомобиля, который будет получать онлайн услуги во время вождения.
Будет производиться большое количество запросов к различным внешним ресурсам, и число ресурсов будет постоянно расти. Будет так же расти число клиентов, которых надо будет обслуживать. Такие условия и приводят к тому, что система должна быть гибкой, масштабируемой, безопасной и иметь модульную архитектуру, позволяющую обрабатывать миллионы транзакций в день.
Общая схема приложения представлена ниже.
Рис. 1 Обзор архитектуры системы
Основным требованием заказчика является то, что система состоит из трех основных модулей:
Описав некоторую структуру приложения, было выдвинуто требование, что приложение будет построено с использованием языка Java как веб приложение с использованием различных технологий (JSP, Spring).
Итак, на основе рекомендаций, требования к разрабатываемому модулю заключаются в следующем:
Основные принципы, применяемые в рамках системы для достижения целей:
Приложение построено на сервис-ориентированной архитектуре, использование которой необходимо для выполнения определенных требований и обеспечения гибкости внутри системы. Одним из основных аспектов является концепция разделения на слои. Система представляет собой платформу, предназначенную для управления сервисами и их выполнения. Система ориентирована на пользователя или автомобиль для различных групп пользователей.
Рис. 2 Общая архитектура приложения
В операционную платформу будут интегрированы продукты для создания ESB приложений и использованы в качестве SOA компонентов. Эти продукты могут быть использованы как для работы, управления и осуществления контроля, так и в качестве доставки служб внутрь автомобиля и дальнейшего подключения различных внешних систем к платформе. На следующем рисунке более детально показаны используемые слои приложения.
Рис. 3 Детальная архитектура приложения
Внутренний интерфейс приложения состоит из 6 различных кластеров / слоев, назначение которых более подробно будет объяснено позже:
Device Gateway действует как прокси между мобильными устройствами или приборами, установленными в автомобиле, и другими кластерами. Device Gateway представляет собой группу компонентов, отвечающих за обработку входящих сообщений или запросов на обслуживание с мобильных устройств или других клиентов сети. Device Gateway помогает достичь высокой пропускной способности и малого времени задержки в обработке запросов сервисов в рамках платформы путем отделения основных компонентов бизнес-логики от тех, которые касаются получения сообщения. Слой состоит из нескольких WSO2 ESB, содержащих прокси для слоя End User Services.Устройство, которое запрашивает услугу, посылает свой запрос на Device Gateway.Входящий запрос перенаправляется в целевую службу, которая является частью кластера "End User Service". Для перенаправления запроса, целевая служба или слой презентации должны быть переопределены (Conv.Resolver). После этого запрос должен быть отослан целевому компоненту (Dispachter).
Слой End User Services содержит веб-представление и веб-сервисы для приложений, предусмотренных устройством и предназначенных для конечного пользователя (например, Weather, Parking и т.д.,). Как правило, приложение состоит хотя бы из одного веб-представления и по крайней мере одного сервисного компонента. За время существования, различные версии могут быть добавлены и предоставлены одновременно. Система построена на гибкой и интегрированной среде выполнения, где Tomcat и WSO2 AS используются в кластере. Сервисы могут быть построены не только на основе фремворка Spring, но и на других парадигмах Java. Важной особенностью так же является многоуровневая внутренняя архитектура самих приложений.
Central Platform Services предоставляют широкий спектр платформенных сервисов, необходимых всем сервисам, например, доступ к данным и т.д.
Service Integration Layer содержит сервисы для управления, мониторинга и администрирования платформы. Этот слой соединяет все другие, и наследует управление интерфейсами и сервисные адаптеры.
B2B Interface предоставляет интерфейсы внешних сервисов, которые могут быть использованы для принятия внешних сервисов, таких как Twitter или RSS, эти сервисы будут называться Service Adapters.
PKI инфраструктура публичных ключей, которая обрабатывает сертификаты транспортных средств.
Основным требованием, выдвигаемым заказчиком было то, что клиент не может напрямую обратится к любому из компонентов и слоев архитектуры. Все запросы, приходящие от клиента, должны идти на Device Gateway, где они контролируются на каждом обращении к сервисам или внешним ресурсам. Это делается для того, чтобы осуществить безопасность, нахождение проблемных мест, анализируя их и улучшая разрабатываемое приложение. Схема маршрутов движения запросов представлена на следующем рисунке.
Рис. 4. Схема движения запросов в приложении.
Инфраструктура и техническая архитектура выполнены в виде многоуровневой архитектуры с четырьмя разделенными зонами. Разделение также происходит на уровне 2 между web-уровнем и бизнес-логикой. Слои поддерживают гибкость и масштабируемость всей системы.
Рис. 4 Техническая архитектура приложения
Сервисная шина предприятия (англ. enterprise service bus, ESB) связующий программный продукт, обеспечивающий централизованный и унифицированный событийно-ориентированный обмен сообщениями между различными информационными системами по принципу сервис-ориентированной архитектуры.
Основной принцип ESB концентрация обмена сообщениями между различными системами через единую точку, в которой, при необходимости, обеспечивается транзакционный контроль, преобразование данных, сохранность сообщений. Все настройки обработки и передачи сообщений предполагаются также сконцентрированными в единой точке, и формируются в терминах служб, таким образом, при замене какой-либо информационной системы, подключённой к шине, нет необходимости в перенастройке остальных систем.
Наименование подобрано по аналогии с системной шиной компьютера, позволяющей подключать несколько устройств и передавать данные между ними по одному набору проводников.
Основными задачами ESB являются:
Конкретные программные продукты обычно также содержат готовые адаптеры для соединения с определенным прикладным программным обеспечением, а также могут включать API для создания таких адаптеров.
Сервис-ориентированная архитектура (SOA, англ. service-oriented architecture) модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам.
Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST).
Интерфейсы компонентов в сервис-ориентированной архитектуре инкапсулируют детали реализации (операционную систему, платформу, язык программирования) от остальных компонентов, таким образом обеспечивая комбинирование и многократное использование компонентов для построения сложных распределённых программных комплексов, обеспечивая независимость от используемых платформ и инструментов разработки, способствуя масштабируемости и управляемости создаваемых систем.
Теперь рассмотрим некоторые более сложные технические аспекты, такие как роль ESB, бизнес-процессы, а также роль веб-сервисов.
Базовая архитектура SOA состоит из провайдера сервисов, сервиса и (необязательного) каталога сервисов. Для обмена информацией используется механизм обмена сообщениями типа "приложение к приложению".
Сходство между этой моделью и чистыми веб-сервисами совершенно очевидно, поскольку в обоих случаях применяется WSDL-документ, являющийся контрактом по активизации, хранящимся в каталоге сервисов, из которого этот сервис может быть запрошен и извлечен посредством механизма UDDI (UDDI это отраслевая спецификация для публикации и поиска информации о веб-службах). Веб-сервисы в действительности являются реализацией архитектуры SOA на самом базовом уровне.
В этой модели базовый сценарий таков. Сначала провайдер сервиса создает сервис, принимает решение открыть этот сервис и публикует его. Публикация выполняется путем отправки информации о сервисе в каталог сервисов. С другой стороны, инициатор запросов сервиса, нуждаясь в определенном сервисе, просматривает каталог сервисов в поисках того из них, который удовлетворяет необходимому критерию. После обнаружения такого сервиса и использования доступной в каталоге сервисов информации инициатор запросов сервиса может напрямую обратиться к провайдеру сервисов надлежащим способом для удовлетворения бизнес-потребности.
ESB играет важную роль в архитектуре SOA. По сути, она предоставляет магистральную сеть и инфраструктуру для соединения провайдеров и потребителей сервисов.
Ниже более подробно перечислены роли ESB:
Хотя веб-сервисы появились до SOA, они представляют собой ответ и реализацию потребности архитектуры SOA в механизме взаимодействия между системами и платформами. Они помогают быстро внедрить и запустить SOA в работу, поскольку уже поддерживают технологии, удовлетворяющие ее потребности. Сегодня очевидно, что веб-сервисы представляют собой основу архитектуры SOA и являются рекомендованной технологией для обеспечения взаимодействия.
Веб-сервисы являются основой архитектуры SOA по следующим причинам:
Проанализировав требования заказчика, было определено:
Таким образом, требуется провести анализ существующих технологий и выбрать именно ту, которая наиболее четко и точно удовлетворяет поставленным требованиям.
Существует множество open-source ESB технологий. Самые известные и используемые из них это:
Ниже представлен обзор этих ESB технологий.
Mule ESB корпоративная интеграционная шина с открытым исходным кодом, с более чем 2500 промышленных внедрений, включая 5 из 10 крупнейших мировых банков и более 35% компаний и списка Global 500.
Mule ESB предоставляет разработчикам простой и эффективный инструмент, позволяющий интегрировать приложения и сервисы с минимальными затратами.
Mule ESB это лёгкая и гибкая платформа, легко адаптируемая в существующую инфраструктуру, так же достаточно надёжная для обеспечения бесперебойной работы самых крупных и требовательных корпоративных реализаций SOA.
Низкие системные требования упрощают внедрение и поддержку.
Работает как под управлением сервера приложений так и без.
Более 100 транспортов и модулей для интеграции с различными системами, протоколами, SOAP и REST сервисами.
Преимуществами Mule ESB является то, что эта технология поддерживает:
Помимо этого, Mule имеет еще несколько продуктов, которые могут помочь в разработке приложения:
Talend Open Studio ESB инновационное средство (на базе Eclipse) для моделирования, настройки и развертывания интеграционных решений, использующее корпоративную сервисную шину с открытым исходным кодом Talend ESB на базе Apache. Talend Open Studio ESB устраняет длинную кривую обучения, типичную для большинства интеграционных инструментов. TOS ESB ускоряет развертывание, повышая тем самым продуктивность разработчиков и позволяя им быстро реагировать на интеграционные требования.
TOS ESB позволяет разработчикам быстро выстраивать интеграционные процессы, путем простого перемещения компонентов в графическую рабочую область, определения связей и отношений между ними и настройки специфических свойств.
Talend ESB Studio предоставляет доступ к библиотеке из 450 коннекторов, поддерживающих все типы источников и конечных систем для интеграции, миграции и синхронизации данных.
Ключевые особенности:
Функциональные возможности:
UltraESB является бесплатным и свободно распространяемым Enterprise Service Bus, впервые выпущенный в январе 2010 года под AdroitLogic Zero-Dollar EULA. С августа 2010 года его исходный код был доступен по лицензии OSI, утвержденный Affero General Public License (AGPL).
Разработка,конфигурирование и тестирование:
Управление и мониторинг:
Кластеризация и высокая доступность:
Технические особенности:
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.
Особенности
Для того чтобы определиться, какая из представленных систем лучше всего удовлетворяет поставленным целям, было решено проанализировать их производительность и другие характеристики, проведя несколько соответствующих тестов. Было решено сравнивать производительность самых последних версий технологий, о которых было сказано выше: 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 веб-сервис, который предоставляет вычислительные мощности в облаке. Простой веб-интерфейс сервиса позволяет получить доступ к вычислительным мощностям и настроить с минимальными затратами ресурсы. Он предоставляет пользователям полный контроль над вычислительными ресурсами, а также доступную среду для работы. Сервис сокращает время, необходимое для получения и загрузки нового сервера.
Сценарии тестирования:
Для каждого сценария были проведены тесты с использованием различных значений: размеров сообщений и количества пользователей. Размеры образца сообщения колебались от 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 |
2,225 |
2,333 |
3,387 |
N/A |
5,473 |
Security |
458 |
534 |
603 |
486 |
560 |
Тем не менее, было обнаружено, что результаты данного теста были, возможно, ненадежными. Данный факт был исследован более подробно и было отмечено, что в опубликованных тестах при большом количестве параллельных клиентов для 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 |
2,225 |
2,333 |
3,387 |
N/A |
3,456 |
Security |
458 |
534 |
603 |
529 |
566 |
На приведенном выше графике показано, что WSO2 ESB 4.6.0 работает значительно быстрее, чем ESB 4.5.1 и является конкурентоспособным с UltraESB. Заметно, что XSLTProxy на WSO ESB проходит значительно медленнее, чем эквивалентный тест для UltraESB. Но эта проблема решается путем включения в WSO2 ESB 4.6.0 новой опции FastXSLT, которая обеспечивает производительность на уровне UltraESB.
Среднее время задержки для WSO2 ESB 4.6.0 и 4.5.1.
Бал проведен дополнительный тест для измерения среднего времени задержки, добавленной в WSO2 версии ESB 4.6.0 и 4.5.1. Была рассчитана задержка для параллелизма в 20 клиентов и размера сообщения 1000 по следующей формуле: [Задержка = время прямого вызова время в обе стороны через ESB]. В следующей таблице приведены результаты теста:
Latency for 1K message |
ESB 4.6.0 |
ESB 4.5.1 |
DirectProxy |
0.582 |
0.828 |
CBRProxy |
0.742 |
0.979 |
CBRSOAPHeaderProxy |
0.691 |
0.857 |
CBRTransportHeaderProxy |
0.827 |
0.861 |
XSLTProxy |
1.987 |
1.818 |
XSLTEnhancedProxy |
1.345 |
N/A |
SecureProxy |
8.867 |
9.497 |
Как указано в таблице и на графике, WSO2 ESB обеспечивает накладную задержку всего в доли миллисекунды в большинстве случаев, что является очень хорошим показателем.
WSO2 ESB 4.6.0 Анализ использования памяти (После долгой работы).
Следующие графики иллюстрируют использование памяти после 40 часов непрерывной работы. Как можно увидеть, использование динамической памяти является стабильной.
Заключение.
На основе представленной информации о технологиях ESB и проведенных тестах можно сделать некоторые выводы, доказывающие целесообразность использования определенной технологии ESB из представленных.
Mule и WSO2 имеют множество дополнительных удобных инструментов, помогающих программисту в разработке приложений, основанных на SOA. Это такие инструменты как:
Но тесты для Mule показывают более низкие результаты, чем для WSO2.
В отличие от Mule и WSO2, UltraESB показывает более высокие результаты в тестах. Но эта технология не имеет такого количества дополнительных инструментов для облегчения разработки, как представленные выше технологии, поэтому использование UltraESB на данный момент является нецелесообразным.
Talend-SE имеет в своем арсенале службу мониторинга активности, облегченный контейнер для развертывания различных компонент и приложений и т.д. Но помимо не очень высоких показателей эффективности в тестах, Talend-SE не имеет четкой, хорошей документации, что в свою очередь очень затрудняет использование этого продукта.
На основе вышесказанного можно сделать вывод о том, что наиболее подходит для использования на данный момент технологии WSO2. Имеется линейка продуктов WSO2, которая удовлетворяет поставленным требованиям. Они были выбраны именно потому, что хорошо интегрируются друг с другом, обладают хорошей устойчивостью и решают поставленные задачи. Также наличие отличной документации является несомненным преимуществом.
WSO2 ESB - легковесный, имеет высокую производительность, поэтому именно он лучше всего подходит для использования в системе. На основе анализа, проведенного ранее, был выбран именно этот продукт для реализации SOA в приложении.
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 для разработки приложений, обеспечивающими безопасность, управление данными, управление метаданными и производительностью системы.
Особенности
Registry это компонент управления ресурсами в системе SOA. WSO2 Governance Registry является SOA интегрированным с реестром / репозиторием, обогащен множеством различных возможностей и функций. Все продукты WSO2 включают Registry ядро в WSO2 Carbon, который обеспечивает базовую регистрацию и функциональность репозитория. Ядро Registry определяет пространство реестра, которое используется для хранения данных и сохранения конфигурации. Пространство Registry, отведенное на каждый продукт содержит три основных раздела:
Содержит конфигурацию системы, такую как данные времени выполнения, являющейся локальной для одного экземпляра продукта. Например, локальное хранилище данных используется для хранения настроенных конфигураций, которые являются локальными для каждого экземпляра.
Является наиболее широко используемым разделом в пространстве реестра, содержит конкретную конфигурацию продукта. Эти конфигурации могут быть разделены между несколькими экземплярами одного и того же продукта (например, кластер из узлов ESB).
Содержит данные и конфигурацию, общую для всех платформ. WSO2 Governance Registry оставляет использование этой части пространства реестра для хранения сервисов и связанных с ними метаданных, таких как WSDL, схем и конечных точек.
WSO2 Governance Registry предоставляет веб и APP интерфейсы, чтобы делать видимой извне ее функциональность. Встроенный реестр публикует все свои методы через два основных интерфейса:
Предоставляет польз-ля/роль и особенности авторизации.
Слой доступа к данным выполняется SQL запросом для взаимодействия с базой данных с целью выполнения различных Registry операций. Registry может быть настроен с многими СУБД, такими как MySQL, MSSQL, Oracle, H2, Derby и т.д. На рисунке ниже показана упрощенная схема архитектуры WSO2 Registry.
Рис. 7 Архитектура WSO2 Registry
Управление жизненным циклом является ключевым аспектом управления в реестре, где ресурсы сохраняются в различных стадиях жизненного цикла, где они могут изменяться в соответствии с требованиями процесса.
WSO2 Carbon переопределяет связующее программное обеспечение путем предоставления интегрированной и компонентной промежуточной платформы, которая адаптируется к специфическим потребностям любого IT-проекта на предприятии.
Открытый исходный код, основанный на стандартах, WSO2 Carbon позволяет разработчикам быстро организовать бизнес-процессы, создавать приложения и разрабатывать сервисы с использованием WSO2 Developer Studio и обширного спектра бизнес- и технических легко интегрируемых сервисов.
Базовая часть фреймворка WSO2 Carbon функциониует, как "Eclipse for servers" и включает в себя общие возможности, разделяемые всеми продуктами WSO2, такими как встроенный реестр, управление пользователями, протоколы, безопасность, логирование, кластеризацию, кэширование и регулирование сервисов, координации и GUI-фреймворк.
Особенности
Java объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры.
Microsoft SQL Server система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка.
Spring используется для больших корпоративный приложений, там есть все для этого необходимое.
Основная функция Spring - интеграция слоев приложения в одно целое при помощи шаблона Dependency Injection.nDependency Injection определяет зависимости компонента от других компонентов на уровне интерфейсов.
Spring Framework может быть рассмотрен как коллекция меньших фреймворков или фреймворков во фреймворке. Большинство этих фреймворков может работать независимо друг от друга, однако, они обеспечивают большую функциональность при совместном их использовании. Эти фреймворки делятся на структурные элементы типовых комплексных приложений:
Рис. 8 Компонентная диаграмма
На рис. 8 изображена компонентная диаграмма модуля парковки приложения. Она состоит из 6 основных компонентов:
Входящий запрос перенаправляется в целевую службу, которая является частью кластера "End User Service".
Рис. 8 Структура базы данных (PARKING_SETTINGS)
PARKING_SETTINGS. Содержит информацию о настройках приложения для парковки:
Рис. 9 Структура базы данных (PARKING_FAVORITES, PARKING_RECENTLY_VIEWED)
PARKING_FAVORITES. Содержит информацию о парковках, которые пользователь добавил в избранное:
PARKING_RECENTLY_VIEWED. Содержит информацию о недавно просмотренных парковочных стоянках. Таблица имеет такую же структуру, как и таблица PARKING_FAVORITES.
3.3.1 Диаграмма пакетов
Рис. 10 Диаграмма пакетов
В приложении есть 5 основных пакетов, каждый из пакетов представляет из себя набор интерфейсов и классов, реализующих функциональность определенного слоя:
3.3.2 Слой DAO
Рис. 11 Слой DAO
Описание основных методов
3.3.3 Контроллер
Рис. 12 Контроллер
Класс-контроллер, обрабатывающий все запросы, приходящие от клиента.
Описание основных методов
3.3.4 Бизнес логика
Рис. 13 Диаграмма пакетов бизнес логики
Диаграмма классов бизнес логики:
Рис. 14 Диаграмма класса сервиса ParkingService бизнес логики
Описание основных методов.
Класс ParkingService. Описанные ниже методы используется в контроллере. Класс ParkingService инжектится в контроллер.
Рис. 14 Диаграмма классов для провайдера.
Здесь изображена диаграмма классов провайдера: интерфейс и его реализация. В соответствии со спецификой работы с внешними сервисами, потребовалось выделить два провайдера, каждый из которых обрабатывает требуемую информацию и преобразовывает ее к необходимому формату для дальнейшей передачи этой информации приложению и ее обработки соответствующим образом. На диаграмме изображен один провайдер для демонстрации его функциональности EuropeProvider.
Основные методы.
3.2.5 API
Рис. 15 API
Рис. 16 Диаграмма развертывания
На рис. 16 изображена диаграмма развертывания модуля парковки приложения.
Имеется узел «Carbon Server Claster» DeviceGateway со средой исполнения WSO2 ESB. На данном WSO2 ESB разворачивается web.xml. Данный артефакт является прокси-сервисом, который определяет источник запроса и перенаправляет запрос к нужному сервису.
Имеется узел «Carbon Server Claster» EndUserService с сервером приложений WSO2 AS. На сервере приложений разворачивается артефакт web.war. Web.war содержит внутри себя следующие артефакты:
Имеется узел «Carbon Server Claster» ServiceIntegration со средой исполнения WSO2 ESB. На данном WSO2 ESB разворачиваются два прокси-сервиса адаптера. Это артефакты PY_EuropeAdapter.xml и PY_JapanAdapter.xml. Эти два прокси-сервиса работают с внешними сервисами. При обращении к внешнему сервису обращение идет не напрямую, а через PY_EuropeAdapter и PY_JapanAdapter (в зависимости от страны). Главная задача прокси-сервиса - перенаправление запроса. Для каждого внешнего сервиса используется свой прокси.
Помимо вышеперечисленного имеется еще два артефакта: apps-web-main-carbon.car и parking-enduser.car. Apps-web-main-carbon.car разворачивается на WSO2 AS и WSO2 ESB и содержит в себе web.war и web.xml. Parking-enduser.car разворачивается на другом WSO2 ESB и содержит в себе два артефакта: PY_EuropeAdapter.xml и PY_JapanAdapter.xml.
Также есть узел сервер базы данных MS SQL 2008.
(Добавить раздел с интерфейсом приложения?...)
В рамках данной работы был проведен анализ существующих инструментов, помогающих при построении приложений, в основе которых лежит ESB. С использованием продукта WSO2 был разработан модуль для навигационной системы.
В ходе реализации были решены следующие задачи:
На основе решенных задач был создан модуль для системы навигации, который был внедрен в существующую навигационную систему. Он полностью удовлетворяет поставленным требованиям системы. Модуль предоставляет пользователю возможность нахождения парковочного места относительного текущего позиционирования автомобиля. Модуль позволяет искать парковочные стоянки по заданным критериям поиска, предоставлять информацию о них, добавлять эти парковочные стоянки в список избранных, хранить их в системе.
664 с.
(http://docs.wso2.org/wiki/dashboard.action/).
(http://www.springsource.org/documentation).
http://www.mulesoft.com/
http://www.talend.com/
http://maven.apache.org/
384 с.
384 с.
Скопировать интерфейс
Подправить диаграммы
Добавить классы из пакета model
Добавить пример прокси-сервиса?
PAGE \* MERGEFORMAT 59