Научная статья на тему 'МЕТОД СИНХРОНИЗАЦИИ В СИСТЕМЕ РАСПРЕДЕЛЁННОГО ДОСТУПА К ДАННЫМ.'

МЕТОД СИНХРОНИЗАЦИИ В СИСТЕМЕ РАСПРЕДЕЛЁННОГО ДОСТУПА К ДАННЫМ. Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
40
6
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Столяров Леонид Владимирович, Абрамов Владимир Геннадьевич

При разработке систем распределённои обработки единого массива данных возникает задача синхронизации работы вычислительных узлов. В статье предложен подход к решению этои задачи с использованием сервера синхронизации. Разработан протокол взаимодеиствия узлов внутри системы, устоичивыи к возникающим в ходе функционирования узлов конфликтам. Предложенные алгоритмы реализованы и проверены на тестовых данных.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Столяров Леонид Владимирович, Абрамов Владимир Геннадьевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SYNCHRONIZATION TECHNIQUE IN THE DISTRIBUTED DATA MANAGEMENT SYSTEM

Synchronizing the work of computing nodes is one of the hardest problems in developing distributed processing systems of a shared data array. The article introduces an approach using a synchronization server. The authors propose the protocol for the interaction of nodes within the system, which is resistant to conflicts that arise during the simultaneous operation of nodes. The proposed algorithms have been implemented and checked on test data.

Текст научной работы на тему «МЕТОД СИНХРОНИЗАЦИИ В СИСТЕМЕ РАСПРЕДЕЛЁННОГО ДОСТУПА К ДАННЫМ.»

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

Список литературы

1. ОСЖД P625 Система измерения параметров взаимодействия контактной подвески и токоприёмника, 9 ноября 2006 г.

2. ОСЖД P620/2 Статистические и динамические характеристики контактных подвесок электрифицированных участков железнодорожных дорог колеи 1435 мм, 23 октября 2009 г.

3. EN50317:2012 Railway applications - Current collection systems - Requirements for and validation of measurements of the dynamic interaction between pantograph and overhead contact line.

4. Greg Welch, Gary Bishop. An Introduction to the Kalman Filter. TR 95-041, Department of Computer Science University of North Carolina at Chapel Hill, NC 27599-3175. July 24, 2006.

МЕТОД СИНХРОНИЗАЦИИ В СИСТЕМЕ РАСПРЕДЕЛЁННОГО _ДОСТУПА К ДАННЫМ._

Столяров Леонид Владимирович

магистрант кафедры Алгоритмических языков факультета Вычислительнои математики и кибернетики Московского Государственного Университета имени

М.В. Ломоносова г. Москва Абрамов Владимир Геннадьевич к.ф.-м.н., доцент кафедры Алгоритмических языков факультета Вычислительнои математики и кибернетики Московского Государственного

Университета имени М.В. Ломоносова г. Москва

SYNCHRONIZATION TECHNIQUE IN THE DISTRIBUTED DATA MANAGEMENT _SYSTEM._

Stolyarov Leonid

master student of the Department of Algorithmic languages faculty of Computational mathematics and cybernetics Lomonosov Moscow State University Moscow

Abramov Vladimir

candidate ofphysico-mathematical sciences assistant professor of the Department of Algorithmic languages faculty of Computational mathematics and cybernetics

Lomonosov Moscow State University Moscow

АННОТАЦИЯ

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

Предложенные алгоритмы реализованы и проверены на тестовых данных.

ABSTRACT

Synchronizing the work of computing nodes is one of the hardest problems in developing distributed processing systems of a shared data array. The article introduces an approach using a synchronization server. The authors propose the protocol for the interaction of nodes within the system, which is resistant to conflicts that arise during the simultaneous operation of nodes. The proposed algorithms have been implemented and checked on test data.

С развитием информационных технологии и компьютернои техники объём и разнообразие хранимых и обрабатываемых с помощью вычислительных устроиств данных стремительно растёт. Совре-менныи подход к масштабированию вычислительных систем, в том числе систем хранения и обработки данных, состоит в организации парал-лельнои работы нескольких вычислительных уз-

лов. Системы параллельно работающих узлов позволяют достичь требуемых характеристик производительности и надёжности работы, что оказывается затруднительным в рамках одного вычислительного устроиства [1] . Однако параллельная обработка одного массива данных всегда порождает проблему корректного одновременного доступа. Если наборы элементов, обрабатываемые различными узлами, имеют пересечения, то необходимо

применять специальные методики синхронизации доступа [2].

