модуль 4 из 6 · Акт III · ~30 мин · 7 решений

сцена

Вторник, утро. Тимур ставит на стол кружку и открывает лог, от которого у него дёргается глаз.

Тимур
Тимур

Ночью сервис курьеров сошёл с ума. Курьеру Петру в 3:14 упало два заказа от системы — из разных её концов. В то же время заказ №8842 назначили сразу двум курьерам. Выглядит так, будто у координатора курьеров было два главных узла одновременно.

Гена
Гена

Так у нас же была аренда на лидерство (lease — узел держит роль лидера ограниченное время и обязан её продлевать) — ровно чтобы главный был один. Сеть моргнула, что ли?

Тимур
Тимур

В том и странность. Смотри таймлайн: узел A был лидером, потом на двадцать секунд пропал — вообще перестал отвечать. Система решила, что он умер, и выбрала лидером узел B. А в 3:14 узел A внезапно ожил и как ни в чём не бывало продолжил раздавать заказы. Двадцать секунд для него будто не прошли. И самое странное: в логе ни падения, ни рестарта — процесс был жив всё это время, просто замолчал.

Лера
Лера

Двадцать секунд узел просто... молчал? И его посчитали мёртвым?

Иван
Иван

(медленно) А как ещё его посчитать? Он не прислал «я умер» — он вообще ничего не прислал. Молчащий узел и мёртвый узел снаружи выглядят одинаково. Похоже, вся наша беда — в том, что мы верили, будто можем отличить одно от другого. Давайте разберём, чему в распределённой системе вообще можно доверять. Спойлер: почти ничему.

ночной инцидент · два лидера разом
заказ №1заказ №2координатор Aуверен: я лидеркоординатор Bтоже уверен: я лидеркурьер Пётроба назначили ему заказ

Узел A «пропал» на 20 секунд, назначили B — а потом A ожил и тоже раздаёт заказы.

← карта