УДК 004.414
НЕПРЕРЫВНОЕ ФУНКЦИОНИРОВАНИЕ РАСПРЕДЕЛЕННЫХ СИСТЕМ
А.Л. Дедух1, Е.В. Горкунов2
Конструкторско-технологический институт вычислительной техники СО РАН, Новосибирск, 1 Новосибирский государственный университет, Новосибирск2
1 Введение
Распределенные системы продолжают вшдряться в научных исследованиях и на предприятиях, в стационарных информационных системах и в автоматизированных системах управлшия реального времени. При этом размеры и сложность таких систем увеличиваются, а требования отказоустойчивости, надежности работы и доступности предъявляются все более строгие. В особенности это касается критически важных систем.
К настоящему времени достигнуто существенное продвижение в разработке программного обеспечения высокого качества. Строгая спецификация требований к системе, структурный и формальный подход к проектированию, хороший стиль написания кода, повторное использование программных компонентов - все это методы, позволяющие избежать сбоев в системе уже на этапе ее создания. В то время как верификация и валидация, тестирование и формальнее доказательство способствуют устранению ошибок в конечной версии продукта.
Однако даже использование лучших опыта и средств нг гарантир>ет отсутствия ошибок в созданном программном обеспечении, а значит и безотказного функционирования системы в целом; а дать исчерпывающее строгое доказательство правильности кода весьма затруднительна а порой невозможно
В конечном счете, непрерывнее функционирование распределенной системы может быть обеспечено использованием технологий построения отказоустойчивого программного обеспечения [ 1,2]. По большей части, они могут быть разделены на две категории: основанные на избыточности компонентов и основанные на избыточности данных.
В этой статье приводятся основные определения в области отказоустойчивости. Описывается класс распределенных информационных систем и рассматривается пример системы - "Научно-технический музей СО РАН" (далее Музей). Ниже приводится описание статьи по разделам.
В разделе 2 описан рассматриваемый класс информационных систем и приведены основные определения в области «прерывного функционирования и отказоустойчивости. Раздел 3 посвящен описанию Музея. Возможный метод создания отказоустойчивой распределенной системы излагается в разделе 4. Наконец, в разделе 5 обсуждаются некоторые практические аспекты, касающиеся представленного проекта.
2 Основные концепции и определения
Для дальнейшего рассмотрения введем определение информационной системы:
Информационная система - это система, которая позволяет:
1) хранить данные;
2) управлять данными;
3) обрабатывать запросы пользователей, касающиеся хранимых данных;
4) осуществлять представление данных в заданном виде.
Информационная система невозможна без подсистемы хранения данных. Поэтому на основании определения систем распределенных баз данных [3,4], дадим следующее определение.
Распределенная информационная система - это информационная система, состоящая из набора узлов, связанных коммуникационной сетью, в которой:
1) каждый узел является частью или полной информационней системой;
2) все узлы работают согласованно, так что пользователь имеет возможность работать с системой, как если бы она целиком находилась на узле этого пользователя.
Непрерывное функционирование системы включает в себя три понятия: отказоустойчивость, доступность и надежность. Сначала дадим определение корректного поведения системы. Поведение системы считается корректным, если она соответств>ет требованиям, предъявляемым в спецификации [5].
Отказ - это отклояние от спецификации, наблюдаемое в работе системы. Ошибка - состояние системы, предшествующее сбою в системе. Ошибка может возникнуть в результате некоторого недостатка в системе. Недостаток, который может послужить причиной видимой ошибки, называется дефектом. В системе могут быть недостатки, которые себя никак не проявляют, они не рассматриваются как дефекты. Также считается, что отказ происходит, только если ошибка вызывает функционирование системы, противоречащее требованиям спецификации. Это отношение показано на рисунке 1.
Дефект Ошибка Отказ
Рисунок 1 - Терминология отказоустойчивости
Время между появлшием дефекта в системе и его проявлением в виде ошибки называется задержкой. Инерция - это период между возникновением отказа и началом необратимых последствий в окружении системы.
Псявлзше дефектов, ошибок и отказов во времени, изображенное на рис. 2., показывает смысл понятия отказоустойчивости. Цель отказоустойчивости - избежать отказов в присутствии дефектов в системе. Другими словами, как только ошибка обнаружена, она должна быть исправлена: следует выполнить действия для восстановления корректного состояния системы во избежание возможного отказа.
Дефект Ошибка Отказ Последствия
•*— Задержка —► ^ •«— Инерция —*• Время
Отказоустойчивость
Рисунок 2 - Задержка и инерция
Надежность - это условная вероятность тощ что система будет выполнять свою функцию корректно в течение определенного промежутка времши [0, г] при заданных условиях [6].
Доступность - это вероятность тощ что система будет выполнять свою функцию корректно в произвольный момзгг времши t. Доступность эквивалентна надежности «перестанавливаемых систем, то есть систем, работа которых предполагается «ограниченно долгой с момента их запуска.
3 Научно-технический Музей СО РАН
Научно-технический Музей СО РАН [7] - информационная система, цель создания которой заключат в следующем:
• сохранить биографию научней деятельности выдающихся ученых и инженеров СО РАН;
• сохранить историю создания интересных разработок, которые были осуществлены в институтах за многие годы работы;
• представить широкой общественности собранные материалы.
Анализ материалов, которые потощиально могли попасть в Музей, позволил очертить множество данных, подлежащих хранению в системе: текстовые данные объемом от нескольких слов до многих предложений, текстовые документы, изображения, аудио- и видео-файлы.
Технология клишт-сервер является базовой в архитектуре Музея. Одним из клиэггов является приложение пользователя, при помощи которого он просматривает данные. Web-браузер - наиболее распространшное и доступное приложение такого рода. Этот факт послужил основой для выбора средств и технологий реализации первей версии системы. Она включила в себя операционную систему (FreeBSD 5.3), web-сервер (Apache 2.0.50), базу данных (MySQL 4.0.18) и собственно web-приложение, написанное на языке PHP 5.0.2 и исполняемое на сервере. По запросу пользователя (точнее браузера) сервер осуществляет обработку хранящихся данных, формирует ответ и посылает его пользователю по протоколу HTTP. Такое построение системы позволило всю логику обработки данных разместить на сервере и, тем самым, к минимуму свести требования к пользователю, необходимые для доступа к Музею.
Таким образом, Музей является частным случаем информационных систем, описанных в разделе 2. Работа над первой версией Музея выполнена в рамках интеграционного проекта СО РАН №132.
Предполагается, что система работает в надежней сети, то есть данные при передаче между узлами сети не теряются и не искажаются. В таких условиях лишь работоспособность самих узлов и компонентов, исполняющихся на них, может повлиять на работу системы в целом. Музей с описанной выше архитектурой имеет низкую отказоустойчивость, поскольку любая ошибка, произошедшая на сервере или в базе данных, приводит к отказу всей системы. С целью расширения системы, ее возможностей и улучшения функционирования ведется исследовательская работа по созданию распределенной архитектуры музея.
4 Распределенная архитектура
Первый аспект - это распределение данных в сети. По сути, имеется система распределишь« баз данных, которые располагаются на различных узлах сети и управляются, возможно различными СУБД. Пока предполагается, что схема данных во всех локальных
базах одинакова и задачи установления соответствия между схемами и моделями данных не стоит. Управление данными на каждом из узлов распределенной системы выполняется локально и независимо от других узлов системы. База данных на каждом из узлов самодостаточна: она включает собственный словарь данных и полностью защищена от несанкционированного доступа. В идеале должна существовать возможность непрерывного доступа к данным, вне зависимости от их расположения и вне зависимости от операций, выполняемых на локальных узлах [8]. Однако все же в случае отказа в одной из баз данных пользователь информир>ется о том, что часть информации он сможет получить позже. При этом система остается доступней и работоспособней.
Вторым важным моментом является создание системы распределенных web-cep-веров, соответствующих распределенным базам данных. Каждый такой сервер способен обрабатывать данные, находящиеся на его узле, так что локально система представляется полней информационной системой, подобной той, что описана в разделе 3. Доступ к такой распределенной системе осуществляется путем обращения к одному из серверов, на которых размещена информация об остальных узлах системы (размещение, название организации, данные доступа). Мы называем их первичными серверами. На каждом первичном сервере должен размещаться компонент доступа к локальней и другим базам данных Музея. Протокол работы этого компонента следующий. Периодически, обращаясь ко всем имеющимся базам данных, он собирает список основных разработок, имена авторов этих разработок и названия институтов, так как это является основной информацией, которую предоставляет Музей пользователю. После чего полученные данные сохраняются в локальном кэше (временные таблицы в БД). Далее если пользователь пожелает посмотреть описание шкоего экспоната или биографию автора, его запрос сразу от клиента будет направлщ на соответствующий узел, где эта информация хранится в полном объеме. Обращение к удаленным web-серверам и различным СУБД прозрачно для клиагга, то есть клишт ничего не знает о том, на каком из узлов сети расположена та или иная информация и в каком формате она хранится.
Применение описанного протокола уменьшит нагрузку на все сервера распределенной системы. На практике сбор материалов Музея представляет трудоемкую работу и занимает достаточно много времош, так что данные об экспонатах обновляются редко Поэтому обновление локального кэша на первичных серверах может происходить, например, один раз в 2-3 часа или еще реже. Также при обновлении кэша предполагается анализ доступности узлов системы. Недоступные узлы соответственно помечаются, чтобы информировать пользователя.
Наличие нескольких первичных серверов позволит существенно повысить отказоустойчивость и надежность системы в целом, поскольку даже при ошибках на одном из них, у пользователя останется возможность доступа к Музею через другой. Отслеживая работоспособность первичных серверов, мы можем направить запрос пользователя при первом входе в систему к тому узлу, который функционир>ет корректно Возможность такого решения на базе существующих компонентов описана ниже.
5 Практические аспекты
Для создания разнородней распределжной среды в рамках исследования мы задействовали второй сервер на базе ОС Linux Red Hat (Fedora Core 4) и СУБД PostgreSQL 8.0.3. Язык PHP предоставляет возможности работать с базами данных многих поставщиков программного обеспечения: InterBase, PostgreSQL, dBase, FrontBase, mSQL, Sybase, Direct MS-SQL, IBM DB2, MySQL, Unix dbm, Informix, ODBC Ingres, Oracle. Так что
реализация взаимодействия с различными СУБД осуществима и, кроме тощ может быть выдержана в одном стиле программирования
В разнородной информационной среде неизбежно возникают проблемы с кодировками. Однако и эта трудность может быть решена технически средствами языка программирования, в частности РНР [9].
Что касается средств мониторинга различных функций работы приложений, исполняющихся на первичных серверах, то стоит отметить следующее. Одним из таких весьма хороших средств является продукт VERITAS Cluster Server . Он содержит несколько настраиваемых программ-агентов для мониторинга аппаратных процессов нижнего уровня и программных процессов. Также имеется программный интерфейс для создания своих программ-агентов. Тем самым мы можем отслеживать ошибки в распределенной системе и корректировать работу ее работу, предотвращая возможные отказы.
Литература
1. L.L. Pullum. Software Fault Tolerance Techniques and Implementation. Boston: Artech House, 2001.
2.B. Randell. System Structure for software Fault Tolerance // IEEE Transactions on Software Engineering, Vol. 1, No. 2, 1975. PP. 220-232.
3.К. Дейт. Введение в системы баз данных. К.; М.; СПб.: Вильяме, 1999.
4.Г. Гарсиа-Молина, Д. Ульман, Д. Уидом. Системы баз данных. Полный курс. М.: Вильяме, 2003.
5. J.-C. Laprie. Dependable Computing and Fault Tolerance: Concepts and Terminology // Proceedings of the 15th International Symposium on Fault-Tolerant Computing (FTCS-15), 1985. PP. 2-11.
6.M. Allen, Jr. Jonson, Miroslaw Malek. Survey of Software Tools for Evaluating Reliability, Availability, and Serviceability // ACM Computing Surveys, Vol. 20, No. 4, 1988. PP. 227-269.
7.Научно-технический Музей CO PAH. http://museum.kti.nsc.ru.
8.Г. Ладыжшский. Распределенные информационные системы и базы данных // Труды конференции Корпоративные базы данных '96, 1996. http://www.citforum.ru/ database/kbd96/45.shtml.
9. Д. Коггзолл. РНР 5. Полное руководство М.: Вильяме, 2006.
Тушндеме
Бул мацалада ацпараттыц; жуйеде цолданылатын y3diKci3 функционалды тужырымдаманы кррастырады
Resume
The conceptions of the continuous junctions regarding to data system are represented in the given article. This context contains the construction of scientific-technical museum CO PAH as a distributed data system.