Исследованы средства для построения распределенных приложений, доступных в среде Lotus Domino. Предлагается подход к построению алгоритмов параллельной обработки документов на основе одного ведущего с нескольких ведомых процессов с использованием кластеров Lotus Domino.
Building distributed applications.pdf Распределенные вычисления сегодня затрагивают нетолько область математического моделирования физиче-ских и химических процессов, но и входят в область соци-альной сферы, экономики и бизнес-приложений.При этом такого рода вычисления могут происходить наразных уровнях вычислительных систем - от симметричноймультипроцессорности до кластеров прикладного уровня.Вычислители в этом спектре систем могут находиться наразличных расстояниях - от сантиметров до десятков и да-же сотен километров.Цель данной работы - выявить основные методы разра-ботки алгоритма параллельных кластерных вычислений науровне приложений с использованием соответствующихсредств в клиент-серверном продукте для групповой работыLotus Domino.ТЕХНОЛОГИИ РАСПРЕДЕЛЕННЫХ ВЫЧИС-ЛЕНИЙ1. Встроенная архитектура «клиент-сервер». Этатехнология является основой для взаимодействияклиента и сервера, она существовала с момента появ-ления многопользовательской версии. Распределениевычислений между клиентом и сервером здесь управ-ляется настройками построения индексов: при сохра-нении клиентом данных в базе сервер выполняет дей-ствия по отбору документов и помещению документав индекс «на свое место», в зависимости от критериевотбора вида и параметров сортировки значений коло-нок. Кроме того, в системе есть средства запуска про-цедур (агентов) на сервере непосредственно с клиен-та. Это средство обладает одной особенностью: призапуске процедуры на сервере клиентская станция неотключается, а «ожидает» завершения вычисленийагентом, таким образом, время выполнения вычисле-ний уменьшается, но клиент, тем не менее, «занят»вычислениями.2. Интерфейс с CORBA для взаимодействия с дру-гими приложениями по протоколу ORB. В LotusDomino есть набор классов, позволяющий выполнятьзапуск объектов Domino другими приложениями, атакже обращаться к объектам других приложений,поддерживающий архитектуру CORBA. Построениеединой иерархии классов, отражающей функции под-разделения или предприятия в целом, возможно внезависимости от того, какие именно приложения раз-работаны и установлены в организации. Распределе-ние вычислений между приложениями зависит от то-го, каким образом построена иерархия классов, какиеона охватывает приложения и в какой степени. На-пример, вычисление свойства объекта одного классаможет повлечь инициализацию объекта другого клас-са в другом приложении, находящемся на другой вы-числительной установке.3. Поддержка виртуальной машины Java и сервлетов.С развитием интернет, языков разметки страниц и Javaмногие производители СУБД включили в свои продук-ты поддержку протокола HTTP и виртуальной машиныJava, что позволяет разрабатывать на Java аплеты, вы-полняющиеся на сервере, способные обращаться к ис-точникам данных в других СУБД по запросу клиента избраузера. Распределение вычислений здесь зависит оттого, насколько развита информационная инфраструк-тура в организации, какие СУБД установлены и какиеинтерфейсы для связи используются.4. Кластерные технологии. Дают возможность по-строить отказоустойчивую систему серверов. LotusDomino имеет одним из свойств кроссплатформен-ность, что позволяет построить кластер на уровнеприложений (баз данных Domino) с использованиемнескольких аппаратно-программных платформ. Рас-пределение вычислений происходит в пределах однойСУБД и управляется настройками отказоустойчиво-сти. Отказоустойчивость и масштабируемость вместеявляются родителями нового свойства - сбалансиро-ванная нагрузка. Поскольку в кластерной системе поопределению присутствует несколько вычислителей,то вполне реально говорить о балансировке нагрузкимежду вычислителями. Эта задача решается введени-ем некоего виртуального индекса - «индекса доступ-ности» (availability index). Чем выше индекс доступ-ности, тем вероятнее отклик у данного сервера. Всечлены кластера начинают работу со значения индекса,равного 100. По мере загрузки индекс может умень-шаться или увеличиваться в зависимости от количествапроводимых одновременно транзакций и числа под-ключенных пользователей. Кроме статусов «доступен»или «недоступен» при балансировании нагрузки сервертакже может принимать значение «занят», означаю-щее, что очередной запрос от клиента не будет принятв случае, если в кластере есть доступный сервер. Еслиже доступного сервера нет, то запрос от клиента к за-нятому серверу все-таки пройдет, чтобы не нарушитьпринципа отказоустойчивости.При организации работы или построения системыс распределенными вычислениями необходимо учи-тывать свойства таких систем.ПАРАЛЛЕЛИЗМПараллелизм - это свойство, характеризующееобъект, способный выполнять несколько действийодновременно. При этом параллельно выполняющие-ся подзадачи могут быть частью одной вычислитель-ной задачи, а могут выполняться независимо. В обоихслучаях достигается цель распараллеливания выпол-нения определенной программы - повышение произ-водительности системы в целом.Если под объектом, обладающим параллелизмом,понимать кластер уровня приложений, то здесь речьидет далеко не о большом количестве однообразныхвычислительных подзадач, составляющих, например,задачу моделирования климата. Кластеры уровня при-ложений зачастую нацелены на решение задач, харак-теризуемых большими массивами данных, требующи-ми нестандартной обработки. Такими свойствами об-ладают бизнес-приложения, базы данных для поддерж-ки принятия решений, видеоконференции и др. Кла-стер, организованный на прикладном уровне, практи-чески стирает грань между одной целостной распа-раллеленной задачей и большим набором однородныхслужб (сервисов), действующих независимо. Тем неменее кластер обладает свойствами, характернымидля обоих из приведенных алгоритмов: во-первых,выполняется целостная многофункциональная и мно-гопользовательская задача по обслуживанию запросовпользователей, а во-вторых, множество сеансов раз-личных пользователей (и даже несколько сеансов од-ного и того же пользователя) протекают параллельнои не зависимы друг от друга.Задача управления параллельными вычислениямив кластерной среде Lotus Domino делится на несколь-ко подзадач.КОММУНИКАЦИИКоммуникации - это передача межпроцессных со-общений. Каждый процесс, работая независимо, должениметь связь с другими процессами для передачи резуль-татов обработки и получения заданий на обработку.В Lotus Domino такие межпроцессные коммуника-ции возможно осуществлять на основе того, что вкластеризуемых базах данных изменения рассылают-ся мгновенно на все серверы-члены кластера. Такимобразом, записав документ, содержащий результатыработы или указание на завершение части обработки,сервер сообщает о своих действиях другим членамкластера. В этом служебном документе (сообщении)необходимо предусмотреть тип действия (ожидание,завершение, передача управления), а также адреснуюинформацию (имя сервера-адресата или специальныйкод, указывающий на то, что сообщение широкове-щательное). Запись документа-сообщения должнапроизводиться в специально отведенную для этогоразделяемую служебную область.РАЗДЕЛЯЕМАЯ ПАМЯТЬВ общем случае разделяемая память для кластерауровня приложений Lotus Domino - это набор базданных (баз документов), над которыми производятсядействия по обработке информации (поиск, измене-ние, удаление документов и т.д.). Какие именно базыданных участвуют в обработке, зависит от конкрет-ной задачи. Эти базы данных являются распределен-ными по кластеру, что дает возможность каждомусерверу обращаться к локальной реплике разделяемойпамяти без накладных расходов на коммуникации.РАЗДЕЛЯЕМАЯ СЛУЖЕБНАЯ ОБЛАСТЬЭто специальная база данных, содержащая пара-метры оперативного окружения процессов, запущен-ных на серверах-членах кластера. Эта база данныхтакже должна быть кластеризуемой с тем, чтобы каж-дый процесс (в т.ч. и ведущий) мог получить текущеесостояние других процессов во время обработки. На-пример, используя несколько процессов для поискаконкретного документа, ведущий процесс дает зада-ния (посредством документов-сообщений) несколь-ким процессам, запущенным на нескольких серверах,обработать несколько областей одной и той же базыданных. При поиске данных один из процессов обна-руживает искомый документ в разделяемой памяти,немедленно записывая в разделяемую служебную об-ласть документ с указанием на то, что поиск успешнозакончен, и завершая работу. Остальные процессы втечение поиска периодически сканируют служебнуюобласть и, получив сообщение о завершении, прекра-щают поиск, извещая о готовности к выполнению но-вых заданий документом-сообщением.МАСШТАБИРОВАНИЕИспользуя коммуникации и разделяемую служеб-ную область, новые члены кластера (а точнее, новыепроцессы) могут регистрироваться в параллельной сис-теме, записывая свой служебный документ с указаниемсостояния готовности в служебную область. При полу-чении от пользователя нового запроса на обработку ве-дущий процесс сканирует служебную область на нали-чие свободных процессов, среди которых окажется но-вый процесс нового члена кластера. Эта операция про-исходит без остановки кластерной системы и без оста-новки параллельного алгоритма, что важно для кри-тичных к этому бизнес-приложений.ОТКАЗОУСТОЙЧИВОСТЬВ случае, если один из процессов или серверов ос-танавливается или выходит из строя, параллельнаясистема должна быть об этом уведомлена. Для этогопроцесс, получающий задание, помечает свой рабо-чий документ в служебной рабочей области пометкой«получил задание», фиксируя время получения зада-ния. Ведущий процесс по наступлении определенноготаймаута и не получении результата исключает этотпроцесс из числа готовых к работе, переводя его ра-бочий документ в статус «недоступен». При возоб-новлении работы соответствующий процесс находит врабочей области свой документ и переводит его в ста-тус «готов». В целях сохранения производительностипри настройке отказоустойчивости необходимо тща-тельно настраивать таймаут - время, которое доста-точно точно отличает задержку ответа сервера от егонедоступности.ИНСТРУМЕНТАРИЙДля программирования параллельных алгоритмовв Lotus Domino можно использовать агенты, написан-ные на встроенном объектно-ориентированном языкеLotus Script. Несмотря на то, что этот язык не дает та-кой производительности, как модули, написанные науниверсальных языках более низкого уровня, его ис-пользование позволяет проще разворачивать системуна нескольких аппаратно-программных платформахбез переписывания модулей и их перекомпиляции.Эти агенты должны начинать работать по триггеру«добавление, удаление, или изменение документов».
Толузаков Сергей Геннадьевич | Томский государственный университет | ассистент кафедры теоретических основ информатики | chief@admin.tomsk.ru |
Коновалов Н., Крюков В. Параллельные программы для вычислительных кластеров и сетей // Открытые системы. 2002. №3. С.12-18.
Елагин В. Кластеры против катастроф // Открытые системы. 2002. №6. С.29-36.
Дубова Н. Учет и контроль для «коммунальных вычислений» // Открытые системы. 2003. №1. С.34-37.