Алгоритм забияки — это метод распределённых вычислений для динамического выбора координатора или лидера из группы распределённых вычислительных процессов. Процесс с наивысшим ID среди живущих (не упавших) процессов выбирается в качестве координатора.
Алгоритм предполагает, что[1]
Алгоритм использует следующие виды сообщений
Когда процесс P восстанавливается после падения или детектор падения показывает, что текущий координатор упал, P осуществляет следующие действия
Свойство надёжности, ожидаемое от протокола выбора лидера, означает, что любой не завершившийся падением процесс выборов либо выбирает процесс Q, либо ничего не выбирает. Заметим, что все процессы, которые выбирают лидера, должны выбрать один и тот же процесс Q в качестве лидера. Алгоритм забияки удовлетворяет этому свойству (при приведённых условиях на модель) и ни в какой момент времени нет двух процессов в группе, считающих лидерами разные процессы, за исключением самого времени, когда происходят выборы. Это верно, поскольку если бы это было не так, имелось бы два процесса X и Y, таких, что оба послали сообщение о победе в группу. Это означает, что X и Y должны были послать сообщение о победе друг другу. Но этого случиться не может, поскольку до посылки сообщения о победе они должны были обменяться сообщениями о начале выборов и процесс с более низким ID сообщение о победе не послал бы. Мы имеем противоречие, а следовательно, наше предположение о существовании двух лидеров в системе в некоторый момент времени ложно, что показывает надёжность алгоритма забияки.
Живучесть также гарантирована в синхронизированной модели с восстановлением от падений. Рассмотрим падение лидера после посылки ответа (Жив), но перед посылкой сообщения о победе. Если процесс не восстановится за некоторый тайм-аут на процессах с меньшими ID, один из них станет в конечном итоге лидером (даже если некоторые из оставшихся процессов упадут). Если через некоторое время упавший процесс восстановится, он просто пошлёт сообщение о победе всей группе.
При условии, что сообщения алгоритма забияки имеют фиксированные (известные неизменные) размеры, самое большое число сообщений образуется в группе, когда выборы инициирует процесс с наименьшим ID. Этот процесс посылает (N-1) сообщений о начале выборов, следующий по значению ID процесс посылает (N-2) сообщений и так далее. В результате получим сообщений. Имеется также ответных сообщений и сообщений координатора, так что общее число сообщений в худшем случае будет равно .
Emmett Witchel. Distributed Coordination. — 2005.
Для улучшения этой статьи желательно:
|