Генератор и декодер Snowflake ID

Генерируйте и декодируйте 64-битные Snowflake ID с эпохами Twitter или Discord прямо в браузере. Ничто из введённого не покидает ваше устройство.

Генератор Snowflake ID работает целиком в вашем браузере. ID, метки времени и значения полей, которые вы вводите или декодируете, никогда не покидают ваше устройство, и ничего не загружается в ArrayKit.

Открыть генератор ULID

Об инструменте Генератор Snowflake ID

Генератор Snowflake ID строит 64-битные Snowflake ID так, как это делают Twitter и Discord: метка времени в миллисекундах, worker id, process id и посекундная последовательность (sequence), упакованные в один BigInt. Выберите пресет эпохи Discord или Twitter либо введите свою эпоху в миллисекундах Unix, затем задайте метку времени и значения полей, чтобы создать ID. Переключитесь на «Декодировать», чтобы вставить любой Snowflake и увидеть точную метку времени в миллисекундах, её время ISO и биты worker, process и sequence под выбранной эпохой. Удобно для обратного вычисления, когда было опубликовано сообщение Discord, воспроизведения ID в тестовой фикстуре или проверки корректности распределённой схемы id. Весь битовый сдвиг происходит на вашем устройстве; ID и метки времени, которые вы вводите, никогда не загружаются.

Возможности

Как использовать Генератор Snowflake ID

  1. Выберите Discord, Twitter или свою эпоху
  2. В «Генерировать» задайте метку времени и значения worker, process и sequence
  3. Скопируйте полученный 64-битный Snowflake ID
  4. Переключитесь на «Декодировать» и вставьте Snowflake, чтобы прочитать его метку времени и поля

Пример

Ввод

175928847299117063  (Discord epoch)

Результат

timestamp: 2016-04-30T11:18:25.796Z
worker: 1  process: 0  sequence: 7

Декодирование Snowflake Discord восстанавливает, когда он был создан, и его биты полей.

Частые ошибки и устранение неполадок

Часто задаваемые вопросы

Что такое Snowflake ID?
Snowflake — это 64-битный id, используемый Twitter и Discord, который упаковывает метку времени в миллисекундах, worker (machine) id, process id и посекундную последовательность в единое сортируемое число, так что id уникальны и примерно упорядочены по времени без центрального счётчика.
Как узнать, когда было отправлено сообщение Discord, по его ID?
Вставьте id сообщения или пользователя в «Декодировать» с выбранной эпохой Discord. Инструмент выдвигает 42 бита метки времени, добавляет эпоху Discord (1420070400000 мс) и показывает точное время создания как ISO и миллисекунды Unix.
В чём разница между эпохами Twitter и Discord?
Обе раскладки имеют одинаковую ширину битов, но отсчитывают миллисекунды от разных начальных точек: Twitter использует 1288834974657 (ноябрь 2010), а Discord — 1420070400000 (январь 2015). Декодирование с неверной сдвигает каждую метку времени на этот разрыв.
Почему worker и process ограничены 31, а sequence — 4095?
Раскладка отводит по 5 бит worker и process (2^5 − 1 = 31) и 12 бит sequence (2^12 − 1 = 4095). Значения выше этих пределов переполнились бы в следующее поле, поэтому генератор их отклоняет.
Можно ли использовать свою эпоху для собственного сервиса?
Да. Выберите пресет «Своя» и введите вашу эпоху в миллисекундах Unix. «Генерировать» и «Декодировать» затем используют это значение, что позволяет работать с любой схемой в стиле Snowflake, сохраняющей раскладку битов 42/5/5/12.
Отправляются ли куда-либо ID, которые я генерирую или декодирую?
Нет. Каждый битовый сдвиг выполняется в вашем браузере с помощью BigInt. Метки времени, id и значения полей, которые вы вводите или вставляете, никогда не покидают ваше устройство и не загружаются в ArrayKit.

Связанные инструменты

Все инструменты ArrayKit