Свобода выбора (право)
- 1 year ago
- 0
- 0
Алгоритм выбора лидера — это процесс в системе распределённых вычислений , который назначает один процесс организатором некоторой задачи, распределённой на несколько компьютеров (узлов). До начала выполнения задачи все узлы сети либо не осведомлены, какой узел будет вести себя как «лидер» (или координатор ) задачи, либо не в состоянии общаться с текущим координатором. После того, как алгоритм выбора лидера отработает, каждый узел сети знает об определённом единственном узле, выступающем в качестве лидера.
Узлы сети общаются друг с другом с целью решить, который из них возьмёт на себя роль «лидера». Для этого им нужен некоторый метод, чтобы разрушить симметрию узлов. Например, если каждый узел имеет уникальные и отличительные черты, которые можно сравнить, то узлы могут сравнивать эти черты и решать, какой узел с лучшей характеристикой является лидером.
Постановку задачи часто приписывается ЛеЛанну, который формализовал её как метод создания нового маркера в потерявшей маркер сети Token ring .
Алгоритмы выбора лидера разрабатываются экономичными в терминах передачи общего числа байтов и времени. Алгоритм, предложенный Галлагером, Хамблетом и Спира для общих неориентированных графов, имеет сильное влияние на разработку распределённых алгоритмов вообще и выиграл премию Дейкстры как авторитетная статья в области распределённых вычислений.
Было предложено много разных алгоритмов для различных топологий сетей — графов , таких как неориентированные кольца, ненаправленных колец, полных графов, решёток, ориентированных эйлеровых графов и других. Основной метод, который отвязывает проблему семейства графов от разработки алгоритма выбора лидера, был предложен Корачем, Куттеном и Мораном .
Задача выбора лидера предназначена для решения каждым процессором, будет он лидером или нет, с ограничением, что в точности один процессор решает, что он будет лидером . Алгоритм решает задачу выбора лидера, если
Правильный алгоритм выбора лидера должен удовлетворять следующим условиям :
Алгоритм выбора лидера может варьироваться в следующих аспектах :
Кольцо является топологией связанного графа, в которой каждый узел связан в точности с двумя другими узлами, т.е. в графе с n узлами имеется в точности n рёбер, соединяющих узлы. Кольцо может быть однонаправленным, что означает, что процессоры могут общаться только в одном направлении (узел может посылать сообщения только налево или только направо), или двунаправленным, что означает, что процессоры могут пересылать и получать сообщения в обоих направлениях (узел может посылать сообщения как налево, так и направо).
Говорят, что кольцо анонимно, если любой процессор неотличим. Более формально, система представляет собой тот же самый конечный автомат (то есть автомат, имеющий конечное число внутренних состояний) для любого процессора . Не существует детерминистского алгоритма для выбора лидера в анонимных кольцах, если даже размер сети известен процессам . Это потому, что нет возможности разрушить симметрию в анонимном кольце, если все процессы работают с одинаковой скоростью. Состояние процессоров после некоторых шагов зависит только от начального состояния соседних узлов. Таким образом, поскольку их состояния идентичны и выполняются те же процедуры, в каждом раунде каждый процессор посылает те же самые сообщения. Поэтому состояние каждого процессора меняется также одинаково и если один процессор выбирает себя в качестве лидера, то же самое сделают все остальные процессоры.
Для простоты, докажем это для анонимных синхронных колец. Докажем от противного. Рассмотрим анонимное кольцо R размера n>1. Пусть существует алгоритм «A» решения задачи выбора лидера в анонимном кольце R .
Доказательство: Докажем по индукции по .
База индукции: : все процессы в начальном состоянии, так что все процессы идентичны.
Гипотеза индукции: Предположим, что лемма верна для первых раундов.
Шаг индукции: В раунде любой процесс посылает одно и то же сообщение направо и одно и то же сообщение налево. Поскольку все процессы имеют одно и то же состояние в раунде , в раунде k каждый процесс получит сообщение слева и сообщение справа. Поскольку все процессы получат одинаковые сообщения в раунде , они перейдут в одно и то же состояние после раунда .
Эта лемма противоречит тому, что после некоторого конечного числа раундов выполнения алгоритма A один из процессов окажется в выбранном состоянии, а остальные окажутся в невыбранном.
Общим подходом решения задачи выбора лидера в анонимных сетях является использование вероятностных алгоритмов . При таком подходе обычно процессоры предполагают некоторого рода идентификацию, основанную на вероятностной функции, и передают его остальной части сети. В конце концов, применяя алгоритм, осуществляется выбор лидера (с высокой вероятностью).
Поскольку нет алгоритма для анонимных колец (как доказано выше), асинхронные кольца будем считать неанонимными. В неанонимных кольцах каждый процесс имеет уникальный идентификатор и процесс не знает о размере кольца. Выбор лидера в асинхронных кольцах может быть осуществлён алгоритмом с посылкой или сообщений.
В алгоритме любой процесс посылает сообщение с его налево, затем ждёт сообщения справа. Если в полученном сообщении больше его собственного , сообщение передаётся налево, если же меньше, сообщение игнорируется и действий никаких не производится. Если в сообщении равен собственному , налево посылается сообщение о признании себя выбранным лидером. Остальные процессы передают объявление лидера налево и переводят своё состояние в невыбранные. Ясно, что верхняя граница числа сообщений для этого алгоритма равна .
Алгоритм работает в несколько фаз. На фазе процесс определяет, не является ли он победителем среди левых соседей и правых соседей. Если он является победителем, он может перейти в следующую фазу. На фазе для каждого процесса необходимо определиться, является ли он победителем, путём посылки сообщения с левому и правому соседям (соседи не передают сообщения дальше). Сосед отвечает сообщением , только если в сообщении больше его собственного , в противном случает он отвечает сообщением . Если получает два сообщения , слева и справа, процесс является победителем на фазе . На фазе победитель фазы должен послать сообщение с его левым и правым соседям. Если соседи на пути следования получают в сообщении больший их собственного , они пересылают сообщение следующему соседу, в противном случае отвечают сообщением . Если -й сосед получает , больший его собственного , он посылает назад , в противном случае посылает . Если процесс получает два сообщения , он является победителем в фазе . В последней фазе победитель получает свой собственный в сообщении, обрывает передачу сообщения далее и посылает сообщение о завершении другим процессам. В худшем случае в каждой фазе имеется победителей, где является номером фазы. Всего будет фаз. Каждый победитель посылает порядка сообщений в каждой фазе. Таким образом, сложность по числу сообщений равна .
В книге Атья и Уэдча «Распределённые вычисления» ( англ. Distributed Computing ) они описывают неоднородный алгоритм, использующий сообщений в синхронном кольце с известным размером кольца. Алгоритм разбивается на фазы, каждая фаза имеет раундов, каждый проход занимает одну единицу времени. На фазе , если имеется процесс с , этот процесс посылает прерывающее сообщение ( англ. termination message ) другим процессам (посылка прерывающих сообщений стоит раундов). В противном случае переходим к следующей фазе. Алгоритм проверяет, имеется ли фаза с номером, равным процесса, затем делает те же шаги, что и для фазы . В конце выполнения алгоритма минимальное будет выбрано в качестве лидера. Алгоритм использует ровно сообщений и раундов.
Итаи и Родэ предложили алгоритм для ненаправленного кольца с синхронными процессами. Они предполагают, что размер кольца (число узлов) процессам известно. Для кольца с размером n активны процессоров. Каждый процессор решает с вероятностью стать кандидатом. В конце каждой фазы каждый процесс вычисляет число кандидатов, и если это число равно 1, объявляет себя лидером. Для определения числа c кандидатов каждый кандидат посылает токен (маркер) в начале фазы, который проходит через кольцо, возвратившись ровно через n единиц времени пославшему токен узлу. Каждый процессор определяет значение c путём подсчёта числа токенов, прошедших через узел. Этот алгоритм осуществляет выбор лидера с ожидаемой сложностью . Аналогичный подход используется также, когда используется механизм тайм-аута для определения взаимных блокировок в системе . Существуют алгоритмы для колец специального размера, таких как кольца с простым числом узлов и нечётным числом узлов .
В обычных подходах выбора лидера размер кольца предполагается известным процессам. В случае анонимных колец без использования внешней сущности невозможно выбрать лидера. Даже если предположить, что алгоритм существует, лидер не может оценить размер кольца, т.е. в любом анонимном кольце существует положительная вероятность, что алгоритм вычислит неверный размер сети . Чтобы преодолеть эту проблему, Фишер и Цзян использовали так называемого оракла (предсказателя) , которого каждый процессор может спросить, имеется ли уникальный лидер. Они показали, что после некоторого промежутка времени оракл гарантированно вернёт один и тот же ответ всем процессам .
В одной из ранних работ Чан и Робертс
предложили однородный алгоритм, в котором процессор с наибольшим ID выбирается в качестве лидера. Каждый процессор посылает собственный ID в направлении по часовой стрелке. Процесс получает сообщение и сравнивает ID сообщения с собственным ID. Если ID сообщения больше, сообщение посылается дальше, в противном случае оно отбрасывается. Они показали, что алгоритм использует не более
сообщений, а в среднем
сообщений.
улучшили этот алгоритм до сложности
по сообщениям, введя двунаправленную схему рассылки сообщений (позволив процессорам посылать сообщения в обоих направлениях.
Решётка является другим популярным видом сетевой топологии, особенно в параллельных системах, системах избыточной памяти ( англ. redundant memory systems ) и сетей внутренней коммуникации . В решёточной структуре узлы являются либо углами (только два соседа), границами (три соседа) или внутренними (с четырьмя соседями).Число рёбер в решётке размера равно .
Обычный алгоритм для решения задачи выбора лидера в неориентированной сети заключается в выборе только одного из четырёх угловых узлов в качестве лидера. Поскольку угловые узлы не могут быть осведомлены о состоянии других процессов, алгоритм должен начинаться в угловых узлах. Лидер выбирается следующим образом .
Сложность сообщения не превосходит , а если решётка квадратная, .
Ориентированная решётка является специальным случаем, в которой порты помечены как северный, южный, восточный и западный. Выбор лидера в ориентированной решётке тривиален. Нам следует выбрать угол, например «северо-восточный» и удостовериться, что узел знает, что он является лидером.
Специальным случаем решёточной архитектуры является тор, в котором решётка «свёрнута». В этой структуре каждый узел имеет в точности 4 соединяющих ребра. Один из подходов выборов в такой структуре известен как выборные туры. Подобно процедурам в кольцевых структурах этот метод на каждом туре исключает потенциальных кандидатов, пока не останется единственный кандидат. Этот узел и становится лидером и уведомляет остальные процессы о прекращении выборов . Этот подход используется, чтобы получить сложность O(n). Существует также более практичные подходы с наличием в сети разорванных соединений .
Гиперкуб — это сеть, состоящая из узлов, каждый со степенью k. Аналогичные описанным выше выборные туры могут быть использованы для решении задачи выбора лидера. В каждом туре соревнуются пары узлов (называемые дуэлянтами) и победитель переходит на следующий тур, это означает, что только половина дуэлянтов переходят на следующий тур. Процедура продолжается, пока не останется один дуэлянт, и он становится лидером. Будучи выбранным, лидер сообщает о выборе всем остальным процессам. Этот алгоритм требует посылки сообщений. В случае неориентированных гиперкубов используется аналогичный подход, но сложность по сообщениям вырастает до .
Полные сети — это структуры, в которых все процессы связаны друг с другом, т.е. степень каждого узла равна n-1, где n представляет собой размер сети. Известно оптимальное решение со сложностью по числу сообщений и памяти . В этом алгоритме процессы имеют следующие состояния
Для выбора лидера рассматривается виртуальное кольцо в сети. Все процессоры первоначально переходят в начальное состояние, пока их не разбудят. Когда узлы просыпаются, они становятся кандидатами в лидеры. Основываясь на схеме приоритетов, кандидаты участвуют в виртуальном кольце. В некоторый момент времени кандидаты будут знать идентификацию кандидатов, предшествующих им в кольце. Кандидаты с большим приоритетом спрашивают кандидатов с меньшим приоритетом о их предшественниках. Кандидаты с более низким приоритетом переходят в состояние вне игры после ответа кандидату с бо́льшим приоритетом. Основываясь на данной схеме, кандидат с наибольшим приоритетом, в конце концов, знает, что все узлы в системе вне игры, за исключением его самого, и в этот момент он знает, что является лидером.
Как подсказывает название, эти алгоритмы разработаны для использования в любом типе сетей процессов без предварительного знания топологии сети или её свойств, таких как размер .
Протокол Shout строит остовное дерево на графе и выбирает корень в качестве лидера. Алгоритм имеет общую стоимость, линейную от числа рёбер.
Эта техника по существу подобна поиску минимального остовного дерева , в котором корень дерева становится лидером. Основная идея этого метода заключается в слиянии индивидуальных узлов для формирования более крупных структур. Результатом алгоритма является дерево (граф без циклов), корень которого и становится лидером всей системы. Цена метода mega-merger равна , где m — число рёбер, а n — число узлов.
является алгоритмом поиска минимума, состоящим из двух фаз: фазы подготовки и серии итераций
. На первой фазе (
подготовка
), каждый узел обменивается своим id со всеми соседями и в зависимости от результата связывающему ребру придаётся направление. Например, если узел x имеет меньший id, чем у узла y, ребро ориентируется от x в y. Если узел имеет меньший id, чем у всех его соседей, он становится
источником
. Узел же с бо́льшим id, чем у всех соседей, имеет только входящие рёбра и становится
стоком
. Все другие узлы являются
внутренними
.
Когда все рёбра получат ориентацию, алгоритм переходит к фазе
итераций
. Каждая итерация является туром выборов, в котором некоторые кандидаты удаляются. Каждая итерация имеет две фазы —
YO-
и
-YO
. В первой (
YO-
) фазе источники начинают процесс передачи в каждый сток наименьшего значения id источника, подсоединённого к стоку.
Yo-
-Yo
После конечного тура любой источник, который получил NO больше не является источником и является стоком. В дополнительном туре, обрезка , удаляются бесполезные узлы, существование которых не влияет не следующие итерации.
Метод имеет общую стоимость по сообщениям. Его действительная сложность, включая обрезку, не известна и является открытой проблемой.
В протоколах радиосетей выбор лидера часто используется в качестве первого шага для получения более продвинутых коммуникационных примитивов, таких как сбор данных или широковещание . Сама натура беспроводных сетей порождает коллизии, когда узлы начинают передачу в тот же самый момент времени. Выбор лидера позволяет лучше координировать этот процесс. В то время как диаметр D сети является естественной нижней границей для времени, необходимого для выбора лидера, верхние и нижние границы для задачи выбора лидера зависят от специфики изучаемой модели.
В радиосетях n узлов могут в любом раунде выбрать, передавать сообщение или получать. Если не доступно обнаружение коллизий , то узел не в состоянии различить тишину и получение более одного пакета одновременно. При наличии обнаружения коллизий узел может обнаружить получение двух и более входящих сообщений одновременно, хотя он и не в состоянии их декодировать в этом случае. В модели beeping узлы могут различить между тишиной и по меньшей мере одним сообщением с помощью обнаружения несущей .
Известные времена для варьируются от константы (для случая обнаружения коллизий) до O(n \log n) раундов (детерминированные сети и сети без обнаружения коллизий). В известное время варьируется где-то от раундов (с высокой вероятностью в модели beeping), (детерминированные модели в модели beeping), (детерминированные модели с обнаружением коллизий) до раундов (детерминированные модели и модели без обнаружения коллизий).
M. Al Refai. Dynamic Leader Election Algorithm in 2D Torus Network with Multi Links Failure // IJCST. — 2014. — Т. 2 , вып. 5 .