Одно из возможных решении — использовать схему работы с периодическои глобальнои синхро-низациеи [3]. В этом случае работа системы представляет собои чередование двух фаз. Фазы обслуживания запросов, в ходе которои узлы принимают и записывают запросы на изменение и получение данных, и фазы синхронизации. В фазе синхронизации изменения, сделанные на различных узлах, совмещаются, образуя тем самым очередную актуальную версию хранимых данных. Для того, чтобы иметь возможность обработать изменения, сделанные на всех узлах, их можно собрать на одном вычислительном узле [4]. Будем называть такои узел сервером синхронизации. Остальные узлы будем называть рядовыми узлами. В задачи сервера синхронизации входит получение списков изменении с других узлов, выполнение алгоритма совмещения, и актуализация данных на всех узлах системы.

Процесс синхронизации вовлекает в себя сетевые взаимодеиствия между узлами системы. Далее предлагается протокол такого внутреннего взаимо-деиствия. На сеть накладываются следующие условия:

• Узлы соединены сетью, где каждыи узел имеет возможность обмениваться сообщениями с любым другим.

• Сообщения в сети гарантированно доставляются.

• Порядок доставки сообщении, отправленных с одного узла сохраняется на узле-приёмнике.

• Порядок получения узлом сообщении от нескольких других узлов не регламентирован.

Пример сети, в которых выполняются перечисленные выше условия — локальная сеть, использующая протокол № для адресации узлов. Рассматривается случаи статичнои конфигурации сети, в котором каждыи узел имеет возможность хранить список № адресов всех других узлов системы, чтобы иметь возможность устанавливать соединение с любым из них. Для гарантированнои доставки сообщении возможно использование специализированных протоколов транспортного уровня, таких как TCP. Сети, построенные по изложенным принципам, получили краине широкое распространение, чем и объясняется выбор условии работы протокола.

В рамках протокола узлы обмениваются ин-формациеи, оформленнои в виде сообщении. Общая структура сообщения включает в себя номер узлаотправителя, последовательным номер синхронизации, команду, и, некоторые дополнительные данные (полезную нагрузку). Номер узла — натуральное число, уникальное среди всех узлов системы. Номера присваиваются узлам до начала работы системы и после не изменяются. Последова-тельныи номер синхронизации — также натуральное число, монотонно увеличивающиеся при каждом завершённом акте синхронизации в си-

стеме. Номера узлов и синхронизации используются для разрешения конфликтов. В протоколе используются команды инициации синхронизации (sync), подтверждения синхронизации (syncing), и окончания синхронизации (synced).

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

1)Выбор единого узла — сервера синхронизации, согласованныи со всеми узлами системы;

2)Доставка изменении со всех узлов к узлу-серверу синхронизации,

3)Доставка результатов выполнения операции и актуальнои версии данных каждому из узлов от сервера синхронизации,

4)Достижение согласия всех узлов системы об очереднои завершённои синхронизации.

Для инициации процесса синхронизации сервер синхронизации посылает сообщение, содержащее соответствующую команду (sync) , всем узлам системы. После этого сервер ожидает ответа от каждого из узлов. В ответ на команду начала синхронизации каждыи узел отправляет серверу сообщение, содержащее его список изменении. Получив такои ответ от каждого из узлов, сервер выполняет синхронизацию. После этого он отправляет всем узлам сообщение, содержащее команду завершения синхронизации (synced) . На этом процесс синхронизации завершается. Таким образом, процесс синхронизации, согласно протоколу, задеист-вует три сетевых обмена сервера синхронизации с каждым из узлов.

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

Покажем, что, с использованием решающего правила, деиствительно можно решить конфликт при выборе узла-сервера синхронизации. Пусть среди к узлов ni, n2, пз, ... т , претендующих на роль

сервера синхронизации самым приоритетным является узел п1 . Рассмотрим два возможных случая. В первом случае предположим, что среди узлов п2, п3, ... пк не существует такого узла, что сообщения от него были доставлены всем рядовым узлам раньше, чем от самого приоритетного п1 . Рассмотрим последовательности полученных сообщении для каждого из рядовых узлов. В каждои из них присутствует сообщение от узла П1 . Согласно предположению, среди П2, пз, ... пк не наидётся такого узла, чтобы сообщение от него встретилось в каждои из рассматриваемых последовательностеи раньше сообщения от п1 . Поскольку рядовые узлы, следуя решающему правилу, перестанут отвечать на сообщения от остальных узлов-кандидатов после получения сообщения от самого приоритетного п1 , первым и единственным узлом-кандидатом, получившим ответ от каждого из рядовых узлов будет именно п1 . Остальные узлыкандидаты п2, п3, ... пк, получив наконец сообщение от п1 снимут свою кандидатуру, уступая выбор в пользу более приоритетного узла. Таким образом, узел п будет выбран в качестве единственного сервера синхронизации.

Во втором случае, предположим, не ограничивая общности, что существует некоторыи узел п2 , такои, что сообщения от него были доставлены до всех узлов раньше, чем сообщения от самого приоритетного п1 . В этом случае узел п1 , находясь в состоянии кандидата в серверы синхронизации, не будет отвечать на сообщения ни от каких менее приоритетных узлов п2, п3, ... пк . Поэтому ни один из них не получит ответа от всех узлов системы,

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

