теория
Разберём лекарство спокойно — идея красивее, чем звучит.
Главная ловушка распределёнки: узел не может доверять сам себе. «Я лидер», «моя аренда ещё действует», «прошло всего пару секунд» — всё это узел утверждает изнутри, а изнутри он не видит собственной паузы и не слышит, что сеть объявила его мёртвым. Отсюда : два узла одновременно искренне считают себя главными и оба действуют.
Значит, самопроверка бесполезна, и вердикт «ты ещё главный?» должен выносить не сам узел, а тот, к кому он приходит с запросом. Инструмент для этого — (ограждающий номер). Работает так:
Зомби с номером 33 стучится в базу, которая уже обслужила лидера с номером 34, — и получает отказ, не успев ничего испортить. Заметь: базе не нужно знать, кто «настоящий» лидер и была ли пауза. Ей хватает одного монотонного числа. Сложную проблему «жив ли узел» мы заменили простой «свежий ли у тебя номер».
Крайний случай для полноты картины — : узел не просто замирает, а врёт или действует злонамеренно (подделывает номер). Защита от такого дорога и нужна в основном там, где узлам нельзя доверять в принципе, — в обычном сервисе курьеров ею не занимаются.