Программирование >>  Программирование баз данных 

1 ... 336 337 338 [ 339 ] 340 341 342 ... 346


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

Служба Service Brolcer

Службу Service Broker не следует считать полностью автономной. Дело в том, что служба Service Broker входит в состав основных служб базы данньгх. Однако эта служба имеет строго определенную, собственную область применения, поэтому рассматривается в данном приложении как отдельная служба.

Ее назначение можно кратко определить следующим образом.

Служба Service Broker представляет собой своего рода службу асинхронной передачи данных, но она предоставляет функциональные возможности, выходящие за рамки простого обмена информацией. Эта служба обеспечивает координацию операций передачи сообщений между различными приложениями. Дело в том, что непосредственный обмен данными между приложениями не всегда возможен. Причиной этого может стать, например, то, что время, в течение которого приложения эксплуатируются в системе, совпадает далеко не всегда (непрерывно эксплуатируются, в частности, только службы, а другие приложения действуют в период между запуском постановом). Кроме того, обнаруживаются и такие ситуации, что в системе может находиться переменное количество экземпляров одного и того же клиентского приложения, обслуживаемьсс единственным серверным приложением. При этом не имеет смысла организовывать обмен данными между отдельными экземплярами клиентского приложения, поскольку это не позволяет координировать их работу. В качестве примера рассмотрим систему продажи театральных билетов. Сразу после поступления в кассы билетов на концерт популярного исполнителя к ним выстраиваются огромные очереди и нагрузка системы резко возрастает. Распродав за короткое время все имеющиеся билеты, кассы присылают на сервер отчеты и обращаются за пополнением. На сервере проверяется наличие оставшихся свободных мест, и эти места распределяются по кассам в соответствии с заявками.

Такая организация работы позволяет избавиться от необходимости непрерывно поддерживать связь между клиентами и сервером; при этом служба Service Broker выполняет функции посредника, пользуясь услугами которого различные программы получают возможность оставлять друг другу сообщения и продолжать свою работу, не останавливаясь и ожидая получения ответа от другого приложения. Само устройство применяемого при этом механизма доставки сообщений является таковым, что приложение-отправитель может проверить в любое время статус сообщения, чтобы определить, было ли это сообщение получено или нет. Кроме того, может быть предусмотрен вариант с принудительной отправкой сообщения получателю (вплоть до того, что служба Service Broker может запустить приложение, если к моменту получения сообщения оно еще не функционировало) или такой вариант организации работы, в котором приложение само выбирает время, в которое должна быть выполнена проверка наличия сообщений. Благодаря этому службу Service Broker можно применить, в частности, для создания чрезвычайно сложньсс распределенных транзакций, которые могут продолжаться в течение очень длительного периода времени (возможно, даже годы, хотя трудно представить себе ситуацию, в которой бы это потребовалось).



Функционирование службы Service Broker основано на использовании нескольких описанных ниже ключевых элементов.

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

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

Транзакционная обработка. В службе Service Broker под транзакцией подразумевается тот же объект, который рассматривался в главе 12. Но в данном случае транзакции служат для обеспечения того, чтобы была выполнена полностью (или полностью отменена) каждая операция обмена данными. Кроме того, с помощью транзакции обеспечивается возобновление нормальной работы после сбоя системы (применение транзакций должно предотвратить потерю сообщений).

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

Служба Service Broker позволяет связать многочисленные разрозненные компоненты в единое приложение. Для этого необходимо прежде всего определить набор используемых сообщений, а затем обеспечить реализацию контракта с помощью этих сообщений. Контракт определяет, в какую очередь должно быть поставлено данное сообщение и каким должен быть ожидаемый ответ (если таковой предусмотрен).

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

В каждом сеансе связи могут использоваться несколько экземпляров службы Service Broker. Такое совместное применение одного сеанса связи основано на понятии маршрутизации. Маршрутизация основана на том, что каждый конкретный экземпляр службы направляет сообщение в очередь, управляемую другой службой. На рис. В. 11 показаны различные компоненты, при совместном использовании которьпс формируется единое приложение службы Service Broker.



Экземпляр 1

Сообщения

Контракты

Службы

Маршрутизация <

Экземпляр 2

Сообщения

Контракты

Очереди

Службы Маршрутизация

Очереди

Рис, В. 11. Компоненты приложения службы Service Broker

Обратите внимание на то, что сообщения могуг передаваться от одного экземпляра SQL Server к другому (которые с наибольшей вероятностью будут находиться на полностью разных серверах). Благодаря этому формируется основа для создания той части приложения, которая отвечает за передачу сообщений, а также обеспечивается возможность расширять или сужать масштабы применения этого приложения. Кроме того, служба Service Broker позволяет ставить в очередь сообщения, содержащие единицы работы, а затем подключать к этой очереди несколько приложений, которые будут извлекать сообщения из очереди и брать на себя такую нагрузку, которую они в состоянии осилить. Аналогичным образом, с помощью службы Service Broker можно ставить в очередь единицы работы, которые могут быть выполнены в составе пакетного процесса в один из последующих промежутков времени.



1 ... 336 337 338 [ 339 ] 340 341 342 ... 346

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика