Доказано, что каждая снежинка имеет уникальную структуру. Разработчики Twitter вдохновились этим феноменом и изобрели Snowflake ID — целочисленный глобально-уникальный идентификатор. Проблематика хорошо описана в моём предыдущем посте про Lamport Timestamp, поэтому здесь сразу перейдём к основной части. Структура 64-битного идентификатора (от старшего бита к младшему): В зависимости от потребностей размерность полей может варьироваться. Например, если требуется более длительное хранение данных (более 69 лет), можно увеличить размерность поля Timestamp. Изменение на 1 бит изменяет диапазон в 2 раза (42 бита — 139 лет, 43 бита — 278 лет и т.д.; аналогично в обратную сторону). Изменить размерность полей можно за счет размерности счётчика генераций. Если в системе генерации редкие (и нет значительных всплесков), то 12 разрядов слишком много. Для закрепления материала приготовил рабочий пример на Java. Он очень простой, его можно портировать на любой другой язык. Забирайте, улучшайте, делит
Snowflake ID: генерация целочисленного идентификатора в распределённой системе
1 сентября 20251 сен 2025
3 мин