登录
UUID生成器

UUID生成器

相关工具 TODO
1
2
3

UUID 生成器

什么是 UUID?

UUID(Universally Unique Identifier,通用唯一标识符)是一种标准化的标识符格式,用于在分布式系统中唯一标识信息。UUID 也被称为 GUID(Globally Unique Identifier,全局唯一标识符),它们本质上是相同的概念。

UUID 的主要特点:

  • 全球唯一性:在正确生成的情况下,UUID 具有全球唯一性
  • 标准格式:遵循 RFC 4122 标准规范
  • 无需中央控制:可以在任何地方独立生成
  • 固定长度:128 位(16 字节)数据,通常表示为 32 个十六进制字符
  • 广泛支持:几乎所有编程语言和数据库都支持 UUID

标准格式:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

其中:

  • x 代表十六进制数字(0-9,a-f)
  • M 代表 UUID 版本号
  • N 代表变体信息

UUID 版本类型

UUID v1 (基于时间戳)

特点

  • 基于 MAC 地址和时间戳生成
  • 包含时间信息,可以提取生成时间
  • 在同一台机器上生成的 UUID 是有序的

优点

  • 包含时间信息,便于调试和分析
  • 在单机环境下可保证顺序性
  • 生成速度快

缺点

  • 可能泄露 MAC 地址信息
  • 在虚拟化环境中可能出现重复
  • 依赖系统时钟

适用场景

  • 数据库主键(需要时间排序)
  • 日志记录标识
  • 需要时间追溯的场景

示例

550e8400-e29b-41d4-a716-446655440000

UUID v4 (随机生成)

特点

  • 基于随机数或伪随机数生成
  • 不包含任何机器或时间信息
  • 完全随机,无法预测

优点

  • 不泄露任何系统信息
  • 安全性更高
  • 不依赖系统环境

缺点

  • 纯随机,无序
  • 理论上存在极小的碰撞概率

适用场景

  • API 密钥和令牌
  • 会话标识符
  • 临时文件名
  • 安全要求较高的场景

示例

6ba7b810-9dad-11d1-80b4-00c04fd430c8

工具功能特性

单个生成

  • 版本选择:支持 UUID v1 和 v4 两种版本
  • 格式选项
    • 大写/小写字母
    • 是否包含连字符
    • 是否添加大括号
  • 即时生成:点击按钮立即生成新的 UUID
  • 一键复制:支持快速复制生成的 UUID

批量生成

  • 数量控制:支持 1-1000 个 UUID 的批量生成
  • 统一格式:批量生成的 UUID 采用相同的格式设置
  • 导出功能:可将生成的 UUID 列表导出为文本文件
  • 批量复制:支持一键复制所有生成的 UUID

UUID 验证

  • 格式验证:检查输入的 UUID 是否符合标准格式
  • 信息解析:显示 UUID 的版本、变体等详细信息
  • 时间提取:对于 v1 UUID,尝试提取和显示时间戳信息
  • 实时反馈:输入时即时显示验证结果

使用方法

生成单个 UUID

  1. 选择”单个生成”标签页
  2. 选择 UUID 版本(v1 或 v4)
  3. 根据需要设置格式选项
  4. 点击”生成新 UUID”按钮
  5. 点击复制按钮保存结果

批量生成 UUID

  1. 选择”批量生成”标签页
  2. 设置生成数量(1-1000)
  3. 点击”批量生成”按钮
  4. 使用”复制全部”或”导出”功能保存结果

验证 UUID

  1. 选择”UUID 验证”标签页
  2. 在输入框中粘贴或输入要验证的 UUID
  3. 查看验证结果和详细信息

格式说明

标准格式

550e8400-e29b-41d4-a716-446655440000

无连字符格式

550e8400e29b41d4a716446655440000

大写格式

550E8400-E29B-41D4-A716-446655440000

大括号格式

{550e8400-e29b-41d4-a716-446655440000}

应用场景

数据库主键

CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

API 开发

// 生成API请求ID
const requestId = generateUUID()
console.log(`Processing request: ${requestId}`)

// REST API资源标识
const userId = '550e8400-e29b-41d4-a716-446655440000'
const apiUrl = `https://api.example.com/users/${userId}`

文件命名

// 临时文件命名
const tempFileName = `temp_${generateUUID()}.json`

// 上传文件重命名
const uploadedFile = `uploads/${generateUUID()}_${originalName}`

分布式系统

// 微服务请求追踪
const traceId = generateUUID()
logger.info(`Service A processing`, { traceId })

// 消息队列
const messageId = generateUUID()
queue.publish({ id: messageId, data: payload })

最佳实践

版本选择建议

使用 UUID v4 的场景

  • Web 应用的会话 ID
  • API 密钥和访问令牌
  • 安全相关的标识符
  • 微服务间的请求 ID

使用 UUID v1 的场景

  • 数据库记录 ID(需要时间排序)
  • 日志记录的唯一标识
  • 需要时间追溯的业务场景
  • 审计和监控系统

存储优化

  1. 数据库存储

    • 使用专门的 UUID 数据类型
    • 考虑使用 ULID 等时间排序友好的替代方案
    • 注意索引性能影响
  2. 网络传输

    • JSON 中使用字符串格式
    • 二进制传输时使用原始 128 位格式
    • 考虑压缩传输

性能考虑

  1. 生成性能

    • v4 版本生成速度更快
    • 批量生成时注意内存使用
    • 考虑使用 UUID 池预生成
  2. 比较和查找

    • 二进制格式比较更快
    • 建立适当的数据库索引
    • 避免字符串模糊匹配

安全注意事项

  1. 信息泄露

    • v1 版本可能泄露 MAC 地址
    • 时间戳信息可能被用于攻击
    • 在安全敏感场景使用 v4
  2. 随机性质量

    • 确保随机数生成器质量
    • 避免使用弱随机数源
    • 定期检查生成的 UUID 分布

常见问题

Q: UUID 真的是全球唯一的吗?

A: 在正确实现的情况下,UUID 的冲突概率极低。对于 v4 UUID,碰撞概率约为 1/2^122,在实际应用中可以认为是唯一的。

Q: 什么时候应该使用 UUID 而不是自增 ID?

A: UUID 适用于分布式系统、需要在客户端生成 ID、多数据库同步等场景。自增 ID 适用于单数据库、需要紧凑存储、要求顺序性的场景。

Q: UUID 可以作为 URL 的一部分吗?

A: 可以,但需要进行 URL 编码。大括号格式的 UUID 在 URL 中需要编码,建议使用标准格式或无连字符格式。

Q: 如何在不同编程语言间共享 UUID?

A: 使用标准的字符串格式(如:550e8400-e29b-41d4-a716-446655440000)是最安全的跨语言方式。

UUID 是现代软件开发中不可或缺的工具,合理使用 UUID 可以大大简化分布式系统的设计和实现。

UUID生成器 | Tools Open - 一站式在线工具平台