🆔 UUID Tools

Tools for generating, decoding and analyzing UUIDs

什么是 UUID?

UUID(通用唯一标识符)是一种标准化的标识符格式,旨在在空间和时间上全局唯一。UUID 是 128 位的值,通常表示为 32 个十六进制数字,分为五组并用连字符分隔:123e4567-e89b-12d3-a456-426614174000

UUID 由 RFC 9562 标准定义(取代了之前的 RFC 4122),用于计算机平台中标识信息,而无需集中注册或协调。

UUID 的格式

所有 UUID 都具有一个通用格式,由 36 个字符组成(32 个十六进制数字加 4 个连字符),按照以下模式组织:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

其中:

  • x 是任意十六进制数字(0-9,a-f)
  • M 表示 UUID 的版本(1-7)
  • N 表示 UUID 的变体(通常为 8、9、A 或 B,用于现代 UUID)

UUID 版本比较

版本名称生成方法按时间排序使用场景
UUID v1时间戳当前时间戳 + 节点 ID(MAC)是(部分)日志记录,分布式系统
UUID v3基于名称(MD5)命名空间 + 名称的 MD5 哈希相同输入生成一致的 ID
UUID v4随机随机数或伪随机数通用用途,最常用
UUID v5基于名称(SHA-1)命名空间 + 名称的 SHA-1 哈希更强哈希的一致 ID
UUID v6重新排序的时间戳时间戳(按排序顺序)数据库键,按时间排序的日志
UUID v7Unix 时间戳Unix 时间戳 + 随机数据现代可排序标识符
Nil UUID空 UUID全为零N/A特殊值,未初始化标记

UUID 的优势

  • 无需协调:生成 ID 时无需集中协调
  • 全局唯一性:碰撞概率极低
  • 固定长度:一致的 36 个字符表示
  • 跨平台:几乎兼容所有编程语言
  • 多功能:不同版本适用于不同使用场景

UUID 的非标准替代方案

ID 类型描述优势劣势
GUID微软的 UUID 实现功能上等同于 UUID在旧系统中可能有实现差异
ULID通用唯一可排序标识符按字典顺序排序,时间戳优先,不区分大小写较新技术,采用率较低
Snowflake IDTwitter 的分布式 ID 系统按时间排序,紧凑(64 位)需要集中协调
CUID/CUID2抗碰撞 ID短小,适合客户端生成非官方标准
Nano ID生成小型、安全且适合 URL 的唯一字符串比 UUID 更小,可配置字母表非标准化
Short UUIDUUID 标准的更短编码更紧凑的表示需要转换为/从标准 UUID
Nil UUID所有位为零的 UUID特殊语义意义非唯一(用作特殊值)
Minecraft UUID带或不带连字符的 UUID与标准 UUID 兼容仅格式差异

实际应用

  • 数据库主键:特别是在分布式或复制数据库中
  • 分布式系统:在多个系统中标识实体
  • Web 应用:会话 ID,匿名用户跟踪
  • 内容管理:文档和媒体标识符
  • API:请求和事务标识符,用于跟踪和调试
  • 物联网:无需集中注册即可标识设备
  • 数据同步:在多个数据存储中标识记录
  • 软件许可:唯一的产品或许可证密钥