Snowflake-подобный ID объединяет время, уникальный ID узла и локальную последовательность. Узлы генерируют значения без сетевого обращения на каждый ID, но уникальность зависит от строгого управления узлами и временем.
Как спроектировать отказоустойчивую систему генерации уникальных ID в распределённой среде, аналогичную Snowflake от Twitter?
Snowflake-подобный ID объединяет время, уникальный ID узла и локальную последовательность. Узлы генерируют значения без сетевого обращения на каждый ID, но уникальность зависит от строгого управления узлами и временем.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Snowflake-подобный ID объединяет время, уникальный ID узла и локальную последовательность. Узлы генерируют значения без сетевого обращения на каждый ID, но уникальность зависит от строгого управления узлами и временем.
Разрядность выбирают по сроку жизни системы, числу узлов и пиковой генерации за единицу времени. При переполнении sequence ждут следующий интервал или отказывают; при откате часов нельзя молча повторить диапазон. Выделение node ID должно исключать двух активных владельцев, включая рестарт и сетевую изоляцию; нужны fencing или эквивалентная защита. Порядок примерно временной, не глобально строгий. Нужны мониторинг часов, тесты отказов и политика восстановления.