НАЗНАЧЕНИЕ ЛИДЕРА В ПИРИНГОВЫХ СИСТЕМАХ

advertisement
НАЗНАЧЕНИЕ ЛИДЕРА В ПИРИНГОВЫХ СИСТЕМАХ
ГУБАРЕВ В.В., д-р техн. наук
(Новосиберск, Новосибирский государственный технический университет ”НГТУ ”,
gubarev@vt.cs.nstu.ru),
ОБЕЙДАТ А.А., аспирант
(Новосиберск, Новосибирский государственный технический университет ”НГТУ ”,
atefob@hotmail.com)
В работе описывается актуальность и существо алгоритма определения лидера в
децентрализованных пириниговых системах. Основа предлагаемого алгортима базируется
на особенностях пиринговых систем, связанных с тем, что все узлы имеют одинаковые
функциональные способности и ответственность. Идея алгортима – назначить лидером
набора узлов узел из системы с идентификатором, являющимся равным или ближайшим к
идентификатору набора узлов. Доказывается его корректность и экспериментально,
путем имитации, оценивается эффективность.
1.Введение. Постановка задачи
Одно из последних направлений распределенных информационных систем и сетей –
пиринговые сети – переживает в настоящее время активное становление. В связи с
молодостью и перспективностью в теории их создания и практического применения
появляются все новые и новые фундаментальные задачи, требующие неотложного решения.
Одной из таких является задача назначения ( определения, выявления, выбора) лидера узла, который может и согласен выполнять функции координатора всей или части сети в
течение определенного отрезка времени или решения соответствующего круга задач. В
распределенных и пиринговых системах лидер выступает в качестве посредника при
синхронизации, согласовании, упорядочении и задержке передачи данных. В файловых
системах лидер способствует устранению избыточности трафика сети обеспечению
аутентичности (полному совпадению) дубликатов ресурса(реплик).Только лидер имеет право
ответов на запросы доступа к ресурсу отдельных узлов. В существующих системах в выборе
лидера обязаны участвовать все узлы системы. В силу этого используемые в них методы
выбора лидера системы малоэффективны и не масштабируемы.
В связи с этим цель настоящей работы – разработка алгоритма назначения лидера в
пиринговых системах, отвечающего требованиям масштабируемости.
Для достижения поставленной цели в работе решаются следующие задачи:
1. Анализ существующих алгоритмов выбора лидера в пиринговых системах.
2. Разработка нового метода назначения лидера, удовлетворяющего требованиям
эффектности, масштабируемости, децентрализованности и отказоустойчивости
сети.
2.Модель рассматриваемых систем и анализ существующих алгоритмов
Рассматриваемые в данной работе алгоритмы основаны на следующей модели,
описывающей динамические пиринговые системы.
1. Базовые элементы системы – это её узлы. Узлы соединены с помощью пиринговых
оверлеев, которые позволяют, используя маршрутизацию, передавать сообщения
между любыми узлами.
1
2. Взаимодействие узлов между собой осуществляется согласно правилам работы
пиринговой системы, предписывающим любому узлу посылать сообщения другим
узлам (т.е. узлы системы общаются друг с другом, передавая сообщения) и
исполнять все функции, предписываемые к исполнению узлами, в частности
функции лидера, по факту обращения к узлу.
3. В случае, если узел pi , i  1, N , где N – число узлов системы, посылает любое
сообщение узлу p j , j  1, N , j  i , а узел pj в данный момент выходит из строя или
не присутствует в системе, оверлейный маршрутизатор отправляет сообщение узлу
с идентификатором, наиболее близким к идентификатору узла pj. Таким образом,
пока есть узлы в системе, сообщение будет получено каким-либо узлом.
4. Каждый узел в системе имеет уникальный двоичный m-битный идентификатор (id).
Идентификатор присваивается случайно, но однократно (как бы равновероятно
извлекается оверлеем из генеральной совокупности из номеров от 0 до 2 m-1 без
возвращения номера в генеральную совокупность) когда узел присоединяется к
вычислительной системе. Например, идентификатор узла может быть сформирован
путем вычисления криптографического хэша (такого как, SHA-1 [4]) открытого
ключа узла или его IP-адреса. Иными словами IP-адресу узла ставится в
соответствие и присваивается навсегда идентификатор (число) равновероятно
извлеченное без повторения из совокупности чисел от 0 до 2m-1.
5. Количество клиентов сети непредсказуемо, их число может быть очень большим.
Клиенты не настроены злонамеренно.
6. В сети может быть высокая текучесть клиентов – узлы могут входить и покидать
систему в любое время. Узел, покидающий систему, возвращается в нее со своим же
идентификатором.
Как уже упоминалось, в вычислительных распределенных системах и приложениях
лидер выступает в качестве посредника при синхронизации, согласовании, упорядочении и
задержке передачи данных. Однако, в пиринговых сетях сложно определить лидера из-за
некоторых характеристик сети, таких как её неустойчивость и принадлежность узлов разным
физическим сетям. Кроме того, все известные [1-2] методы определения лидера в лучшем
случае весьма слабо учитывают узкие по пропускной способности места и перегруженность
каналов, вызванные одновременной работой узлов или общим использованием сетевых
ресурсов. Перегруженность сети и эффективность использования ресурса всегда относятся к
самым важным вопросам в компьютерных сетях. В существующих системах есть один лидер
на всю или часть сети и только когда он выходит из строя осуществляется выбор нового
лидера. При этом существующие методы требует знания времени начала выбора нового
лидера (голосования). К тому же, как указывалось ранее, все узлы в сети (или части сети)
участвуют в выборах. Поэтому такие алгоритмы выбора лидера не являются
масштабируемыми, для них требуются либо широковещательные передачи, либо передачи
между всеми узлами. Наилучшие из известных алгоритмов, такие как кольцо, Bully и т.д.[12], производят выбор лидера (как правило, это узел с самым большим значением
идентификатора) по различным отказоустойчивым сценариям.
3.Предложенный алгоритм
Рассмотрим предлагаемый метод назначения лидера, основанный на выделении
набора узлов, имеющих один и тот же интерес в среде пиринговых систем, таких, например,
как набор узлов, содержащих копии (реплики) данных, интересующие всех участников
набора.
Предлагаемый метод базируется на особенностях пиринговых систем, связанных с
тем, что все узлы имеют одинаковые функциональные способности и ответственность.
Основая идея алгоритма – выделение из всех узлов только тех из них, которые имеют
2
одинаковый интерес Х, формирование из них отдельного набора и выбор в качестве лидера
для них любого узла системы. Иными словами идея метода заключается в учреждении
множества лидеров наборов, каждый из которых выполняет все необходимые функции
лидера для своего набора. В связи с этим изложенная ранее модель системы дополняется
следующими элементами.

