不喜欢广告? 去 无广告 今天
雪花ID生成器(Twitter风格)
数据开发人员随机的
广告 移除?
广告 移除?
指导
雪花ID生成器(Twitter风格)
使用经典的Twitter位布局生成64位Snowflake ID:一个41位的毫秒时间戳,一个10位的机器/工作节点ID,以及一个每毫秒12位的序列号。每个ID均在客户端通过BigInt运算生成,因此不会离开您的浏览器,批量生成最多1000个ID在单个机器上始终不会发生碰撞。
如何使用
- 集合 数数 (1到1000) 表示您想要的Snowflake ID数量。
- 选择一个 机器ID 在0到1023之间,以确保不同工作节点的ID不会发生碰撞。
- 选择一个 纪元:Twitter(2010-11-04)、Discord(2015-01-01)或纯Unix。
- 选择一个 输出格式:十进制、十六进制、二进制、JSON或CSV。
- 点击 生成,然后复制或下载结果。
- 要解码,请将现有的Snowflake ID粘贴到解码器中,以查看其时间戳、机器ID、序列号、十六进制和64位二进制分解。
特征
- 批量生成 – 一键生成最多1000个按时间排序的64位ID。
- 可配置的机器ID – 适用于分片部署的完整10位范围(0-1023)。
- 多种时间起点 – 提供Twitter、Discord和Unix时间起点预设,以实现跨系统兼容性。
- 多种输出格式 – 十进制、十六进制、二进制、JSON或CSV。
- 内置解码器 – 可将任意Snowflake ID反向解析为时间戳、机器ID、序列号、十六进制和二进制组成部分。
- 正确的序列号处理 – 当4096/毫秒预算耗尽时,自动递增并等待下一毫秒。
- 完全客户端 – 使用BigInt运算,无需服务器调用,不记录任何日志。
常问问题
-
什么是Snowflake ID?
Snowflake ID是一种64位整数,专为分布式系统设计。Twitter于2010年引入该格式,以替代自动递增的数据库ID:通过将自定义时间起点的毫秒时间戳与机器/工作节点ID和每毫秒序列号打包在一起,生成可排序且无碰撞的ID,无需中央协调即可生成。
-
41 + 10 + 12 位布局是如何工作的?
最高位作为符号位保留,剩下63位可用。接下来的41位编码自自定义时间起点以来的毫秒数(适用于约69年)。接下来的10位标识机器或工作节点(最多支持1024个机器)。最后的12位是序列计数器,允许单个机器在每毫秒内生成最多4096个ID,之后需要等待。
-
为什么Snowflake ID按时间排序?
因为时间戳占据了64位值的最高有效位,因此来自同一时间起点的任意两个Snowflake ID首先按时间戳比较,然后才按机器ID和序列号比较。这意味着ID的字母或数字排序也大致是时间顺序,这在数据库索引、分页和日志关联中非常有用。
-
如果单个机器在一毫秒内生成超过4096个ID会发生什么?
12位序列计数器会溢出。一个正确的Snowflake实现会检测到溢出,直到系统时钟前进到下一个毫秒后才重新启动,并将序列重置为零。本工具遵循此模式,因此批量生成不会在相同机器上产生重复ID。
