UUID的定义
UUID(Universally Unique Identifier)是一种用于标识信息的128位数字,通常以32位十六进制字符串表示。其设计目标是确保在分布式系统中生成的标识符具有唯一性,几乎无需中央协调机构。
UUID的组成结构
UUID由五部分组成,格式为:8-4-4-4-12(共36个字符,包括连字符)。例如:550e8400-e29b-41d4-a716-446655440000
时间戳(32位)
前8位字符(550e8400)表示时间戳的低32位,通常与生成时间相关。时钟序列(16位)
接下来的4位字符(e29b)代表时钟序列,用于避免同一时间生成重复UUID。版本标识(4位)
第13位字符(4)表示UUID版本号(如1、4、5等),决定生成算法。变体标识(2位)
第17位字符(1)标识UUID变体(如RFC 4122标准变体)。节点标识(48位)
最后12位字符(a716-446655440000)通常为MAC地址或随机数,确保空间唯一性。
常见版本
- 版本1(时间戳+MAC):基于时间与MAC地址生成。
- 版本4(随机数):完全随机生成,常用且无需硬件信息。
- 版本5(SHA-1哈希):基于命名空间和名称的哈希生成。
应用场景
- 数据库主键替代自增ID。
- 分布式系统唯一标识(如消息ID、文件命名)。
- 避免冲突的临时资源标识。
代码示例(Python生成UUIDv4):
import uuid unique_id = uuid.uuid4() print(unique_id) # 输出类似:f47ac10b-58cc-4372-a567-0e02b2c3d479