雪花ID生成器
在线生成和解析雪花ID(Snowflake ID),支持自定义机器ID和纪元时间
关于雪花ID
- 雪花ID(Snowflake ID)是 Twitter 开源的分布式唯一ID生成方案,64位整数,趋势递增
- 结构:1位符号位 + 41位时间戳 + 10位机器ID + 12位序列号,每毫秒可生成 4096 个不重复ID
- 广泛用于分布式系统中替代数据库自增ID,避免分库分表时的ID冲突
操作说明
- 生成模式:设置机器ID和数量,选择纪元时间,点击「生成ID」
- 解析模式:输入已有雪花ID(每行一个),选择对应的纪元时间,点击「解析」
- 点击「复制全部」可一次性复制所有生成的ID
注意事项
- 机器ID范围 0~1023(10位),包含数据中心ID(5位)和工作节点ID(5位)
- 解析时必须使用与生成时相同的纪元时间,否则时间戳解析结果不正确
- 浏览器端生成的ID仅供测试,生产环境应在服务端生成以保证唯一性
- 所有计算均在浏览器本地完成,不会上传任何数据
雪花ID 知识详解
64位结构详解
| 位段 | 位数 | 说明 | 最大值 |
|---|---|---|---|
| 符号位 | 1 bit | 始终为 0,保证正整数 | — |
| 时间戳 | 41 bit | 相对纪元的毫秒数 | 约 69 年 |
| 数据中心ID | 5 bit | 数据中心编号 | 0~31 |
| 工作节点ID | 5 bit | 机器/进程编号 | 0~31 |
| 序列号 | 12 bit | 同毫秒内的序号 | 0~4095 |
雪花ID vs UUID 对比
| 特性 | 雪花ID | UUID v4 |
|---|---|---|
| 长度 | 64 bit(约 19 位数字) | 128 bit(36 字符含连字符) |
| 趋势递增 | ✅ 是(按时间排序) | ❌ 否(完全随机) |
| 数据库索引 | ✅ 友好(B+树效率高) | ⚠️ 较差(随机插入) |
| 全局唯一 | ✅(需协调机器ID) | ✅(概率唯一) |
| 可读性 | ✅ 纯数字 | ⚠️ 含连字符的十六进制 |
各平台雪花ID变体
| 平台 | 纪元时间 | 特点 |
|---|---|---|
| 2010-11-04 01:42:54 UTC | 原始实现 | |
| Discord | 2015-01-01 00:00:00 UTC | 用于消息/用户ID |
| 2011-01-01 00:00:00 UTC | PostgreSQL 实现 | |
| 百度 UidGenerator | 2016-09-20 | 支持容器部署 |