Проблема в том, что мы хотели бы избежать того, чтобы все компьютеры знали друг друга, а только лидер.
Выборы лидеров — это проблема выбора единственного лидера из множества потенциальных кандидатов в лидеры. Считайте, что у него есть два обязательных свойства: живучесть и безопасность. Здесь живость будет означать, что «большую часть времени есть лидер», а безопасность будет означать, что «лидеров нет или один». Давайте рассмотрим, как мы будем решать это свойство безопасности в вашем примере, используя широковещательную рассылку.
Давайте выберем простой (сломанный) алгоритм, предполагая, что каждый узел имеет уникальный идентификатор. Каждый узел транслирует свой идентификатор и слушает. При получении более высокого ID, чем его собственный, прекращает участие. Если он получает более низкий идентификатор, чем его собственный, он снова отправляет широковещательную рассылку. Предполагая синхронную сеть, последний идентификатор, который все получают, является идентификатором лидера. Теперь представьте сетевой раздел. Протокол благополучно продолжится по обе стороны раздела, и будут избраны два лидера.
Это верно для этого сломанного протокола, но также верно для всех возможных протоколов. Как отличить узлы, с которыми вы не можете связаться, и узлы, которые не существуют, если вы не знаете (по крайней мере), сколько узлов существует? Итак, есть первый результат безопасности: вам нужно знать, сколько существует узлов, иначе вы не сможете гарантировать наличие только одного лидера.
Теперь давайте ослабим наше ограничение безопасности, сделав его вероятностным: «лидеров может быть ноль или больше, но в большинстве случаев он один». Это делает проблему разрешимой, и широко используемым решением являются сплетни (эпидемические протоколы). Например, см. Служба обнаружения сбоев в стиле сплетен, в которой обсуждается вариант именно эта проблема. Статья в основном посвящена вероятностно правильному обнаружению и перечислению отказов, но если вы можете это сделать, вы также можете провести вероятностно правильный выбор лидера.
Насколько я могу судить, безопасные невероятностные выборы лидеров в общих сетях невозможны без хотя бы перечисления участников.
person
Marc Brooker
schedule
13.04.2014