|
Разработка систем автоматизации, изготовление контроллеров и программного обеспечения.
|
| На главную страницу | ФОРУМ | НОВОСТИ | ССЫЛКИ |
|
Системы
Продукция
Лицензии
Информация о компании
Новости
Полезная информация
|
Система репликации на основе базы данных Berkeley31.01.05
Введение
Система репликации базы данных Berkeley Определение БД Berkeley предоставляет прикладному программисту средства для создания приложений высокой доступности (Highly Available applications) на основе репликации данных. Высокая доступность (High Availability) подразумевает решение, способное продолжать функционировать либо восстанавливать функционирование после возникновения большинства ошибок без вмешательства оператора. Отличие высокодоступных систем от систем устойчивых к сбоям (Fault Tolerant) заключается в том, что высокодоступные решения могут иметь одно или несколько отличий от систем устойчивых к сбоям: · процесс восстановления после обнаружения неисправности может занять некоторое время, вместо того, чтобы произойти немедленно; · некоторые компоненты, вероятность выхода из строя которых маловероятна, могут быть не продублированы; · характеристики системы после окончания процесса восстановления могут ухудшаться; Группа репликации БД Berkeley состоит из независимо сконфигурированных приложений. В группе репликации может быть одно приложение мастер и несколько клиентских приложений. Приложение мастер (далее в тексте мастер) поддерживает запись и чтение базы данных; клиентские приложения (далее в тексте клиенты) могут осуществлять только чтение базы данных. При выходе из строя мастера, клиент может стать мастером, при определенных ограничениях. Приложения входящие в группу репликации могут находиться как на разных узлах сети, так и на одном сервере. Единственным ограничением для размещения приложений -- на всех распределенных узлах должен быть одинаковый порядок байт (endianness) центральных процессорных устройств. Ожидается, что это ограничение будет снято в следующих версиях базы данных Berkeley. Любое приложение, участник группы репликации, может содержать любое число, ограниченное системными настройками, независимых параллельных задач (процессов или потоков) работающих конкурентно с средой базы данных. Любое число задач, входящих в состав мастера может производить операции чтения и записи данных. Любое число задач, входящих в состав клиентского приложения может запрашивать данные из базы данных. Приложение может быть создано с учетом различных требований к непротиворечивости данных. Приложение может работать в синхронном режиме, это означает что реплики (локальные копии) базы данных гарантированно будут находиться в полном соответствии с последними изменениями данных подтвержденными транзакциями. При использовании такой модели непротиворечивости следует ожидать низкую производительность распределенного приложения. Для повышения производительности можно пожертвовать синхронным режимом и позволить клиентской части базы данных обновляться через заданные приложением интервалы времени. База данных Berkeley предоставляет необходимую инфраструктуру для создания среды репликации, но приложение должно обеспечить работу следующих важных компонентов: 1. Приложение должно предоставить коммуникационную инфраструктуру. Приложение может использовать любой способ обмена данными (например -- RPC, TCP/IP, системные очереди сообщений или почтовые голуби). 2. Приложение отвечает за однозначное именование всех участников группы репликации. В системе репликации для однозначного определения участника группы используется уникальный номер (ID) и приложение должно по ID однозначно определять канал коммуникации с другими участниками. 3. Приложение отвечает за мониторинг статуса мастер и клиентов, и обнаружение недоступного или вышедшего из строя участника группы. 4. Приложение, если требуется, может предоставить средства защиты данных. Например приложение может шифровать записи в базе данных или использовать зашифрованный коммуникационный канал. Уровень зашиты данных целиком определяется потребностями приложения. Идентификатор участника репликации Каждый участник группы репликации должен иметь уникальные номера для идентификации себя и других участников группы. Номер может не быть "глобальным" для всей группы. Например если есть три узла в группе репликации -- А, Б и В, то участник А может присвоить номера 1 и 2 узлам Б и В соответственно, в то время как узел Б может присвоить номера 301 и 302 узлам А и В. Приоритеты Каждый участник группы репликации должен иметь приоритет. Приоритет учитывается при определении участника группы репликации, который станет новым мастером, в случае если произойдет сбой в работе существующего мастера и он перестанет функционировать. Приоритет может быть задан любым положительным целым число. В группе репликации могут присутствовать участники с одинаковым приоритетом. Участник группы с нулевым приоритетом не может быть выбран мастером. Мастер выбирается на основание сравнения журнала транзакций. Клиент, содержащий самые последнии обновления становится мастером. Если таких клиентов несколько, тогда сравниваются их приоритеты и тот из них, чей приоритет выше становится мастером. Если приоритеты также совпадают, выбор мастера среди этих клиентов происходит случайным образом. Выборы мастера Приложение определяет когда нужно начать выборы мастера. Участник группы может начать выбор мастера в любой момент времени. Клиент должен начать выборы, когда мастер группы ему неизвестен или когда была обнаружена поломка мастера. Клиент может выиграть выборы если в группе репликации нет мастера и журнал транзакций клиента содержит самые свежие записи. В случае, когда журналы транзакций нескольких клиентов эквивалентны, для выбора используются приоритеты. Клиент ставший мастером должен выполнить все необходимые действия для перехода в новый режим работы. Приложение должно указывать при проведении выборов, какое минимальное число участников группы репликации необходимо для того, чтобы был определен победитель. Инженеры Berkley рекомендуют использовать формулу , где - число узлов в группе. Если заданное число меньше простого большинства, то участник группы репликации, который начал выборы, получает предупреждение. Выборы мастера проводяться прозрачно для приложения, но используя механизм приоритетов можно ограничить круг возможных победителей явно указав клиентов из числа которых может быть выбран новый мастер. Пример реализация системы репликации В рамках работы проводимой автором в ИНЭУМе (Институт Электронных Управляющих Машин), было спроектировано и реализовано приложение с поддержкой репликации данных. БД используется для хранения хронологической и оперативной информации о состоянии дискретных и аналоговых входов. Приложение предназначено для получение аналоговых и дискретных значений от модулей производства ИНЭУМа и распределения полученных данных в группе репликации. В качества ядра приложения используется БД Berkeley. Инициатором обновлений реплик является мастер группы репликации БД. Мастер последовательно считывает значения с модуля и если обнаруживает изменение контролируемых параметров, записывает в базу данных новые значения. Система репликации БД производит распределение новых данных на все узлы в группе. Клиент имеет возможность получить сообщение о том, что его локальная реплика была обновлена и обработать новые данные. Библиотека методов доступа к БД встроена в приложение и, как следствие, нет необходимости в сложных настройках и последующем обслуживании сервера БД. Для использования во встраиваемых системах важны такие свойства БД Berkeley, как высокая скорость доступа к данным и нетребовательность к системным ресурсам. Конкурентный доступ к данным нескольких процессов (задач опроса модулей УСО) обеспечивается средствами БД Berkeley. Модульная структура ПО позволяет легко производить модификации в зависимости от типа задачи. Опрос модулей производится несколькими параллельными задачами. Для приложения не существует ограничения на число групп репликации. Например, физический узел в сети может являться клиентом в одной группе и одновременно мастером другой группы. Каждое приложение входящие в группу репликации может работать в режиме мастера или клиента. Переключение из режима клиента в режим мастера может произойти при соблюдение условий описанных выше ( см. 4.4). Способы переключений приложения из режима мастера описан в [5]. Существуют несколько вариантов считывания контролируемых параметров: 1. Приложение работающее в режиме мастера может считывать данные через последовательные порты ввода/вывода. Получение данных может производиться параллельно несколькими задачами. В приложение встроена поддержка интерфейса RS-485. 2. Приложение мастер может выполняться на промышленном контроллере и читать данные непосредственно с модулей расположенных локально [7]. Коммуникационная инфраструктура приложения реализована поверх TCP (Transmission Control Protocol) сокетов. Приходящие запросы приложение обрабатывает последовательно в одной задаче с использованием системного механизма мультиплексирования ввода, предоставляемого функцией select [4]. Одна задача предназначена для выполнения административных функций: предотвращение взаимных блокировок транзакций (deadlocks) и фиксация текущего состояния журнала транзакций -- прохождение так называемых контрольных точек (checkpoints) [5]. ![]() Приложение может работать под управлением следующих операционных систем: · GNU/Linux. Распространяемый Фондом Свободного Програмного Обеспечения набор системных и прикладных инструментов с ядром Linux [6]. Существует адаптированный вариант приложения для PC совместимых промышленных контроллеров. Приложение может работать в режимах мастера и клиента. Для подтверждения своего работоспособного состояния мастер: 1. посылает "пульсы" клиентским узлам. Если клиент не получает "пульс" от мастера в течении определенного интервала времени он начинает проведение выборов в группе. 2. синхронизирует свое выполнение с сторожевым таймером. Возможно использование программного сторожевого таймера. · MS Windows 2000/NT. Приложение может работать в режиме клиента. Предусмотрена интеграция с программными продуктами класса SCADA/HMI, например SIEMENS Simatic WinCC. Литература. 1. Шкамарда А.Н., Бабанов И.И., Гревцев В.В., Глухов В.И., Каневский В.Г., Нифонтов Ю.В., Страшун Ю.П. Комплексы технических средств СМ 1820М// Автоматизация в промышленности. 2003. 10. 2. Тененбаум Э. М. ван Стеен. Распределенные системы. Принципы и парадигмы. - С.Пб. Питер. 2003. 3. К. Дж. Дейт. Введение в системы баз данных, 7-е издание. - М. Издательский дом "Вильямс". 2001. 4. У. Стивенс. UNIX: Разработка сетевых приложений. - С.Пб. Питер. 2003 5. Berkeley DB Programmer's Tutorial and Reference Guide . v. 4.3.21. www.sleepycat.com. 6. Карев А.А. Использование ОС Linux в управлении промышленными объектами// Автоматизация и современные технологии. 2003. 9. 7. Карев А.А. Использование Web-технологий во встраиваемых приложениях// Автоматизация в промышленности. 2004. 2. 8. Олсон М., Бостик К., Зельтцер М. Berkeley DB//Открытые системы. www.osp.ru. 2000. 11. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright © CM-1820, 1975 - 2005 | |||
| Produced and designed by Kirsoft Inc. Russia, Moscow, 2005 |
Каталог Linq.ru |
||