модуль 5 из 6 · Акт III · ~30 мин · 7 решений
сцена
Четверг. Разбор того самого split-brain у курьеров ещё висит на доске.
Fencing-токены прикрутили — зомби-лидер больше не испортит данные, его записи просто отвергаются. Но это защита последнего рубежа. Настоящая дыра осталась: как у курьерского сервиса вообще завелось два лидера? Кто их назначает?
А что тут назначать. Пусть лидер — узел с самым маленьким номером. Все его знают, все ему подчиняются. Одна строчка кода.
Пробовали бы — и напоролись. Стоит сети между дата-центрами моргнуть на полминуты, как каждая половина увидит, что «узел с меньшим номером» с её стороны недоступен, — и каждая назначит лидером своего. Два лидера, оба абсолютно уверены в своей правоте — и без всякой GC-паузы, которую мы уже закрыли фенсингом.
Значит, проблема не в том, что мы выбираем лидера. А в том, что каждый узел решает это сам, по своей картинке мира. А картинка у каждого своя — мы вчера как раз это и выяснили: сеть врёт, часы врут, паузы врут.
И что, есть способ надёжно договориться, когда никому нельзя верить на слово?
Есть. Он старше меня и называется скучно — консенсус. Давай покажу, почему «узел с меньшим номером» — это не выбор лидера, а его имитация.