Все узлы pi , i  1, N , имеющие один и тот же интерес X (предоставление одинакового


ресурса), объединяются в l наборов s j  pej , e  1, n j , j  1, l , n j - число узлов в наборе
s j , l - число наборов, n1+…+nl ≤ N.

Каждый набор s j имеет уникальный двоичный m-битный идентификатор kj, который
вычисляется как хэш текстового имени ресурса(например, Х), интересующего всех
членов набора. Идентификатор kj может быть вычислен с использованием
конфликтоустойчивой (не допускающей повторения) хэш-функции (например, SHA-1
[4]), так же, как для идентификаторов узлов. Узел vj системы с идентификатором,
совпадающим с идентификатором kj набора s j , выступает в качестве лидера набора.

Первоначальное формирование набора s j может инициировать любой узел p i из N узлов
системы, не являющийся в данный момент лидером этого набора. Для этого он просит
оверлей, используя хэш-функцию, присвоить идентификатор новому (формируемому)
набору узлов, имеющих общий интерес Х. Получив такую просьбу, оверлей должен
определить, есть ли уже такой набор s j . Если есть, то оверлей сообщает об этой просьбе
лидеру vj. Лидер включает узел p i в данный набор s j и сообщает ему свой
идентификатор vj. Если же набора нет, то оверлей посылает сообщение «создание нового
набора» узлу vj с идентификатором, численно наиболее близким или равным
идентификатору интереса kj. Когда узел vj получает данное сообщение, он начинает
выполнять роль лидера и создает список элементов нового набора. Тем самым
реализуется идея алгоритма – назначить лидером набора узлов s j узел системы vj с
идентификатором, являющимся равным или ближайшим к идентификатору kj набора
узлов s j .

