ПЗ (1194062), страница 2
Текст из файла (страница 2)
При использовании технологии обмена сообщениями используется модель асинхронной обработки данных. При отправке сообщения, запрос передается асинхронно к приемнику, где он может быть соответствующим образом обработан. Преимущество асинхронной обработки данных заключается в том, что пользователи могут продолжать свою работу в то время как сообщение обрабатывается на сервере приложений. Это приводит к большей масштабируемости приложений, так как клиенты только должны помещать сообщения в очередь.
Есть важное различие между асинхронной и отложенной обработкой сообщения. Асинхронная обработка сообщений предполагает, что работа будет сделана позже. При отложенной обработке сообщения обрабатывается с заранее заданной задержкой [8]. Сообщение может быть обработано сразу же, в течение нескольких часов или в течение нескольких дней, в зависимости от заданной конфигурации системы сообщений. Отложенная обработка сообщений имеет следующие преимущества:
-
приемник контролирует, когда сообщения обрабатываются;
-
балансировка нагрузки происходит между несколькими серверами в периоды пиковой нагрузки;
-
отказоустойчивость поддерживает принимающая сторона.
Предположим, что запускается система обмена сообщениями в компании, с большим числом сообщений, интегрируемых её сотрудниками. С отложенной обработкой можно настроить систему обмена сообщениями, так что сообщения будут только помещаться в очередь в течение дня и обрабатываться в течение ночи при наличии дополнительных ресурсов. Это означает, что запросы пользователя могут быть обработаны более быстро, и приложения будет более производительным при высоких нагрузках [21].
При использовании балансировки нагрузки, можно определить, на каком сервере сообщение должно быть обработано. Это необходимо при большом потоке сообщений, которые должны быть обработаны быстро. Можно применять несколько экземпляров службы обмена сообщениями, с подключенными к нм клиентами. При этом использовать экземпляр в автономном режиме для выполнения некоторых работ по техническому обслуживанию на сервере система обмена сообщениями будет продолжать работать без каких-либо проблем или изменений в конфигурации, потому что новые запросы от клиентов будут распределены среди других доступных услуг.
Технологии обмена сообщениями может также помочь обеспечить отказоустойчивость систем. Отказоустойчивость можно достичь с помощью следующих способов:
-
надежная передача сообщений;
-
балансировка нагрузки;
-
динамическое изменение маршрута.
Надежная передача сообщений означает, что отправитель может гарантировать, что сообщение достигнет цели. Надежность полностью зависит от того, доступна ли цель в настоящее время. Если приемник находится в автономном режиме, технология обмена сообщениями будет пытаться повторно отправить сообщение до тех пор, пока клиент не появится в сети, и сообщение не достигнет цели. Это имеет ряд преимуществ: более легкое проведение работы по техническому обслуживанию, отправленные сообщения не могут быть потеряны и поддерживаются в автономном режиме.
Надежный обмен сообщениями работает в обоих направлениях по каналу связи и является важным фактором при разработке и реализации интеллектуальных клиентских приложений. Одной из характерных черт таких смарт-клиентов является то, что приложение работает в автономном режиме. Примером таких приложений может являться Microsoft Office Outlook, позволяющий работать через электронную почту и отправлять сообщения, находясь в автономном режиме. При подключении к интернету Outlook синхронизирует локальное хранилище данных с обменным сервером в фоновом режиме и посылает все неотправленные письма их получателям.
Обеспечить такую же гибкость в приложениях возможно при использовании технологии обмена сообщениями. Пользователь просто выполняет работу в автономном режиме, и она хранится на его устройстве. После подключение к сети Интернет сообщение будет отправлено на сервер. Надежная передача сообщений делает это возможным без какого-либо программирования.
Балансировка нагрузки предлагает распределение вычислительной мощности между несколькими серверами, что позволяет реализовать модель горизонтального масштабирования [12].
Динамическое изменение маршрута означает, что вы можете изменить конфигурацию технологии обмена сообщениями во время обработки данных, без внесения каких-либо изменений на стороне клиента и без каких-либо дальнейших перерывов. Как только пользователь службы перенастраивается и указывает новый адрес, сообщения от клиентов автоматически начинают поступать на новый адрес без какого-либо вмешательства со стороны администратора.
Система называется распределенной, когда программные компоненты работают на разных серверах в сети. Распределенные системы помогают локализовать проблемы и позволяют каждой части масштабироваться независимо друг от друга.
1.3 Обзор технологий обмена сообщениями доступных, для Windows
-
Технология MSMQ.
MSMQ доступна как часть Windows, начиная с первой версии Windows NT. MSMQ первая технология обмена сообщениями от Microsoft. Используется для обеспечения возможности обмена сообщениями для широкого спектра бизнес-приложений. Одним из самых больших преимуществ является то, что MSMQ поставляется с Windows, что помогает избежать дополнительных затрат на приобретение и лицензирование. Кроме того, MSMQ не связан с какой-либо конкретной системой управления данными. Например, можно без каких-либо проблем использовать MSMQ с Oracle. Тем не менее, присутствуют и некоторые недостатки, в том числе следующие:
-
размер сообщения ограничен до 4 Мб;
-
MSMQ не устанавливается по умолчанию. Для использования MSMQ требуется установочный диск Windows;
-
не гарантируется упорядочение сообщений;
-
не поддерживается взаимосвязь сообщений;
-
необходимо реализовывать очередь вручную;
-
необходимо проводить синхронизацию и блокировку между пользователями очередей вручную;
-
так как сообщения и транзакционные данные хранятся в разных местах, становится проблемой резервное копирование и восстановление.
QUEUED Components – компоненты, являющиеся модификацией COM+/MTS-компонентов. QC позволяет пользователю отправить запрос в очередь и продолжать работу в асинхронном режиме. Сообщение создается и отправляется с помощью протокола очереди MSMQ [18].
-
BizTalk Server.
BizTalk Server представляет собой сервер управления бизнес-процессами (BPM), что позволяет компаниям автоматизировать управление и оптимизировать бизнес-процессы. Она включает в себя мощные, всем знакомые инструменты для проектирования, разработки, развертывания и управления этими процессами. BizTalk Server также использует технологию обмена сообщениями для интеграции корпоративных приложений (EAI). Одним из недостатков является высокие затраты на лицензирование [24].
-
XML Web Services.
XML веб-служба представляет собой технологию передачи сообщений со стандартизированным интерфейсом, основанных на определенных протоколах, таких как SOAP и Web Services Description Language (WSDL). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения. За последние несколько лет Microsoft внес некоторые изменения, которые позволили проще разрабатывать, внедрять, публиковать и повторно использовать веб-службы [22].
-
WCF.
Назначение WCF, которая была введена с .NET 3.0 – обеспечить уникальное прикладное программирование интерфейса (API) для приложений. Делает возможным построение безопасных и надёжных транзакционных систем через упрощённую унифицированную программную модель межплатформенного взаимодействия. WCF предоставляет единую инфраструктуру разработки, при умелом применении повышающую производительность и снижающую затраты на создание безопасных, надёжных и транзакционных Web-служб нового поколения. Заложенные в неё принципы интероперабельности позволяют организовать работу с другими платформами, для чего используются технологии взаимодействия платформ, например WSIT, разрабатываемые на базе открытого исходного кода. Класс службы WCF не может существовать самостоятельно. Каждая служба WCF должна находиться под управлением некоторого процесса Windows, называемого хостовым процессом [27].
-
Service Broker.
Технология Service Broker была реализована, начиная с версии SQL Server 2005. Она предназначена для помощи разработчикам при создании защищенных, надежных и расширяемых приложений. Её основная функция заключается в обеспечении очерёдности и надежности обмена сообщениями как части ядра базы данных.
Service Broker привнес в SQL Server гарантируемую поддержку асинхронных очередей. Асинхронные очереди выводят сервер баз данных на более высокий уровень масштабируемости, поскольку позволяют программам отвечать на большее количество запросов, чем физически может позволить операционная платформа.
Служба Service Broker играет ключевую роль в обеспечении взаимной доступности служб. Если, к примеру, сервер А настроен для пересылки сообщений серверу В, и при этом возникает сбой сетевых служб, сервер А будет хранить неотправленные сообщения до тех пор, пока сеть не будет восстановлена, и сервер Б не станет снова доступным.
Чтобы гарантировать обработку приложениями полученных сообщений, Service Broker содержит функцию активизации, повышающую количество обрабатываемых хранимых процедур при возрастании нагрузки, и уменьшающую их число при сокращении нагрузки на очередь.
Используя средства компонента Service Broker, приложения баз данных получают ряд значительных преимуществ. К числу этих функций и преимуществ относятся:
-
интеграция баз данных повышает производительность приложений и упрощает администрирование;
-
упорядочение сообщений и координация упрощает процесс разработки приложений;
-
слабое связывание приложений обеспечивают возможность гибкого регулирования рабочих нагрузок;
-
блокировка связанных сообщений позволяет использовать несколько экземпляров приложений для обработки сообщений из одной очереди без явной синхронизации;
-
благодаря автоматической активации приложения могут масштабироваться в зависимости от количества сообщений.
Добавление в сервер баз данных компонента Service Broker привнесло новые возможности для приложений работы с базами данных, предназначенных для конечных пользователей
1.4 Проблемы, возникающие при использовании технологии обмена сообщениями и их решение с помощью Service Broker
При использовании технологии обмена сообщениями может возникнуть ряд проблем, связанный с производительностью, управлением и обслуживанием (рисунок 1.2).
Рисунок 1.2 – Проблемы, связанные с использованием технологии обмена сообщениями
Избежать их может помочь использование компонента Service Broker, потому что он уже включает в себя функциональные возможности, которые решают проблемы обмена сообщениями.
В настоящее время компонент Service Broker предоставляет лучшую производительность, чем любая другая технология обмена сообщениями. Если сравнивать Service Broker и MSMQ, то можно увидеть, что самая большая разница заключается в обработке транзакций. При работе с Service Broker исчезает необходимость работы с распределенными транзакциями. В Service Broker очереди, как таблицы, являются носителями объектов базы данных. Таким образом распределенные транзакции не нужны, если сообщение обрабатывается, и в конечном итоге удалено из очереди. Service Broker может обрабатывать все различные задачи в контексте транзакции SQL Server и это дает огромные преимущества производительности по сравнению с MSMQ и другими системами сообщений.
В каждой системе сообщений есть очередь, в которую помещаются сообщения для последующего извлечения и обработки данных. Есть два возможных варианта: использовать несколько очередей, где входящие сообщения распределяются между очередями, или же можно использовать одну очередь, которая принимает все сообщения. Рассмотрим эти два способа немного подробнее [46].
Использование нескольких очередей только на первый взгляд кажется более выгодным вариантом. Когда создается новая очередь, многие пользователи хотят перейти на неё, чтобы стать первыми в ней, что приводит к перебалансированию очередей. Перебалансировка очередей влечет за собой немалые затраты и отрицательно сказывается на производительности.
Можно работать намного эффективнее используя только одну очередь. Service Broker использует одну очередь, в которой можно настроить количество пользователей, работающих параллельно, и их последовательность в очереди для обработки входящих сообщений.
Эффективная система обмена сообщениями также должна поддерживать управление транзакциями. Управление транзакциями определяет, как несколько читателей очереди будут координировать в одной очереди, не нарушая целостности данных. Для решения этой проблемы Service Broker использует функцию блокировки.
Группы взаимодействия – способ группировки всех диалогов, связанных с определённой задачей. К примеру, все транзакции, необходимые для решения конкретной задачи, можно логически объединить в одну группу взаимодействия. Эта группа будет иметь собственный идентификатор, содержащий все сообщения во всех диалогах, составляющих группу. Основным назначением группы взаимодействия является реализация механизма блокировки для связанных сообщений, обеспечивающего параллельное обращение нескольких программ к одной и той же очереди.
Блокировка используется для поддержания порядка сообщений и управления состояниями всех диалогов в группе. Это значит, что когда в какой-либо диалог группы приходит сообщение, вся группа блокируется для выполнения соответствующей транзакции. За время жизненного цикла транзакции только один поток, устанавливающий блокировку, может получать сообщения от любого из диалогов группы взаимодействия.
Еще одна проблема в системах – сообщений обеспечение правильной последовательности и поддержание корреляции среди сообщений. Последовательность означает, что сообщения поступают в том же порядке, как они и были отправлены, что обеспечивает целостность передачи данных (рисунок 1.3).
Рисунок 1.3 – Последовательность отправки и получения сообщений















