Распределённые системы
Выбор лидера: тест на свободное воспроизведение
Воспроизведение по памяти бьёт перечитывание. Для каждого промпта проговори или запиши полный ответ из головы, прежде чем открыть образцовый — усилие восстановить аргумент безопасности и есть то, что закрепит его, когда тебя поднимут в 3 часа ночи.
Восстанови спину юнита, не подглядывая: зачем существует единственный лидер, как Raft его выбирает, почему lease нельзя доверять через паузу, что такое split-brain и как именно fencing-токен закрывает окно.
- 01Зачем вообще выбирать единственного лидера и какую цену ты платишь взамен?
- 02Пройди по тому, как Raft выбирает лидера, и почему election timeout рандомизирован.
- 03Объясни, почему lease сам по себе не предотвращает запись двух узлов как лидеров.
- 04Дай определение split-brain и назови две его разные причины из юнита.
- 05Опиши механизм fencing-токена от начала до конца и назови единственное условие, без которого он бесполезен.
- 06Сравни, как ZooKeeper и etcd представляют и обнаруживают потерю лидерства при failover.
Если ты смог восстановить каждый ответ по памяти, ты держишь спину юнита: единственный лидер сериализует записи, но создаёт единую точку отказа, которую надо безопасно перевыбрать; Raft делает это term’ами и рандомизированными таймаутами 150–300 мс; лидерство — продлеваемый lease или сессия (lease TTL у etcd, ephemeral znode у ZooKeeper), чьё окно обнаружения ограничивает failover; lease не может остановить застывшего лидера от пробуждения и записи, что является одним из двух лиц split-brain (другое — partition, обрабатываемый кворумом); и только монотонный fencing-токен, навязанный у ресурса, делает устаревшую запись невозможной. Выбирай ради liveness, отсекай ради safety.