Рассмотрим примеры выбора сервера синхронизации в конфликтнои ситуации.

Пример 1. Пусть два узла п1 и п2 пытаются одновременно стать серверами синхронизации. Узел п1 имеет большии приоритет, чем п2. Кроме них в системе присутствуют два рядовых узла к1 и к2. Рассмотрим возможную последовательность сетевых обменов и деиствии узлов:

^ Первым в сети происходит обмен п1^к2, узел п1 запрашивает начало синхронизации. Узел к2 отвечает узлу п1, поскольку не получал других сообщении, и сам не является кандидатом.

^ Далее п2 запрашивает начало синхронизации у к2. Узел к2 не отвечает п2, поскольку ране ответил более приоритетному п1.

^ Следом п2 запрашивает начало синхронизации у к1. Узел к1 отвечает ему, поскольку не получал других сообщении и сам не является кандидатом. Известныи ему сервер синхронизации —

узел п1.

^ Сообщение от узла п1 доходит до узла п2. Узел п2 отвечает п1, поскольку является менее приоритетным, и продолжает функционирование в качестве рядового узла. Ему известно, что выбранныи сервер синхронизации — узел п1. Узел к1 в конце концов получает сообщение и от п1, он отвечает п1 и ему становится известно, что п1 — выбранныи сервер синхронизации.

^ Узел п1 получил ответы от всех остальных узлов, поэтому ему становится известно, что он выбран в качестве сервера синхронизации. Остальным узлам системы также уже известно, что п1 выбран. Таким образом, достигнуто согласие. Данныи пример относится к первому случаю.

Пример 2. Пусть три узла п1, п2 и п3 пытаются одновременно стать серверами синхронизации. Узел п1 имеет наибольшии приоритет среди них, узел п2 имеет большии приоритет, чем п3. Кроме них в системе присутствует рядовои узел к1.

^ Первым в сети происходит обмен п2^п3, узел п2 запрашивает начало синхронизации. Узел п3 отвечает узлу п1, поскольку не получал других сообщении, и является менее приоритетным кандидатом. На этом этапе известныи узлу п3 сервер синхронизации — узел п2, которому он ответил.

^ Далее п2 запрашивает начало синхронизации у к1. Узел к1 отвечает п2, поскольку не получал других сообщении и сам не является кандидатом. Известныи ему сервер синхронизации — узел п2.

^ Следом п2 запрашивает начало синхронизации у п1. Узел п1 ему не отвечает, поскольку сам является более приоритетным кандидатом.

^ Затем сообщение от п3 доставляется к1. Узел к1 игнорирует полученное сообщение, поскольку уже ответил более приоритетному кандидату п2.

^ Сообщения от п3 доставляются также оставшимся узлам п1 и п2. Они не отвечают на сообщения, поскольку сами являются более приоритетными кандидатами.

^ Сообщения от узла п1 доходят до узлов п2 и п3. Эти узлы отвечают п1, поскольку являются менее приоритетным, и продолжают функционирование уже в качестве рядовых узлов. Теперь им становится известен новыи, более приоритетныи чем предыдущии (п2), кандидат п1.

^ В конечном счёте, узел п1 получил ответы от всех остальных узлов, поэтому ему становится известно, что он выбран в качестве сервера синхронизации. Остальным узлам системы также уже известно, что п1 выбран. Данныи пример относится ко второму случаю.

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

узлов и непредсказуемым порядком получения сообщении. В ходе взаимодеиствия узлов не возникает ситуации взаимных блокировок.

Полныи цикл синхронизации включает в себя три сетевых обмена между одним из узлов и всеми остальными. Таким образом, в сети состоящеи из N узлов полныи цикл синхронизации, в отсутствии конфликтов, будет завершён с использованием 3N обменов. Однако, узел, являющиися сервером синхронизации, сможет завершить синхронизацию быстрее, используя 2N обменов. После этого каждыи сетевои обмен будет переводить очереднои узел в синхронизированное состояние. Из этого можно заключить, что в среднем синхронизация будет завершена за — N сетевых обменов.

2

Список литературы

1. Ozsu M. T., Valduriez P. Principles of distributed database systems. - Springer Science & Business Media, 2011.

2. Bernstein P. A., Goodman N. A sophisticated introduction to distributed database concurrency control. - Center for Research in Computing Techn., Aiken Computation Laboratory, Univ., 1982.

3. Lakshman T. V., Agrawala A. K. Efficient decentralized consensus protocols //IEEE Transactions on Software Engineering. - 1986. - №. 5. - С. 600-607.

4. Cho J., Garcia-Molina H. Synchronizing a database to improve freshness //ACM sigmod record. -ACM, 2000. - Т. 29. - №. 2. - С. 117-128.

i Надоели баннеры? Вы всегда можете отключить рекламу.