Лидер vj может входить или не входить в набор s j .
Способность к восстановлению и устойчивость алгоритма к сбоям
До этого момента мы описывали работу предложенного алгоритма в исправной среде. В
реальности же лидер может выходить из строя. Рассмотрим разные варианты
неисправностей.
А. Первый способ заключается в назначении вместе с лидером его заменителя - электа.
Для того чтобы лидер-элект всегда был готов выполнять роль лидера, лидер должен
информировать лидера-электа обо всех изменениях в списке элементов набора, хранящемся у
лидера. Если возможна ситуация, когда одновременно выходят из строя лидер и лидер-элект,
можно вести два или большее число ранжированных по убыванию идентификаторов электов,
когда каждый последующий берет на себя функции лидера тогда и только тогда, когда
отказал предыдущий узел-элект. Для этого в каждом такте нижестоящий лидер-элект
посылает запрос вышестоящему, а первый лидер-элект лидеру vj, проверяя, работает он или
нет, и вступает в права лидера, только когда не получает ответа от предыдущих узлов (лидера,
лидера-электа1, лидера-электа2 и т.д). Если же одновремнно откажут и лидер, и все электы, то
первый обнаруживает всё это, узел начинает создавать набор заново, как было описано ранее.
Б. Второй способ заключается в использовании механизма периодической(каждые t
единиц времени) отправки тактовых сообщений. Лидер периодически посылает тактовое
сообщение элементам его набора. Элемент набора предполагает, что его лидер вышел из
3
строя, если не получает тактовые сообщения. При выявлении неисправности лидера, лобой
элемент набора, обнаруживающий этот факт, обращается к оверлею с просьбой создать
новый набор и работа происходит как при создании нового набора, т.е. с сообщения
оверлею идентификатора интереса X (или набора sj).
Когда происходит отказ узла, выполняющего функции лидера, новый лидер должен
как можно скорее продолжить выполнение его функций. В алгоритме лидер обладает
мобильностью, перемещаясь между активными узлами системы. Также алгоритм быстро
реагирует на ситуацию, когда лидер отключается от системы. Вследствие этого
неисправность лидера не оказывает влияния на отказ устойчивости работы сети в целом, т.е.
оказывается устойчивым к отказам элементов сети.
Ниже приведен пример алгоритма в деталях (см. рис. 1)
1. Узел 1 имеет интерес Х , но первоначально не знает, есть ли набор узлов с
интересом Х. Поэтому он просит оверлей, используя хэш-функцию, присвоить
идентификатор интересу Х. Допустим этот идентификатор = 10. Получив такую просьбу,
оверлей присваивает идентификатор интересу Х, т.е. возможному формируемому набору, и
определяет, есть ли уже такой набор узлов с интересом Х (набор s j ). Пока набора нет.
Поэтому оверлей посылает сообщение «создание нового набора» узлу с идентификатором
11, численно наиболее близким идентификатору интереса 10. Поэтому
узел с
идентификатором 11 будет лидером (см. рис. 1.а).
2. Узел с идентификатором 11 (новый лидер) при получении сообщения «создание
нового набора», начинает выполнять роль лидера , т.е. по мере обращения к нему новых
узлов с интересом Х создает список Сj элементов нового набора, и с помощью оверлея
назначает лидеров – электов, доводит до всех лидеров – электов список элементов нового
набора. Согласно рис.1, электами являются узлы 12 и 7, т.к. их идентификаторы численно
наиболее близки к идентификатору лидера 11.
3. Некоторое время спустя узлы с идентификаторами 2 и 3 желают присоединиться к
набору s j . В начале каждый из них просит оверлей вычислить идентификатор набора своего
интереса Х. После вычисления идентификатора оверлей обнаруживает, что уже есть набор s j
c интересом Х и сообщает узлам 2,3 идентификатор лидера . Когда лидер получает эти
сообщения, он должен добавить информацию об этих узлах в список набора Cj и
информировать электов о них. В этот момент лидер 11 и электы 7, 12 будут иметь
информацию о трех элементах набора (1, 2 и 3). (см. Рис. 1.б)
4. После выхода узла с идентификатором 11 (лидера) из системы, лидером
автоматически становится первый– узел с идентификатором 12 ,численно наиболее близким
к идентификатору прежнего лидера 11. Одновременно первым электом становится узел 13, а
вторым окажется узел 7. Он вступает в права лидера в слюдуюшим такте, когда не получает
ответа от предыдущего лидера 11 (см. рис. 1.в) .
5. Пусть некоторое время спустя лидер 12 и элект 13 одновременно выходят из строя.
Тогда узел - элект с идентификатором 7 будет лидером. Если же одновременно откажут узлы
12, 13, 7, т.е. лидер и все элементы, то далее процедура создания набора повторится сначала.
4. Эффективность и корректность алгоритма
В алгоритме назначения лидера набора узлов каждый элемент определяет лидера при
помощи оверлея, использующего хэш-функцию. Для этого не требуется ни одной
дополнительной пересылки сообщений. Следовательно:
Теорема 1 Сложность алгоритма по числу сообщений равна O(1).
Если лидер и электы-кандидаты на его пост - вышли из строя в одно и то же время, то
новый лидер не будет обладать информацией об элементах набора. Поэтому ему требуется
создать заново. Поскольку размер набора мы не ограничиваем, уже при включении в набор
4
узла – индикатора формирования набора, он считается создателем и каждый элемент набора
будет получать тактовое сообщение. Следовательно:
Теорема 2 Для создания списка элементов набора лидеру требуется O(n) сообщений,
где n - число элементов в наборе s j .
Доказательство корректности алгоритмов выбора лидера обычно заключается в
демонстрации истинности двух условий: 1) условие надежности, заключающееся в том, что
если существует один узел, имеющий статус лидера, то статус всех остальных узлов – не
лидер, 2) условие живучести, означающее, что начало назначения лидера приводит в
конечном итоге к тому, что один из узлов становится лидером.
Легко видеть, что алгоритм – корректен. Первой условие удовлетворяется согласно
основе алгоритма, что лидер - это узел системы с идентификатором, являющиймся
ближайшим к идентификатору kj набора узлов s j . Второе условие удовлетворяется с
помощью пирингового оверлейного маршрутизатора: на каждое обращение вычислить
идентификатор лидера оверлей дает однозначный номер узла, наиболее близкий к
идентификатору интересов набора. Так что пока есть элементы, в системе будет лидер.
2 электа 12 и 7
2 электа 12 и 7
2 электа 13 и7
Лидер
11
12
Лидер
11
11
7
7
12
y
15
x
Выход узла 11 из
системы
Лидер
13
Sj={1,2,3}
5
12
7
6
Sj={1}
2
1
1
3
Sj={1,2,3}
2
1
(a) Узел 1 присоединяется к
набору s j , где идентификатор
(б) Узлы 2 и 3 присоединяются
к набору s j
набора = 10
13
3
(в) Выход узла 11(лидера)
из системы и учреждение узла 12 в
качестве лидера
Выход лидера и агентов
из системы
7
12
5
- 1-й элект
14
6
-2-й элект
Sj={1,2,3}
2
1
3
(г) Одновременный выход из строя лидера и электы и учреждение узла 6 в качестве лидера.
Рис. 1 Пример отработки алгоритма
Заключение
В данной статье был предложен алгоритм назначения лидера, в котором определение лидера
происходит автономно (т.е. полностью распределено) с хорошей масштабируемостю. Так как
сложность алгоритма равна O(1) сообщений. Алгоритм может применяться для пиринговых
систем с структурированными топологиями.
5
Литература
[1] Hector Garcia-Molina, Elections in a Distributed Computing System, IEEE Transactions on
Computers, Vol. C-31, No. 1, PP.48-59 ,1982.
[2] George Coulours, Jean Dollimore, Tim Kindberg. Distributed systems. Addison-wesley,4th
edition.2005.PP.471-479.
[3] FIPS 180-1, “Secure hash standard,” Tech. Rep. Publication 180-1, Federal Information
Processing Standard (FIPS), National Institute of Standards and Technology, US
Department of Commerce, Washington D.C., April 1995.
[4] A. Rowstron and P. Druschel. “Pastry: Scalable, distributed object location and routing for
large-scale peer-to-peer systems”, In Proceedings of Middleware, Nov 2001. FreePastry.
Available: http://freepastry.rice.edu/
6
Download